# @igor.dvlpr/extendable-string

> 🦀 ExtendableString allows you to create strings on steroids that have custom transformations applied to them, unlike common, plain strings. 🪀

Latest version **2.0.0** (published 2024-07-29) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install @igor.dvlpr/extendable-string
pnpm add @igor.dvlpr/extendable-string
yarn add @igor.dvlpr/extendable-string
bun add @igor.dvlpr/extendable-string
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2024-07-29 |
| First published | 2023-05-30 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=20.0 |
| Dependencies | 0 |
| Unpacked size | 8.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Igor Dimitrijević |
| Maintainers | igor.dvlpr |
| Keywords | string, extend, extendable-string, utility, magic, transform, transformation, value, igorskyflyer, igor.dvlpr |

## Links

- npm: https://www.npmjs.com/package/@igor.dvlpr/extendable-string
- Repository: https://github.com/igorskyflyer/npm-extendable-string
- Issues: https://github.com/igorskyflyer/npm-extendable-string/issues
- Funding: https://ko-fi.com/igorskyflyer
- npm.io page: https://npm.io/package/@igor.dvlpr/extendable-string

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 2.0.0 (latest) — 2024-07-29
- 1.0.0 — 2023-05-30

## README

<h1 align="center">ExtendableString</h1>

<br>

<div align="center">
  🦀 ExtendableString allows you to create strings on steroids that have custom
  <br>
  transformations applied to them, unlike common, plain strings. 🪀
</div>

<br>
<br>

<div align="center">
  <blockquote>
    <br>
    <h4>💖 Support further development</h4>
    <span>I work hard for every project, including this one
    <br>
    and your support means a lot to me!
    <br>
    <br>
    Consider buying me a coffee. ☕
    <br>
    <strong>Thank you for supporting my efforts! 🙏😊</strong></span>
    <br>
    <br>
    <a href="https://ko-fi.com/igorskyflyer" target="_blank"><img src="https://raw.githubusercontent.com/igorskyflyer/igorskyflyer/main/assets/ko-fi.png" alt="Donate to igorskyflyer" width="150"></a>
    <br>
    <br>
    <a href="https://github.com/igorskyflyer"><em>@igorskyflyer</em></a>
    <br>
    <br>
    <br>
  </blockquote>
</div>

<br>
<br>

## 📃 Table of contents

- [Usage](#-usage)
- [API](#-api)
  - [constructor()](#constructorraw-transformfn)
  - [value](#value-string)
  - [toString()](#tostring-string)
- [Examples](#-examples)
- [Changelog](#-changelog)
- [License](#-license)
- [Related](#-related)
- [Author](#-author)

<br>
<br>

## 🕵🏼 Usage

Install it by executing:

```shell
npm i '@igor.dvlpr/extendable-string'
```

<br>

## 🤹🏼 API

<br>

> [!WARNING]
> Do **NOT** instantiate a new object from the `ExtendableString` class, extend it instead.
>

<br>

### `constructor(raw, transformFn)`

*Creates an ExtendableString instance.*  

<br>

`raw` - The string input to transform.  

`transformFn` - The transformation function to apply to the string.  

Will throw an error if the transformation function is not supplied.

---

### `value: string`

*Gets the transformed string or sets a new value that will be transformed automatically.*

---

### `toString(): string`

*Gets the transformed string value.*  

Returns the transformed string.

---

## ✨ Examples

`UpperCaseString.mts`
```ts
import { ExtendableString } from '@igor.dvlpr/extendable-string'

export class UpperCaseString extends ExtendableString {
  constructor(value: string) {
    super(value, (str) => str.toUpperCase())
  }
}
```

<br>

`example.mts`
```ts
import { UpperCaseString } from './UpperCaseString.mjs'

const test = new UpperCaseString('aaaa')
console.log(test.value) // Outputs 'AAAA'

const example = new UpperCaseString('aaaa')
example.value = 'hello'
console.log(test.value) // Outputs 'HELLO'
```

---

## 📝 Changelog

📑 The changelog is available here: [CHANGELOG.md](https://github.com/igorskyflyer/npm-extendable-string/blob/main/CHANGELOG.md).

---

## 🪪 License

Licensed under the MIT license which is available here, [MIT license](https://github.com/igorskyflyer/npm-extendable-string/blob/main/LICENSE).

---

## 🧬 Related

[@igor.dvlpr/keppo](https://www.npmjs.com/package/@igor.dvlpr/keppo)

> _🎡 Parse, manage, compare and output SemVer-compatible version numbers. 🛡_

<br>

[@igor.dvlpr/astro-escaped-component](https://www.npmjs.com/package/@igor.dvlpr/astro-escaped-component)

> _🏃🏻‍♂️‍➡️ An Astro component that holds only HTML-encoded content. 📜_

<br>

[@aria-toolkit/shared](https://www.npmjs.com/package/@aria-toolkit/shared)

> _👻 Shared resources between Aria modules. 🐦‍⬛_

<br>

[@igor.dvlpr/windev](https://www.npmjs.com/package/@igor.dvlpr/windev)

> _🍃 Provides ways of checking whether a path is a legacy Windows device. 💾_

<br>

[@igor.dvlpr/mapped-replacer](https://www.npmjs.com/package/@igor.dvlpr/mapped-replacer)

> _🗺 Zero-dependency Map and RegExp based string replacer with Unicode support. 🍁_

---

<br>

### 👨🏻‍💻 Author
Created by **Igor Dimitrijević** ([*@igorskyflyer*](https://github.com/igorskyflyer/)).

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