# @pagopa/react-native-nodelibs

> Node core modules for React Native

Latest version **0.1.0** (published 2023-11-20) · 0 weekly downloads

## Install

```sh
npm install @pagopa/react-native-nodelibs
pnpm add @pagopa/react-native-nodelibs
yarn add @pagopa/react-native-nodelibs
bun add @pagopa/react-native-nodelibs
```

## Health

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

Positive: no vulnerabilities; high maintenance score.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2023-11-20 |
| First published | 2023-11-20 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 33 |
| Unpacked size | 12.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Maintainers | pp-ps, pasqualedevita, gunzip, balanza, pagopa-bot |

## Links

- npm: https://www.npmjs.com/package/@pagopa/react-native-nodelibs
- Repository: https://github.com/pagopa/react-native-nodelibs
- Homepage: http://github.com/pagopa/react-native-nodelibs
- Issues: https://github.com/pagopa/react-native-nodelibs/issues
- npm.io page: https://npm.io/package/@pagopa/react-native-nodelibs

## Dependencies (33)

- [url](https://npm.io/package/url.md) ^0.11.0
- [util](https://npm.io/package/util.md) ^0.10.3
- [assert](https://npm.io/package/assert.md) ^1.4.1
- [buffer](https://npm.io/package/buffer.md) ^6.0.3
- [events](https://npm.io/package/events.md) ^1.0.0
- [pbkdf2](https://npm.io/package/pbkdf2.md) ^3.1.2
- [base-64](https://npm.io/package/base-64.md) ^0.1.0
- [process](https://npm.io/package/process.md) ^0.11.0
- [inherits](https://npm.io/package/inherits.md) ^2.0.4
- [punycode](https://npm.io/package/punycode.md) ^2.1.0
- [randomfill](https://npm.io/package/randomfill.md) ^1.0.4
- [create-ecdh](https://npm.io/package/create-ecdh.md) ^4.0.4
- [create-hash](https://npm.io/package/create-hash.md) ^1.2.0
- [create-hmac](https://npm.io/package/create-hmac.md) ^1.1.7
- [stream-http](https://npm.io/package/stream-http.md) ^2.3.1
- [os-browserify](https://npm.io/package/os-browserify.md) ^0.3.0
- [diffie-hellman](https://npm.io/package/diffie-hellman.md) ^5.0.3
- [domain-browser](https://npm.io/package/domain-browser.md) ^1.1.1
- [public-encrypt](https://npm.io/package/public-encrypt.md) ^4.0.3
- [string_decoder](https://npm.io/package/string_decoder.md) ^1.0.3
- [tty-browserify](https://npm.io/package/tty-browserify.md) 0.0.0
- [browserify-sign](https://npm.io/package/browserify-sign.md) ^4.2.2
- [browserify-zlib](https://npm.io/package/browserify-zlib.md) ^0.2.0
- [path-browserify](https://npm.io/package/path-browserify.md) 0.0.0
- [querystring-es3](https://npm.io/package/querystring-es3.md) ^0.2.0
- [react-native-fs](https://npm.io/package/react-native-fs.md) ^2.20.0
- [readable-stream](https://npm.io/package/readable-stream.md) ^2.2.9
- [https-browserify](https://npm.io/package/https-browserify.md) ^1.0.0
- [browserify-cipher](https://npm.io/package/browserify-cipher.md) ^1.0.1
- [timers-browserify](https://npm.io/package/timers-browserify.md) ^2.0.2
- [console-browserify](https://npm.io/package/console-browserify.md) ^1.1.0
- [constants-browserify](https://npm.io/package/constants-browserify.md) ^1.0.0
- [react-native-get-random-values](https://npm.io/package/react-native-get-random-values.md) ^1.9.0

## Recent versions

- 0.1.0 (latest) — 2023-11-20
- 0.0.3 — 2023-11-20
- 0.0.2 — 2023-11-20
- 0.0.1 — 2023-11-20

## README

# @pagopa/react-native-nodelibs

This package provides **React Native** compatible implementations of Node core modules like `stream`, `crypto` and `http` avoiding the use of [rn-nodeify](https://github.com/tradle/rn-nodeify/) which is now deprecated.

This is a fork of [node-libs-react-native](https://github.com/parshap/node-libs-react-native) which introduces some improvements and fixes compatible with new versions of node.

`crypto.getRandomValues` is based on [react-native-get-random-values](https://github.com/LinusU/react-native-get-random-values#readme) native library. So you need to install it to be able to use `crypto`

## Installation

```sh
yarn add @pagopa/react-native-nodelibs

# If you need to use `crypto`
yarn add react-native-get-random-values
```

## Usage

This package exports a mapping of absolute paths to each module implementation, keyed by module name. Modules without React Native compatible implementations are `null`.

These modules can be used with React Native Packager's `metro.config.js` or Webpack's `resolve.alias`.

### Usage with React Native Packager

Add a `metro.config.js` file in the root directory of your React Native project and set `resolver.extraNodeModules`:

```js
// metro.config.js
module.exports = {
  resolver: {
    extraNodeModules: require('@pagopa/react-native-nodelibs'),
  },
};
```

### Globals

Node has certain globals that modules may expect, such as `Buffer` or `process`. React Native does not provide these globals. The [`@pagopa/react-native-nodelibs/globals`][globals] module in this package will shim the global environment to add these globals. Just require (or import) this module in your app before anything else.

[globals]: ./globals.js

```js
require('@pagopa/react-native-nodelibs/globals');
// ...
require('./app.js');
```

## Modules

The following are the module implementations provided by this package.

| Module | RN-compatible |
|:--------:|:----------------------:|
| assert | [defunctzombie/commonjs-assert](https://github.com/defunctzombie/commonjs-assert) |
| buffer | [feross/buffer](https://github.com/feross/buffer) |
| child_process | --- |
| cluster | --- |
| console | [Raynos/console-browserify](https://github.com/Raynos/console-browserify) |
| constants | [juliangruber/constants-browserify](https://github.com/juliangruber/constants-browserify) |
| crypto | [See the next paragraph](#crypto-modules) |
| dgram | --- |
| dns | --- |
| domain | [bevry/domain-browser](https://github.com/bevry/domain-browser) |
| events | [Gozala/events](https://github.com/Gozala/events) |
| fs | [itinance/react-native-fs](https://github.com/itinance/react-native-fs) |
| http | [jhiesey/stream-http](https://github.com/jhiesey/stream-http) |
| https | [substack/https-browserify](https://github.com/substack/https-browserify) |
| module | --- |
| net | --- |
| os | [CoderPuppy/os-browserify](https://github.com/CoderPuppy/os-browserify) |
| path | [substack/path-browserify](https://github.com/substack/path-browserify) |
| process | [shtylman/node-process](https://github.com/shtylman/node-process) |
| punycode | [bestiejs/punycode.js](https://github.com/bestiejs/punycode.js) |
| querystring | [mike-spainhower/querystring](https://github.com/mike-spainhower/querystring) |
| readline | --- |
| repl | --- |
| stream | [nodejs/readable-stream](https://github.com/nodejs/readable-stream) |
| string_decoder | [rvagg/string_decoder](https://github.com/rvagg/string_decoder) |
| sys | [defunctzombie/node-util](https://github.com/defunctzombie/node-util) |
| timers | [jryans/timers-browserify](https://github.com/jryans/timers-browserify) |
| tls | --- |
| tty | [substack/tty-browserify](https://github.com/substack/tty-browserify) |
| url | [defunctzombie/node-url](https://github.com/defunctzombie/node-url) |
| util | [defunctzombie/node-util](https://github.com/defunctzombie/node-util) |
| vm | --- |
| zlib | [devongovett/browserify-zlib](https://github.com/devongovett/browserify-zlib) |

### Crypto Modules

The crypto modules have been replaced by their JavaScript-based versions.
Below are the various modules implemented on `crypto`

| getRandomValues | [react-native-get-random-values](https://github.com/LinusU/react-native-get-random-values) |
| createHash | [create-hash](https://github.com/browserify/createHash) |
| createHmac | [create-hmac](https://github.com/browserify/createHmac) |
| getHashes | [browserify-sign/algos](https://github.com/browserify/browserify-sign) |
| pbkdf2 | [pbkdf2](https://github.com/browserify/pbkdf2) |
| pbkdf2Sync | [pbkdf2](https://github.com/browserify/pbkdf2) |
| createCipher,createCipheriv,createDecipher,createDecipheriv,getCiphers,listCiphers | [browserify-cipher](https://github.com/browserify/browserify-cipher) |
| createDiffieHellmanGroup,getDiffieHellman,createDiffieHellman | [diffie-hellman](https://www.npmjs.com/package/diffie-hellman) |
| createSign,createVerify | [browserify-sign](https://github.com/browserify/browserify-sign) |
| createECDH | [create-ecdh](https://github.com/browserify/createECDH) |
| publicEncrypt,privateEncrypt,publicDecrypt | [public-encrypt](https://github.com/browserify/publicEncrypt) |
| randomFill,randomFillSync | [randomfill](https://github.com/browserify/randomfill) |

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