@empathyco/x-types
TypeScript icon, indicating that this package has built-in type declarations

10.1.0-alpha.2 • Public • Published

x-types

TypeScript model types, guards, and jest schemas to use across the X project.

How to install

npm install @empathyco/x-types --save

How to use

The package export several model types that can be used to safely create objects that match the expectations of X packages.

import { RelatedTag } from '@empathyco/x-types';

const relatedTag: RelatedTag = {
  query: 'lego',
  tag: 'city',
  selected: false,
  previous: 'lego'
};

Additionally it also exposes some type guards to check between different types.

import { Filter, isHierarchicalFilter } from '@empathyco/x-types';

const filter: Filter = {
  modelName: 'HierarchicalFilter',
  id: 'color:red',
  facetId: 'color',
  label: 'red',
  selected: false,
  children: []
};
// You can't access filter.children before the `if` because you have a `Filter`, not a `HierarchicalFilter`.

if (isHierarchicalFilter(filter)) {
  // But after using the `isHierarchicalFilter` guard, you can acces it.
  console.log('Children:', filter.children);
}

Finally, there are some jest schemas helpers that you could use to validate your objects.

import { HierarchicalFilterSchema } from '@empathyco/x-types/schemas';
import { Filter, isHierarchicalFilter } from '@empathyco/x-types';

it('is a hierarchical filter', () => {
  const filter: Filter = {
    modelName: 'HierarchicalFilter',
    id: 'color:red',
    facetId: 'color',
    label: 'red',
    selected: false,
    children: []
  };

  expect(filter).toEqual(HierarchicalFilterSchema);
});

How to update the version

You can check if a new version has been published running npm outdated:

npm outdated @empathyco/x-types

And update it using npm update:

npm update --save @empathyco/x-types

Package Sidebar

Install

npm i @empathyco/x-types

Weekly Downloads

312

Version

10.1.0-alpha.2

License

Apache-2.0

Unpacked Size

351 kB

Total Files

35

Last publish

Collaborators

  • roberd
  • guillermotti
  • javieri-empathy
  • ivantajes
  • empathy-support