# @mstuessypp/typescript

> A TypeScript library.

Latest version **1.3.0-debug-5** (published 2020-02-19) · MIT license · 0 weekly downloads

## Install

```sh
npm install @mstuessypp/typescript
pnpm add @mstuessypp/typescript
yarn add @mstuessypp/typescript
bun add @mstuessypp/typescript
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.3.0-debug-5 |
| Published | 2020-02-19 |
| First published | 2020-02-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 65.1 KB |
| Known vulnerabilities | 0 (+26 in 3 direct dependencies) |
| Install scripts | no |
| Author | Pod Point Software |
| Maintainers | mstuessypp |
| Keywords | TypeScript |

## Links

- npm: https://www.npmjs.com/package/@mstuessypp/typescript
- Repository: https://github.com/Pod-Point/typescript
- Homepage: https://github.com/Pod-Point/typescript#readme
- Issues: https://github.com/Pod-Point/typescript/issues
- npm.io page: https://npm.io/package/@mstuessypp/typescript

## Dependencies (4)

- [axios](https://npm.io/package/axios.md) ^0.18.0
- [redis](https://npm.io/package/redis.md) ^2.8.0
- [lodash](https://npm.io/package/lodash.md) ^4.17.11
- [aws-sdk](https://npm.io/package/aws-sdk.md) ^2.457.0

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 1.3.0-debug-5 (latest) — 2020-02-19
- 1.3.0-debug-3 — 2020-02-19

## README

# Typescript

[![Build Status](https://travis-ci.com/Pod-Point/typescript.svg?branch=master)](https://travis-ci.com/Pod-Point/typescript)
[![codecov](https://codecov.io/gh/Pod-Point/typescript/branch/master/graph/badge.svg)](https://codecov.io/gh/Pod-Point/typescript)

A library of re-usable TypeScript components.

## Installation

To install this, simply run:
```bash
npm install @pod-point/typescript
```

## Usage

This package contains a HTTP client, an abstract HTTP repository & service class, an abstract model class and model factories.

### Client

Create a client instance to make http requests.

```js
// path/to/client
import { Client } from '@pod-point/typescript';

export default new Client(...args);
```

### Repositories & Services

Create and use a repository to wrap a RESTful API endpoint and handle the json as a model rather than a plain old JavaScript object.

```js
// path/to/ExampleRepository
import { Repository } from '@pod-point/typescript';
import ExampleModel from 'path/to/ExampleModel';

export default class ExampleRepository extends Repository<ExampleModel> {
    //
```

```js
// path/to/anywhere
import ExampleRepository from 'path/to/ExampleRepository';
import client from 'path/to/client';

const exampleRepository = new ExampleRepository(client);
```

### Models & Factories

Create a and use model factories to generate: 
- fake model instances
- fake objects representing a models attributes
- fake objects representing a models payload

```js
// path/to/ExampleModelFactory
import { Factory } from '@pod-point/typescript';
import ExampleModel from 'path/to/ExampleModel';
import ExampleModelAttributes from 'path/to/ExampleModelAttributes';

export default class ExampleModelFactory extends Factory<ExampleModel, ExampleModelAttributes> {
    //
```

```js
import { ExampleModelFactory } from 'path/to/ExampleModelFactory';

const exampleModelFactory = new ExampleModelFactory();
const fakeExampleModelAttributes = exampleModelFactory.attributes();
const fakeExampleModel = exampleModelFactory.model();
```

Overrides can be passed into all of these methods, and there is also a method available to generate any of these objects in a pre-defined "state".

This is styled on the [Laravel factories](https://laravel.com/docs/5.6/database-testing#factory-states).

Example:
```js
import { ExampleModelFactory } from 'path/to/ExampleModelFactory';

const exampleModelFactory = new ExampleModelFactory();
const exampleModel = exampleModelFactory.states(['deleted']).model();
```

In the example above we have applied the "deleted" state before generating the model, this would basically apply some pre-defined overrides to the fake attributes.

## Development

### Testing

This package uses jest. To run the test suites for this project, run the following command:

```bash
npm run test
```

### Releases

This package is distributed via NPM and published automatically by Travis when creating a tagged commit. This can be done in one of 2 ways:

#### 1. Pre-merge via the CLI

**Before** merging your PR following code review & QA, run the following commands to update the package version and create a new release/tag.
```
npm version <major|minor|patch|prerelease>
git push && push --tags
```

If you forget to do this before merging, this is not a problem, just create a new branch from master and run these same commands, remembering to open and merge a PR for this branch so that the `package.json` file is updated, alternatively, see option 2.

#### 2. Post-merge via code & GitHub

**After** merging your code changes, create a new branch/PR from master and update the package version in `package.json` to whatever you wish the next release to be.

**Before** merging this PR, create a release via GitHub with a tag version to match this package version number, this will trigger the tagged commit and in turn the automatic deployment to NPM.

---
_Source: https://npm.io/package/@mstuessypp/typescript · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
