430 lines
9.5 KiB
Markdown
430 lines
9.5 KiB
Markdown
[@resultium/utils - v1.0.0](README.md) / Exports
|
|
|
|
# @resultium/utils - v1.0.0
|
|
|
|
## Table of contents
|
|
|
|
### Functions
|
|
|
|
- [capitalizeFirstChar](modules.md#capitalizefirstchar)
|
|
- [classNames](modules.md#classnames)
|
|
- [conditionalJoin](modules.md#conditionaljoin)
|
|
- [extractTextFromHTML](modules.md#extracttextfromhtml)
|
|
- [isDeepWeakEqual](modules.md#isdeepweakequal)
|
|
- [randomInRange](modules.md#randominrange)
|
|
- [removeFromArrayByKeyValue](modules.md#removefromarraybykeyvalue)
|
|
- [removeObjectProperty](modules.md#removeobjectproperty)
|
|
- [replaceFromArrayByKeyValue](modules.md#replacefromarraybykeyvalue)
|
|
- [splitIntoChunks](modules.md#splitintochunks)
|
|
|
|
## Functions
|
|
|
|
### capitalizeFirstChar
|
|
|
|
▸ **capitalizeFirstChar**(`string`): `string`
|
|
|
|
Capitalizes first character of the given string
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `string` | `string` | string to modify |
|
|
|
|
#### Returns
|
|
|
|
`string`
|
|
|
|
new string
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
// Prints "Lorem ipsum"
|
|
console.log(capitalizeFirstChar("lorem ipsum"))
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/capitalizeFirstChar.ts:32](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/capitalizeFirstChar.ts#L32)
|
|
|
|
___
|
|
|
|
### classNames
|
|
|
|
▸ **classNames**(`...classes`): `string`
|
|
|
|
Conditionally joins given class strings
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `...classes` | `string`[] | class strings to join |
|
|
|
|
#### Returns
|
|
|
|
`string`
|
|
|
|
new string
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
let isVisible = false
|
|
|
|
// prints "bg-blue-300 hidden"
|
|
console.log(classNames("bg-blue-300", isVisible ? "block" : "hidden"))
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/classNames.ts:34](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/classNames.ts#L34)
|
|
|
|
___
|
|
|
|
### conditionalJoin
|
|
|
|
▸ **conditionalJoin**(`array`, `joinChar`): `string`
|
|
|
|
Conditionally joins given strings
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `array` | `string`[] | strings to join |
|
|
| `joinChar` | `string` | character used to join strings |
|
|
|
|
#### Returns
|
|
|
|
`string`
|
|
|
|
new string
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
let isAdmin = true
|
|
|
|
// prints "Hello, Administrator!"
|
|
console.log(conditionalJoin(["Hello,", isAdmin ? "Administrator!" : "User!"], " "))
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/conditionalJoin.ts:35](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/conditionalJoin.ts#L35)
|
|
|
|
___
|
|
|
|
### extractTextFromHTML
|
|
|
|
▸ **extractTextFromHTML**(`html`, `domParser?`): ``null`` \| `string`
|
|
|
|
Extracts text content from an HTML string
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `html` | `string` | HTML to extract text from |
|
|
| `domParser` | `DOMParser` | DOMParser to use |
|
|
|
|
#### Returns
|
|
|
|
``null`` \| `string`
|
|
|
|
**`Remarks`**
|
|
|
|
By default this function uses `new window.DOMParser()` to parse HTML, however
|
|
on the server you might need to use alternative DOM Parser such as JSDOM,
|
|
puppeteer or cheerio as `window` object is not defined in NodeJS
|
|
|
|
**`See`**
|
|
|
|
[Why doesn't Node.js have a native DOM?](https://stackoverflow.com/q/32723111/14544732)
|
|
for more information on why this function is made the way it is
|
|
|
|
**`Example`**
|
|
|
|
Here's how you would use this function in browser
|
|
```ts
|
|
let HTML = '<p><a>Lorem ipsum</a> dolor sit</p>'
|
|
|
|
// prints "Lorem ipsum dolor sit"
|
|
console.log(extractTextFromHTML(HTML))
|
|
```
|
|
|
|
**`Example`**
|
|
|
|
Here's how you would use this function on server
|
|
```ts
|
|
import { JSDOM } from "jsdom";
|
|
const domParser = new new JSDOM().window.DOMParser();
|
|
|
|
let HTML = '<p><a>Lorem ipsum</a> dolor sit</p>'
|
|
|
|
// prints "Lorem ipsum dolor sit"
|
|
console.log(extractTextFromHTML(HTML, domParser))
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/extractTextFromHTML.ts:56](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/extractTextFromHTML.ts#L56)
|
|
|
|
___
|
|
|
|
### isDeepWeakEqual
|
|
|
|
▸ **isDeepWeakEqual**(`obj1`, `obj2`): `boolean`
|
|
|
|
Weakly compares two objects
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `obj1` | `object` | first object for comparison |
|
|
| `obj2` | `object` | second object for comparison |
|
|
|
|
#### Returns
|
|
|
|
`boolean`
|
|
|
|
true if equal
|
|
|
|
**`Remarks`**
|
|
|
|
uses JSON.stringify()
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
// prints false
|
|
console.log(isDeepWeakEqual({ a: 1 }, ["lorem"]))
|
|
|
|
// prints true
|
|
console.log(isDeepWeakEqual({ a: 1 }, { a: 1 }))
|
|
|
|
// prints true
|
|
// snippet displaying the weak equality of this function
|
|
console.log(
|
|
isDeepWeakEqual(
|
|
{ date: "2024-03-12T18:19:50.548Z" },
|
|
{ date: new Date(1710267590548) },
|
|
),
|
|
);
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/isDeepWeakEqual.ts:47](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/isDeepWeakEqual.ts#L47)
|
|
|
|
___
|
|
|
|
### randomInRange
|
|
|
|
▸ **randomInRange**(`min`, `max`): `number`
|
|
|
|
Returns a pseudo-random number in given range
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `min` | `number` | minimum acceptable value |
|
|
| `max` | `number` | maximum acceptable value |
|
|
|
|
#### Returns
|
|
|
|
`number`
|
|
|
|
number [min; max]
|
|
|
|
**`Remarks`**
|
|
|
|
Uses Math.random(), which is not cryptographically secure
|
|
Returns only integers
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
// prints 66
|
|
console.log(randomInRange(1, 100))
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/randomInRange.ts:37](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/randomInRange.ts#L37)
|
|
|
|
___
|
|
|
|
### removeFromArrayByKeyValue
|
|
|
|
▸ **removeFromArrayByKeyValue**\<`T`\>(`array`, `keyValue`): `T`[]
|
|
|
|
Removes an object from an array by key value object.
|
|
|
|
#### Type parameters
|
|
|
|
| Name |
|
|
| :------ |
|
|
| `T` |
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `array` | `T`[] | array which shall be manipulated with |
|
|
| `keyValue` | `Partial`\<\{ [K in string \| number \| symbol]: T[K] }\> | key-value object which defines which object shall be removed from the array |
|
|
|
|
#### Returns
|
|
|
|
`T`[]
|
|
|
|
modified array
|
|
|
|
**`Remarks`**
|
|
|
|
This method doesn't support deep comparements.
|
|
Vulnerable to generic object injection sink
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
// prints [{ a: "1", b: "0" }, { a: "2", b: "0" }]
|
|
console.log(removeFromArrayByKeyValue([{ a: "1", b: "0" }, { a: "2", b: "0" }, { a: "3", b: "0" }], { a: "3" }))
|
|
|
|
// prints []
|
|
console.log(removeFromArrayByKeyValue([{ a: "1", b: "0" }, { a: "2", b: "0" }, { a: "3", b: "0" }], { b: "0" }))
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/removeFromArrayByKeyValue.ts:40](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/removeFromArrayByKeyValue.ts#L40)
|
|
|
|
___
|
|
|
|
### removeObjectProperty
|
|
|
|
▸ **removeObjectProperty**\<`T`, `K`\>(`object`, `key`): `Omit`\<`T`, `K`\>
|
|
|
|
Removes an object property by provided key
|
|
|
|
#### Type parameters
|
|
|
|
| Name | Type |
|
|
| :------ | :------ |
|
|
| `T` | `T` |
|
|
| `K` | extends `string` \| `number` \| `symbol` |
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `object` | `T` | object which shall be manipulated |
|
|
| `key` | `K` | key which should be used to remove a property from object |
|
|
|
|
#### Returns
|
|
|
|
`Omit`\<`T`, `K`\>
|
|
|
|
new object
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
// print { a: "1", b: "2" }
|
|
console.log(removeObjectProperty({ a: "1", b: "2", c: "3" }, "c"))
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/removeObjectProperty.ts:33](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/removeObjectProperty.ts#L33)
|
|
|
|
___
|
|
|
|
### replaceFromArrayByKeyValue
|
|
|
|
▸ **replaceFromArrayByKeyValue**\<`T`\>(`array`, `keyValue`, `newObject`): `T`[]
|
|
|
|
Replaces an object from an array with key value object search
|
|
|
|
#### Type parameters
|
|
|
|
| Name |
|
|
| :------ |
|
|
| `T` |
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `array` | `T`[] | array which shall be manipulated with |
|
|
| `keyValue` | `Partial`\<\{ [K in string \| number \| symbol]: T[K] }\> | key-value object which defines which object shall be removed from the array |
|
|
| `newObject` | `Partial`\<\{ [K in string \| number \| symbol]: T[K] }\> | object or values to replace within the searched object |
|
|
|
|
#### Returns
|
|
|
|
`T`[]
|
|
|
|
modified array
|
|
|
|
**`Remarks`**
|
|
|
|
This method doesn't support deep comparements.
|
|
Vulnerable to generic object injection sink
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
// prints [{ a: "1", b: "0" }, { a: "2", b: "0" }, { a: "3", b: "lorem" }]
|
|
console.log(replaceFromArrayByKeyValue([{ a: "1", b: "0" }, { a: "2", b: "0" }, { a: "3", b: "0" }], { a: "3" }, { b: "lorem" }))
|
|
|
|
// prints [{ a: "lorem", b: "0" }, { a: "2", b: "0" }, { a: "3", b: "0" }]
|
|
// replaces only the first occurance
|
|
console.log(replaceFromArrayByKeyValue([{ a: "1", b: "0" }, { a: "2", b: "0" }, { a: "3", b: "0" }], { b: "0" }, { a: "lorem" }))
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/replaceFromArrayByKeyValue.ts:42](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/replaceFromArrayByKeyValue.ts#L42)
|
|
|
|
___
|
|
|
|
### splitIntoChunks
|
|
|
|
▸ **splitIntoChunks**\<`T`\>(`array`, `chunkSize`): `T`[][]
|
|
|
|
Splits an array into chunks
|
|
|
|
#### Type parameters
|
|
|
|
| Name |
|
|
| :------ |
|
|
| `T` |
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :------ | :------ | :------ |
|
|
| `array` | `T`[] | array which shall be split into chunks |
|
|
| `chunkSize` | `number` | size of a single chunk |
|
|
|
|
#### Returns
|
|
|
|
`T`[][]
|
|
|
|
array of chunks
|
|
|
|
**`Example`**
|
|
|
|
```ts
|
|
// prints [["a", "b", "c"], ["d", "e", "f"]]
|
|
console.log(splitIntoChunks(["a", "b", "c", "d", "e", "f"], 3));
|
|
```
|
|
|
|
#### Defined in
|
|
|
|
[functions/splitIntoChunks.ts:33](https://git.resultium.net/public/utils/src/commit/9f9ac3eebeeaa1c763660ee218d596139a2c607d/src/functions/splitIntoChunks.ts#L33)
|