Skip to content

pagopa/react-native-nodelibs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

Crypto Modules

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

Crypto module RN-compatible
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