open-index/open-npm huggingface dataset:
npm package: @perttu/app-store-scraper
Description: Modern TypeScript library to scrape application data from the iTunes/Mac App Store
Author: Perttu Lähteenlahti
Latest version: 2.0.0

# @perttu/app-store-scraper

Modern TypeScript library to scrape application data from the iTunes/Mac App Store.

This is a complete TypeScript rewrite of [facundoolano/app-store-scraper](https://github.com/facundoolano/app-store-scraper) with full type safety and modern dependencies.

## Features

- 🎯 **Full TypeScript support** with comprehensive type definitions
- 🔄 **Modern dependencies** (no deprecated packages)
- 📦 **Dual ESM/CJS support** for maximum compatibility
- 🌍 **Multi-region support** with 140+ country codes
- 🎨 **Tree-shakeable** exports for optimal bundle size

> **Want rate limiting or memoization?** See this blog post: [Throttling and memoizing App Store scraper calls](https://perttu.dev/articles/throttling-and-memoing-app-store-scraping)

## Installation

```bash
npm install @perttu/app-store-scraper
```

## Usage

```typescript
import { app, search, list, reviews, collection, category } from '@perttu/app-store-scraper';

// Get app details
const appData = await app({ id: 553834731 });

// Search for apps
const results = await search({ term: 'minecraft', num: 10 });

// Get top free games
const games = await list({
  collection: collection.TOP_FREE_IOS,
  category: category.GAMES,
  num: 50,
});

// Get reviews
const appReviews = await reviews({ id: 553834731, page: 1 });
```

**📖 See [examples/all-methods.ts](examples/all-methods.ts) for comprehensive examples of all 10 API methods.**

## API

### Methods

- `app()` - Get detailed app information
- `list()` - Get curated app lists from collections
- `search()` - Search for apps by keyword
- `developer()` - Get all apps from a developer
- `reviews()` - Get user reviews for an app
- `ratings()` - Get rating distribution histogram
- `similar()` - Get similar/related apps
- `suggest()` - Get search suggestions
- `privacy()` - Get privacy policy details
- `versionHistory()` - Get version release history

### Constants

- `collection` - App Store collections (TOP_FREE_IOS, etc.)
- `category` - App categories (GAMES, BUSINESS, etc.)
- `sort` - Sort options for reviews (RECENT, HELPFUL)
- `device` - Device types (IPAD, MAC, ALL)

## Development

```bash
# Install dependencies
npm install

# Build
npm run build

# Run example (tests all methods)
npm run example

# Type check
npm run typecheck

# Lint
npm run lint

# Format code
npm run format
```

## License

MIT
npm package: @pertype/decimal.js
Description: pertype support for decimal.js
Author: Zulfikar Raditya Hernanta
Latest version: 0.6.0

# @pertype/decimal.js

pertype - **_[/type]_** - add-on for [decimal.js](https://www.npmjs.com/package/decimal.js)

**`pertype` is still in alpha. Expect bugs and api changes!**

## Installation

```
npm install @pertype/decimal.js       # npm
yarn add @pertype/decimal.js          # yarn
bun add @pertype/decimal.js           # bun
pnpm add @pertype/decimal.js          # pnpm
```

## Basic Usage

```ts
import { decimal } from '@pertype/decimal.js'

// create decimal schema
const schema = decimal()

// type guard
if (schema.is(value)) {
  // ... value is inferred as `Decimal`
}

// decode value (coercion) to `Decimal`
schema.decode(value)

// encode value to Json compatible type
schema.encode(value)
```

## Schema

pertype come with built-in schema you can immediately use

| Name    | Typescript | Factory     |
| ------- | ---------- | ----------- |
| decimal | `Decimal`  | `decimal()` |
npm package: @perugi/binary-search-tree
Description: A practice implementation of a Binary Search Tree.
Author: Dominik Perusko
Latest version: 1.0.0

# Binary Search Tree

A practice implementation of a Binary Search Tree in JavaScript as an ES6 Class, based on the specifications at: https://www.theodinproject.com/lessons/javascript-binary-search-trees.

## Usage

```js
const bst = new BinarySearchTree();
bst.buildTree([1, 7, 4, 24, 8, 7]);
console.log(bst.inOrder()); // [ 1, 4, 7, 8, 24]
```

## Methods

The following public class methods are implemented:

- `buildTree(array)` takes an array of data (e.g., `[1, 7, 4, 24, 8, 7]`) and turns it into a balanced binary tree of Node objects.
- `prettyPrint(node)` prints the tree, with the rootat the specified nod, in the console. If no node is passed, it prints the complete tree.
- `insert(value)` inserts the given value into a proper position in the tree (warning, the tree can become unbalanced as a result).
- `delete(value)` delete the given value from the tree (warning, the tree can become unbalanced as a result).
- `find(value)` return the node with the given value.
- `levelOrder(callback)` traverses the tree in breadth-first level order and provides each node as an argument to the callback. If no callback is given, the method return an array of values in level order.
- `inOrder(callback)` traverses the tree in depth-first in-order and provides each node as an argument to the callback. If no callback is given, the method return an array of values in in-order.
- `preOrder(callback)` traverses the tree in depth-first pre-order and provides each node as an argument to the callback. If no callback is given, the method return an array of values in pre-order.
- `postOrder(callback)` traverses the tree in depth-first post-order and provides each node as an argument to the callback. If no callback is given, the method return an array of values in post-order.
- `height(node)` returns the given node's height, defined as the number of edges in the longest path from a given node to a leaf node.
- `depth(node)` return the given node's depth, defined as the number of edges in the path from a given node to the tree's root node.
- `isBalanced()` returns true if the tree is balanced.
- `rebalance()` rebalances an unbalanced tree.
npm package: @perugi/css-reset
Description: CSS reset as a npm package, based on https://mattbrictson.com/blog/css-normalize-and-reset
Author: Dominik Perusko
Latest version: 1.0.6

# css-reset

CSS reset as a npm package, based on <https://mattbrictson.com/blog/css-normalize-and-reset>

## Usage

Install:

```bash
npm install @perugi/css-reset
```

Use:

```css
@import '@perugi/css-reset/reset.css';
```
npm package: @perugi/eslint-config
Description: My ESLint configuration, to be used together with the Airbnb configuration
Author: Dominik Perusko
Latest version: 1.0.16

# prettier-config

My ESLint configuration, to be used together with the Airbnb configuration

## Usage

Install:

```
$ npm install --save-dev @perugi/eslint-config
```

Edit .eslintrc.json:

```
{
    ...
    "extends": [
        "airbnb-base",
        "@perugi/eslint-config",
        ...
    ]
}
```
npm package: @perugi/events
Description: A simple pub/sub event service.
Author: Dominik Perusko
Latest version: 1.0.1

# Events

A simple pub/sub event service.

## Usage

```js
events = Events();
const cb1 = (data) => console.log(`event1 called with data: ${data}`);
events.on('event1', cb1);
events.emit('event1', 'data1'); // event1 called with data: data1
events.off('event1', cb1)
events.emit('event1', 'data2'); 
```
npm package: @perugi/hash-map
Description: A practice implementation of a Hash Map in JavaScript.
Author: Dominik Perusko
Latest version: 1.0.1

# Hash Map

A practice implementation of a Hash Map in JavaScript as an ES6 Class, based on the specifications at: https://www.theodinproject.com/lessons/javascript-hashmap.

## Usage

```js
const map = new HashMap();
map.set('first', 1);
map.set('second', ['a', 42]);
console.log(map.get('first')); // 1
```

## Methods

The following public class methods are implemented:

- `set(key, value)` assigns a value to the specified key. If a key already exists, then the old value is overwritten.
- `get(key)`returns the value that is assigned to the key. If a key is not found, return null.
- `has(key)`returns true or false based on whether or not the key is in the hash map.
- `remove(key)` removes the entry with that key and returns true if the key is in the hash map. If the key isn’t in the hash map, it returns false.
- `length()` returns the number of stored keys in the hash map.
- `clear()` removes all entries in the hash map.
- `keys()` returns an array containing all the keys inside the hash map.
- `values()` returns an array containing all the values.
- `entries()` returns an array that contains each key, value pair. Example: [[firstKey, firstValue], [secondKey, secondValue]]
npm package: @perugi/linked-list
Description: A practice implementation of a Linked List in JavaScript.
Author: Dominik Perusko
Latest version: 1.0.10

# Linked List

A practice implementation of a Linked List in JavaScript as an ES6 Class, based on the specifications at: https://www.theodinproject.com/lessons/javascript-linked-lists.

## Usage

```js
const list = new LinkedList();
list.append(1);
list.append(2);
console.log(list.toString()); // ( 1 ) -> ( 2 ) -> null;
```

## Methods

The following class methods are implemented:

- `append(value)` adds a new node containing value to the end of the list.
- `prepend(value)` adds a new node containing value to the start of the list.
- `size()` returns the total number of nodes in the list.
- `head()` returns the first node in the list.
- `tail()` returns the last node in the list.
- `at(index)` returns the node at the given index.
- `pop()` removes the last element from the list.
- `contains(value)` returns true if the passed in value is in the list and otherwise returns false.
- `find(value)` returns the index of the node containing value, or null if not found.
- `toString()` returns the LinkedList objects as strings. The format is: ( value ) -> ( value ) -> ( value ) -> null
- `insertAt(value, index)` inserts a new node with the provided value at the given index.
- `removeAt(index)` removes the node at the given index.
- `search(searchFunction)` returns the first item which satisfies the passed searchFunction
npm package: @perugi/prettier-config
Description: My Prettier configuration.
Author: Dominik Perusko
Latest version: 1.0.2

# prettier-config
My Prettier configuration.

## Usage
Install:
```
$ npm install --save-dev @perugi/prettier-config
```

Edit package.json:
```
{
  // ...
  "prettier": "@perugi/prettier-config"
}
```
npm package: @perugi/web-utilities
Description: A collection of small utility functions for use in my web projects.
Author: Dominik Perusko
Latest version: 1.0.2

# web-utilities

A collection of small utility functions for use in my web projects.

## Usage

Install:

```
$ npm install @perugi/web-utilities
```

Example usage:

```
Utilities.renderGHLogo();
```