@pagopa/react-native-nodelibs v0.1.0
@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-valuesUsage
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
| 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 |