0.1.0 • Published 5 months ago

@pagopa/react-native-nodelibs v0.1.0

Weekly downloads
-
License
-
Repository
github
Last release
5 months ago

@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 which is now deprecated.

This is a fork of 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 native library. So you need to install it to be able to use crypto

Installation

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:

// 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 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.

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

Modules

The following are the module implementations provided by this package.

ModuleRN-compatible
assertdefunctzombie/commonjs-assert
bufferfeross/buffer
child_process---
cluster---
consoleRaynos/console-browserify
constantsjuliangruber/constants-browserify
cryptoSee the next paragraph
dgram---
dns---
domainbevry/domain-browser
eventsGozala/events
fsitinance/react-native-fs
httpjhiesey/stream-http
httpssubstack/https-browserify
module---
net---
osCoderPuppy/os-browserify
pathsubstack/path-browserify
processshtylman/node-process
punycodebestiejs/punycode.js
querystringmike-spainhower/querystring
readline---
repl---
streamnodejs/readable-stream
string_decoderrvagg/string_decoder
sysdefunctzombie/node-util
timersjryans/timers-browserify
tls---
ttysubstack/tty-browserify
urldefunctzombie/node-url
utildefunctzombie/node-util
vm---
zlibdevongovett/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 | | createHash | create-hash | | createHmac | create-hmac | | getHashes | browserify-sign/algos | | pbkdf2 | pbkdf2 | | pbkdf2Sync | pbkdf2 | | createCipher,createCipheriv,createDecipher,createDecipheriv,getCiphers,listCiphers | browserify-cipher | | createDiffieHellmanGroup,getDiffieHellman,createDiffieHellman | diffie-hellman | | createSign,createVerify | browserify-sign | | createECDH | create-ecdh | | publicEncrypt,privateEncrypt,publicDecrypt | public-encrypt | | randomFill,randomFillSync | randomfill |