{"_id":"@nebulr-group/react-native-nblocks","_rev":"34-8ee27af395b3b0e9d9eb70632836f903","name":"@nebulr-group/react-native-nblocks","dist-tags":{"latest":"0.0.2-beta.6","oscar":"0.1.0-oscar.1","beta":"0.1.0-beta.11"},"versions":{"0.0.1-beta.1":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.1","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.1","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"6ae8456ada3aa40432b521331fde9313698c4e0a","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.1.tgz","fileCount":5,"integrity":"sha512-cLc7PHxuFkyFw6IXWJ1KJXblMJb+OxyxgTfHlQyMsy6QfBnZfuAgN/Pzyj5BkYXdwsRbov7kO0LBdjbKeOM30Q==","signatures":[{"sig":"MEQCIFACOy4cP+rS9TRrrJaqm5bI/3d2oycBI71jAuwGDL0+AiAqYjVF+0MQS9mwvFPDQJFrEclCRdwrdLHihR1mpJUwMw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixaalACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrGWA//R7pBoIW4H4Vjw8b7Ta2+A99zj4wz/PoJkCTAxH/gnf/uCZNM\r\nBxOQxUz43642MBgx3Y7ovHnaQ4+ByvUI/fJIqDrynQEq5aNuj5//HcKCvh+d\r\n3qCf5DB4Wnrlz0tWTE3+ykX5OJWyCIzDPCNq7pUia0mRvHGR24peQQZZuNl5\r\ncngiNFY1P+HWHA6ZaWeRd3nchQEkWu9fScX53BkTHEvY1JR5Darc4jMXzOHV\r\na7h6NV0i0d0bg4I/kfseB0QJnDczoxacBYNNDTZhZH1aJU3e2lrFrnbqMT/n\r\nBuWZUZhWgOCNMzpH5VHMUaKRanuCfxEErXcmf50hgllr3G7wWTqZoB73sI4q\r\nFxLs7M6j9xvIDE5fsRc3Pkc5WSOI7j5iP3IJaVe7cffOsXKipoTrB5ZGZn8t\r\ndo4fHbH3uJOa9hlr1vzB0C9GYSFK2dpU0xPLsc7RY6cNekwXOW7HK6kKbzAF\r\nhtd6+UsKA+D+rgb3WXpF7iYDdoFhrb4fwxgJu1XihfK/CXhx53CQCBSA9s5i\r\nTHfajMEnVxYO3RCowxjwMTAhhtd4y99rakwKSYUqsEuobA+LDUXEq8O1/CLh\r\nos9aKjo3BVTa4Dd5DPv7GNC9CL2V/Ci5mYtYD34C5pl2uuv4OAqQVwH/tlKn\r\n6ttjQWCnMtaAE+2c+o1fWNzme4ndPs/dR2M=\r\n=Qjfy\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --minify --format=esm --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.1_1657120421552_0.024839924378416756","host":"s3://npm-registry-packages"}},"0.0.1-beta.2":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.2","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.2","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"84c3e5358fce4ef8a0ae5f15a8bfae90e3cad6c3","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.2.tgz","fileCount":5,"integrity":"sha512-VrSRaCWISnU/Mi3bH8jge8kzCfPlvVCM/TcI2o7Aczks5zD8WJpWXI+BZ6ovu1QUyJKvW9PYuJJJAfzeTcWKJA==","signatures":[{"sig":"MEUCIQDo1Ka6jthsavuE/23v4FQopxYXMHWQBx1dLI/s4Qm8cwIgWn5Hhmwk3bqWm4AeD+WY2CaJYjwGvZ4MManFqvnzP0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixa1DACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmql8BAAmOyeHbJV/T2TU7x50yvxANr/ghToUlv9/EFbAQ8njJ+LacPG\r\nec8Xj97qUDsxXBJmFIll90pMmDMBdJf3rHaF/guXc2RNT7mFPqqA77ixEaXR\r\nK13wCPCRa7v0mveXBJNonAsi7jHTHaP+PqF5UenBVu04NId+jIfGZJvo/vXx\r\n9X2+Kk0OZOKyfgu58eShatv/VAjlJx7ZcbVELBtM5PQZJ2lFXYXXrbY5gEyM\r\nWFTff1f4eobim4Ymhg+HQ/0XsH4/Bm4ItfZtQWDxvtpwKaP85PJ9+FUq79el\r\nvix9NtStYDCFmYogEjxSCurIAyjmerqtp2iDCWiegf+5E8qWlVpqu0uhGPSI\r\nUBYLDJfvUdZfXrU1wR41+P9tpJ16Bl4N3QZedHtuSOPCksAC4rtHqKk8Q9Sl\r\nC83vzLR8ir9u2rgjhugA9EkXt+c0vV19voHKLSKFI1bpo3+O9Hwd77TiZhh1\r\nPopV91w3A0+c07guGRGDdz5bUFHaOTE45hT+jBo+9fD10NStHaJmHNuNVcKw\r\noW4KAv5zu9elpHZAxH1J8ByUFK5YFla114HU2YSDCHLuTObYDEDwMqEJO8B4\r\nwksu2Ebi2mip9YgBF8knwfGuVwvRGYcxpaUYOFjaT3GtqM77/SMqkN+v6Zjy\r\na8cdWtQqj9p+xW9zQSqzW23lwS/X++5Gtwc=\r\n=GAb5\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --minify --format=esm --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react","npm-publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.2_1657122115326_0.45420221920085235","host":"s3://npm-registry-packages"}},"0.0.1-beta.3":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.3","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.3","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"ef968ba2f5f6b207c018d735a759e9388f7a97c0","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.3.tgz","fileCount":5,"integrity":"sha512-jgzLpwxmVGdbUs/UsKLdKKrwyL16xKqJwmJNe7vajGU1ztFlCjY5VbCk+S1c818p0gsd45yC3SqxNFIoks5lbg==","signatures":[{"sig":"MEUCIQDogrod2O/8ibVwgDaWGTV64uaL/YovI/U1ihlDn+me/wIgXp+4uhUNBKRCkDEeafNqEIVg3UR+Csn+yvd8P067JWI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixa64ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo25xAAjGUdRe+ljmKQi2J5AiLOirYlQmT0Oh2kGCBWV4t8eJRnwCkU\r\n9gkasfCm/7LE2QNNqr5QZzbRmusD7o12eh4vLLYl82Cq2im1FAcg9LTGZbRh\r\n18pT6eGd7VN4LU/CSXxHarjhYscH86935ZEAu7AA/tWomQxYLz8oUcY8JmV7\r\n1OXCjgAhZtOVXuahOrXPF8oREIZYihPGeiFJ91mFXgY5Sy8oi1PGiLdtGpqf\r\n75jryiwspAzY5lYEa337UUIQV4lg+d4T2ThFeNFSJnhlrh/MFYJAqVyerYiK\r\nlCpcb5YB4KDuIhWEEnlihvIvwMljN9hG4KTQ78bPEfrANQanCQ7mTnGn9XYL\r\nGiFI7p4B+ENSyItFN/oEumKNBCQVM+DLeXEWJyeG66XiHabMZU+J+Mi9hNa3\r\nLoKgWmFNWqEua6FdeO5CSTa8LBx9pxzAG+D8Oxrzv6FNpEOrLdv5PoaOPVnV\r\nEvXUzPo1OA8tYCT1epkTVsSoqTf0dU8lQ3KTt4sXyVNw4HkLNOGSn/ZRMnjk\r\nDeAxgYGR/A5lTP8Yco+2b91yHxVjrD0WOXHuu/yQr5Nq0Qwrj19htEJY30Gf\r\nbhPNnYXOtiE9iOfN/v4AU6/JcNBoZQSqUMKa6+/owepLR5MkBftvJkbF8lQm\r\nI82AQocq8Y/tUwT0FxvDWqhp/T/tUD53uZs=\r\n=fuua\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --minify --format=esm --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react","npm-publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.3_1657122488413_0.015530693637223703","host":"s3://npm-registry-packages"}},"0.0.1-beta.4":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.4","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.4","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"8e7abad3137397e67108e4f8db7536513e26716c","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.4.tgz","fileCount":6,"integrity":"sha512-6ffE4ORA5jjX6OvKUGgIl2b/wl0/JAv36pkzqyzJOBlrN8RzOPFLCLLsyC9OvudkQSLKEamioHIHA8EQV8h09g==","signatures":[{"sig":"MEUCIQCB+l4IKIgbZuja3Z6eMxFTMayuBO2Sd0KhnSXOYAJH8AIgagYOBqpyF/Hk38CK7YUWChGurazWxL52QsDNnMg22Mg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixbPbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpfww/+JVErQ31A6pM4WLnMSC0k4RFnNrM3lypp59drqTEgE2lZMm3p\r\n/sJcjFmLRhJSNISdNh5Gsd96fuGeTD95GpZDOW2gExBLYJY0P/+rcQ783Jhg\r\nHg5EeJ/IdIWrfNrMN5iPZjzDyXpofJcUIkW6/D1d/bZkS4PVBZWHxJgfviaL\r\nkpcxF/6HeyflOYlEfREibd2yhQ9LBCO4RvLL63wMYjtcB64UPBNFIalrgDUh\r\niv9T1Gh7G58Mytl2dWqCIRrgbD1HdBmPfzEP3rKBKmS2uugedl7Z7kC/qlFE\r\nbRcHAWtr2Fvq8/+I6o3JpS07fRaqq/dNFWB106K1y9ZmrW/m+dMTb5YAXYh9\r\niSM1N4YV3JqK2Mtsd5HdpoupzoaieSJGEHO4BXz7W6h6d7xp1Mw4+TW18I74\r\nSJlZ74kmIkNO89xG2/PWU6SuIdapr+C1SmNeIoalxIKMwZT/HYrLwTB++FVG\r\nu/dg7ibF1kVmdcZmV7M0RCsYRr6k/+ie+V0lhrVghi8De3vL90caXafYC9S0\r\nNUHik8QDqig++4ud15I955xKKLzHZNyzPu8Bz+Yrqfc2cdqaVqmwKqxgo2c3\r\npO8Dybk86yhL/NzODx+8snhWwihdpBGZARtW9OOLW85VZ8j2RcITV5nPhNxO\r\noncMUN+gQb5wp4EiUH3i/PvF8wnMKL0RNKM=\r\n=se/k\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --minify --format=esm --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react","npm-publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.4_1657123802732_0.42867857092644","host":"s3://npm-registry-packages"}},"0.0.1-beta.5":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.5","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.5","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"cb06c4ab885ccce01b96d459de6d9732090e3907","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.5.tgz","fileCount":6,"integrity":"sha512-4qmIyKsIHqm3uj7hGWIDJ8lKrkKwSqQUPLt8MxbmNOFCL0czfo5+OQtvBJ5zF9FVxSqUx9nGI1LQrNZCWYaIwQ==","signatures":[{"sig":"MEYCIQCREY+kBglAWjH0Py4IKxJPNckUDYKLNLnNqsHLcwKofwIhALS0r9NFXQfm8V19e0Az+k0tICj62/MuZPI/VRAkFR2y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixbROACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFfA/+O8WobsRBvmIgn85eUAAFzZ+GDBnP4TcxPW+5mpHR2K6XhOCg\r\nfiLT6d+2sw2dzFWoVcdXEFli2Uu/eeMuOfw7LON0zudUEsH9jQZEjf9/hGe2\r\nTwSHJTDMyGbjPfAVYM35gI17Zevjftl+Gh0fETSR3vodaiv9yOlTk7GxZGbu\r\nF+MBe+mXptXBFaY1KCbQon32y9HRv/JN7lgaz6/Qbgn52EU24scFWv94BcSd\r\nimtNhvmmg7shGQ6xP6wpTd4DfKdHevwZbP5YwwJ/9/FrnSyeCaUItAUxR7G/\r\nzqcWz5d3EXVGgkbN7tOjNEpnomuSlZU4wKp8cb6+IoTxJw1oo8yJq+pililp\r\nWL2AffvHpOvh3jN6I/Z8lMo5YTDSs3oEfa5Ar55zK58iC2Rkbvak3gOtq3zc\r\njfgIFVRnzw3AiZaIT6i9t3R3JulgnopTVogqDE+Zf+iERCvSd4bhr4GMqYRm\r\neljoIfID3wuR7fWYUfPsKLQg9gRcBstgNs0AYYEXv9Y3DCUtKyTs+haJoO8G\r\n+awCaALw4O+6v45heQvwcpQURsXaNaxPCWJcY1Rt1EOQiFp297GNqQmrxrET\r\nHxKFvZJUVEhzEd3SrxHdQxD8mSmQ5evVeTGLgbYqRfyM4fuqAxC+xhoD//tT\r\nc4XQlXOXarQA6c2GQ8g+thw4xKKeZb7/97E=\r\n=MlIJ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react","npm-publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.5_1657123918650_0.7307856967650381","host":"s3://npm-registry-packages"}},"0.0.1-beta.6":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.6","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.6","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"21d621a3a71a458381857a91c7666af76fbab02d","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.6.tgz","fileCount":6,"integrity":"sha512-or7g0DVDrEAazSWk1vXBgd0E4PWEccC5uDtrb1pmqmHS3Zd9zOUYrVoRodBN8DKIbwk3c3sv+ikcftdZBT/law==","signatures":[{"sig":"MEQCIFIXIKzbYnUssf7nvBcqeZb4TORjxVjbFHtlgIcS1OdCAiApTazEyVc8sR4/aohXBmMflU/H/NTUrAiJ1C2ORUVPqQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixcfoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpE/w/+P4SuN99Rj0g9oyUlAS0O4gELeZTUbOyC9DHEZm3kUXYVKRn/\r\ntInMy/mUzNBsx4YZ6rSmFtZE5jP+WFvSZd0p8rZRXAbncwiDzQDxUXBwfsWD\r\nSVIp/rpHYkNCXJMpXP4QMNXpbd7ewQbxXrxyg4IYfnzPOmJ9JsG4rQL5CTmY\r\nfvnQarT1a3JqIQgyfBr42FyZXGb3ZIqmv4E1FEgq670WnKKLLeFcb/WJtLwe\r\nSdMmm/nux8YlfaFG/F+Fqv2ewtAafZeqfsSZMmOclbsJC4Wigk6MSUvQZpIJ\r\ncC+2b8Blp0aFMOfP6IRrfNjkpbqK0LF4dtEc4JUTKdydiSvzL3U4DI4yhfG9\r\ndnxyt/pcN+FlCP13UUXfgR3ILZgfjY4FTZj3lIMMLhav+sammaH2DEoyCuWo\r\nbWcezeJiSJ2QmMv9rD9FcezpIvIax/m8ULz2jiSsUsfk8FOd41Ph68xM3wv0\r\nlbvJhXTJOnW3ZDN7k9ym1jIlRsCRemqqY7Ajd3KpLz4gZ2WhGRqtNNlzJleO\r\ns7vni0JCH/IvuEH2Cjzj654NFAXNvsM+sIKUqHE3wmU/9aM+FvbWEsRiycLb\r\ni3K8H54WHk/0MVLZd4yclDFZIpNrgutsjmVq4GcdamcmRFuYIzaZzvE8gq7m\r\nVNQC0h6prSFraVopdThPN59bvdMRF96tMq4=\r\n=gMyj\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --minify --format=esm --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react","npm-publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.6_1657128936599_0.7085838906841413","host":"s3://npm-registry-packages"}},"0.0.1-beta.7":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.7","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.7","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"13016ccf2660e9eff79dce8134dd5ca1db734556","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.7.tgz","fileCount":5,"integrity":"sha512-r9TQzX0Rd1FSTrVIgVsOjryhtYp8y+LB/Mprv3tbWMqNrJXNKv3ixbFkSWkslwGrCGvEll6DznUVMrbJ8QRvKg==","signatures":[{"sig":"MEUCIFHm7z5xVtCSUfchmPJpuTq4w1OirFKLHpzkH7IZEJ9RAiEA4ak3Cj5n7Vpi9o26jqWPvJ1LeEDlQ7p1cTp0845T6Ok=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13431,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixc8tACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpqxhAAiLxmhqlEjXzsA6hsAl0dIwusPY40bDNyzeBEs7RSi0KDWJd8\r\nu/6d1v/IKH0vpMFT4k8An6VayhbSERzIH4bdY1+NkC0knvTS6YtbQt5/Qvr2\r\nsNuRWjZYVn3bGBbu0JvhXj8iHDfwPw1JKZ3qZIq/aJhDfAaK4KRtYkFi9i83\r\na9/1LwSwEjdgx5nIT+JvYVs/jopJeZtw+s1hoaDGogs/EaUyw3vQFBX1qlzP\r\nBSMBqHPJ6fCtLc3tMGrD3S/ijqH8lsMQnvlANF60UadYrXl452+GJTAzdoeW\r\nV+PNrJxY/jVmMS/bmPu7UOBz8yqcFJSLBAVw5Psv47spxD/WBXfbuuoqOtu4\r\n5Yxr/QPt4VLBW/MofN3OlfT9lS2rcT3o2KQbcWhb+xGzkb+E6ff9sl7gQSrm\r\nXZ0K2EWFUoHR+ZqFNXippXrUmKxVexbM2duDlyk2gJcmX+k7vixkYkQT8YJC\r\ntzxPhZfA4wnDpA8A8K1dNNZSd47Z5fIHWAkXWWz0mPCabSHL2cSneLYrkhvp\r\nJxmDFEOzV3vTpm6aqyVlmC9Pvku9ZO19RiSKpZXwvruGglX6twAIh+lVrQHn\r\nNHUdnktoCEUyVAn0W0osceCft39UpPVBBP93z9c39Ko8qBGvUzHV7aIUSpCZ\r\nAAtFOzmlIpiFfsBV5RHgMF2mkOrICsIoCl8=\r\n=+snQ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --format=cjs --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react","npm-publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.7_1657130797096_0.030310837791962753","host":"s3://npm-registry-packages"}},"0.0.1-beta.8":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.8","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.8","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"0e92c864c85c2f2962825cc43ab837566621dd4f","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.8.tgz","fileCount":5,"integrity":"sha512-Lepm8RLSsSMRaenjykg5no8CfbJxJGBKnPmTyWeVam/mHlUd4jFoxGlchk4EsR7a+sIQYop1Bxld5NR2JHv5dg==","signatures":[{"sig":"MEYCIQCipUHcGImRgMXZiTxqWF0+jEqwb4wVronthLkHS6Kz9AIhAOuZuQ+rffGBuAXjlRpjDFucj1yO0vfwHmjnQbddRMHu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixsk0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmowVxAAie/PLUmB/KaLYO717QnVH/T0VPC/l256WBoRch8Ej2QE1IqO\r\nPsBUMNMJIKPxuLETZRrjiiqbJus4DgiUxFi8BN2XIfM7P/apsS5OoxfvtZJK\r\nJim7REeEwzyMqYByTmODIJvuoxpQjj2lnL+8m7RADGgKHOdOQIzR3Cf5J4n/\r\naLkwC91XphD3h6HyQiYE3fVQRljpN2KkeCfHyHO81qMmlzJyHtxHE1meq+6G\r\nmI/WrxB94igRK32hXF19WLwPrYnIK+KkFEuPTWm93BwPMqxKWkQnERlYWRgc\r\nndHTNKkBP19gF0AgIjYN7xiLCM/sYS7tAWMTttPx7oHZ0Qqspa7G+uw+ee/N\r\nXZ+yiIBJP32l43GgORGU4Ru8U0+TMx96I7fM85YwXFcZzj+yc2yfh2nFdBts\r\nvsByyMr3CY7ZWLITuI9aiUFbSY73GkyCCZ0zSLIYHkNrWxinGLWtS+cZKRdc\r\nPsmFjv80TMI8tFJDFjz28dwvFyPOQbaNuk5xwdY+4AA2i6AUG9w9PntVpX26\r\nEx/23Ufka19EPPZoaaOfmDMTKI2mHr/CB4UZLhu+ORBIEaTlfIX5Hurtc6Th\r\nqRz6mRXftx7lDt2539ggh2IXCeOJLuMG++w7Xy6hNowpfbEMkUoG/HH275tV\r\nhYufZ3sCTpo53hyskwYh/gJ3C4sie/Mm4hU=\r\n=AHUE\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --minify --format=esm --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react","npm-publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.8_1657194804676_0.8001864099630953","host":"s3://npm-registry-packages"}},"0.0.1-beta.9":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.9","license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.9","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"dist":{"shasum":"92e906c06d3ad88d0f8287fcb2aec2d426d515e7","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.9.tgz","fileCount":5,"integrity":"sha512-2QQcCDofkMudT3AffPwSIgC3u8Fb/bfZVGdHeMYaKG57GN394UE5LlHvUYQ57V9f6v5bUV7dZRjvhUAMRBjYow==","signatures":[{"sig":"MEYCIQCa3Itnwgar2QmHfzuW3xJ22RjBGh4poNGVHQnQ6LZK6AIhAOG2IAf3/haVijELt6TMeTzX3QNwspLxZo2CWtGTXoKh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10213,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixsz5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6/A/+KuiRlhXNE9Pff3OD4aQs01/KN/Yuc8gvc6/535mtfY4yjV+g\r\ntdw09S60BS7K5C0OJ7GJa/QHMxiyap4KUWqnL20xEDzTEMCqiLac9Awc2dx/\r\nxNiZ1NkAVW5PwWyLFAGrseV8MSPeooTg5qFJTMeSTFaP07grLN2kC35ZVf3g\r\n/StPryN1nUp0GRVW5iVvSHMNKJ6cekKfjNmyVWUmyx1Y8GQksCTQbIMGTdMl\r\n1RcY//SGn7LAlufDxI4JMhj5y/6JIBdLjilFDZlSA2K7hM+9axKP6WUuvt9o\r\nkK5UXQVkJ43oi1yIMoFnIvOsc77kI6H8RX18TNx3w9zhkIHF7txPWi3wZcxI\r\nb1YJ+X3omdwZ8YYuSBcjDAyp9bXEuAVqfMDD6aKujzgCz275CwoW/E9yHLJT\r\nO4T86Eau/F9KVAF3Vmgu+urpEgcu47JHTHYwTtERLcbZHTLBdUGBS9pFAJpB\r\nmGNvvh8UjE0F2Xz7PHHNHAv9f/TxA3kNZN3uBSYim7fm6agFcDswCtbdTZgS\r\nP+hpg9tkBtnf9Al0X+zG3wDFqTrJHEozkL5EnLR0mjv61Mwi5izxFR4mgoFn\r\nB+ZumyOYEJ19R2PJgW2u6hYmDZvzhIs7jz+PwUo7xBOAQNJWLDMReDa1wcu5\r\nz1GBeCj86C2sKSBv1WEkFFYd7wbXJony0ck=\r\n=aTZ/\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","moduleNameMapper":{"react-dom":"react-native","react-native-my-plugin":"<rootDir>"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"testPathIgnorePatterns":["/app/"],"transformIgnorePatterns":[]},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./package.json":"./package.json"},"scripts":{"app":"node create-app.js","copy":"cpx 'dist/**/*' app/node_modules/react-native-my-plugin/dist --watch","lint":"eslint . --fix --ext .js,.jsx,.ts,.tsx","test":"jest","build":"esbuild index.tsx --outdir=dist --bundle --minify --format=esm --sourcemap --external:react-native --external:react && tsc","watch":"concurrently --kill-others \"npm run build:watch\" \"npm run copy\"","format":"prettier \"{,!(app|dist)/**/}*.{ts,tsx}\" --write","test:watch":"jest --watchAll","app:install":"npm i --no-save $(npm pack . | tail -1)  --prefix app","build:watch":"esbuild index.tsx --watch --outdir=dist --bundle --format=esm --sourcemap --external:react-native --external:react","npm-publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"semi":false,"printWidth":100,"singleQuote":true},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","_npmVersion":"8.12.1","description":"A plugin for React Native.","directories":{},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"semi":0},"parser":"@typescript-eslint/parser","extends":"@react-native-community","plugins":["@typescript-eslint"],"overrides":[{"files":["*.ts","*.tsx"],"rules":{"no-undef":"off","no-shadow":"off","@typescript-eslint/no-shadow":["error"]}}],"ignorePatterns":["dist","app"]},"_hasShrinkwrap":false,"devDependencies":{"cpx":"^1.5.0","jest":"^28.1.2","react":"^18.2.0","eslint":"^8.19.0","rimraf":"^3.0.2","esbuild":"^0.14.48","prettier":"^2.7.1","babel-jest":"^28.1.2","typescript":"^4.7.4","@babel/core":"^7.18.6","@types/jest":"^28.1.4","@types/react":"^18.0.15","concurrently":"^7.2.2","react-native":"^0.69.1","@babel/runtime":"^7.18.6","recursive-copy":"^2.0.14","@types/react-native":"^0.69.2","react-test-renderer":"^18.2.0","eslint-plugin-flowtype":"^8.0.3","@typescript-eslint/parser":"^5.30.5","@types/react-test-renderer":"^18.0.0","metro-react-native-babel-preset":"^0.71.2","@typescript-eslint/eslint-plugin":"^5.30.5","@react-native-community/eslint-config":"3.0.3"},"peerDependencies":{"react":"^18.2.0","react-native":"^0.69.1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.9_1657195769427_0.041597317119734356","host":"s3://npm-registry-packages"}},"0.0.1-beta.10":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.10","keywords":["react-native","ios","android"],"author":{"url":"http://google.com","name":"Oscar","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.10","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"http://google.com#readme","bugs":{"url":"http://google.com/issues"},"dist":{"shasum":"1b7038edba2a69cb8acff0572ec5e28c62eb7a92","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.10.tgz","fileCount":20,"integrity":"sha512-Y5DQQ8SvHiovqJQRNZN9NBYobsNTyuM3Aq7QLWOf7/M0baRHR7QEv8Nf7U7NGdml6qLmtzbBcXjPzv2sddh1oQ==","signatures":[{"sig":"MEQCIGBTLvWStp1Ao9c7dDuV8GC5xPdeQGTnMJsa95WhwAwKAiAFFKUCz5V0lvfMIznOVbiYPEV7WV/NhowdKomDePpV+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixs6VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmodWw/+Lw0e+JQSZfgqp4A+Fqo5aDSuRjwGxHAEubtp34IL7EGlkXL2\r\nhgWChTpVfx/HWNztf0mL2ChZ5Oetc9SU+OM8xdRV/qVpXh08SBVYU+/pgHoW\r\nkDDVwnRuforCir3TB5nnAPsDKXIYDre5pDWpPdBxTSAQB+g6QuqzVvKAH1Dt\r\nMgw+uygYWSWq+pbZAJ5IW+wAFvJ1ypLHd73boaD9Anu7Xfix4ORuci7DqMiS\r\nMlPDSd0tKAdgMtmLBjTWKfhO3LUz9Prmt57tI+B1fmN2UxJVz9swI9mpTRXb\r\n8yDNROUETTnC1eupLzaD41GfLkebYpr657GDx0lX40zG8E/hbfU4JyxToiZP\r\nEaM3aSvdyzLodgexoBZFXwjXbWfxoJbdz2HeUgoRf+3RKEaiHSNtK/8iVb7b\r\n2JBm3tZekemOgmEitN7gq0T+/0I3SCvKmcusVHkQV9DIqcM22E0v581SyRsC\r\ncgFVSurbXBjH6B8dozX2XVxqKZXs3KwznXSG9Nn4NDshZeBciDdNoxXV7YtL\r\nZJvQ0vzjNAKlSRtdvFelYAO7DxpKJ2FuukXFYKilJaZ62UDOkgPFzbAq/kQb\r\n1v5aBsI8ojibYutAq3Ht1hOrgRjA+5+GOjQSWM4zcfRdIltJCFE1tIo81uYy\r\nTGkFlG3SxZGcPAVpyB0QuLaaMsHuRK7mMqY=\r\n=Ull7\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","source":"src/index","gitHead":"38cc81e78d612f1f508bd8dbb069f87e6a6d0d57","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","release":"release-it","bootstrap":"yarn example && yarn && yarn example pods","typescript":"tsc --noEmit"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":false},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"repository":{"url":"http://google.com","type":"git"},"_npmVersion":"8.12.1","description":"test","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"parser":"@babel/eslint-parser","extends":["@react-native-community","prettier"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","react":"17.0.2","eslint":"^8.4.1","prettier":"^2.0.5","commitlint":"^17.0.2","release-it":"^15.0.0","typescript":"^4.5.2","@types/jest":"^28.1.2","pod-install":"^0.1.0","@types/react":"~17.0.21","react-native":"0.68.2","@arkweid/lefthook":"^0.7.7","@types/react-native":"0.68.0","@babel/eslint-parser":"^7.18.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","react-native-builder-bob":"^0.18.3","@commitlint/config-conventional":"^17.0.2","@release-it/conventional-changelog":"^5.0.0","@react-native-community/eslint-config":"^3.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.10_1657196181472_0.5318869267355886","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.0.1-beta.11":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.1-beta.11","keywords":["react-native","ios","android"],"author":{"url":"http://google.com","name":"Oscar","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.1-beta.11","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"http://google.com#readme","bugs":{"url":"http://google.com/issues"},"dist":{"shasum":"16220e9499717d6478ddf436c9b0755b0724e68c","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.1-beta.11.tgz","fileCount":10,"integrity":"sha512-i9CGUZI6iw26EWV/5Rn+6CnrfQev3T9W3yMZ/BK9t3gvK6Zb4d+BWqBfLVaDu3pTOF8S0oFL/Tgba6e3Ca8uyQ==","signatures":[{"sig":"MEUCIQDbwcqpoIGuqev/6Y3vPst9uiKHCW1wob7584pDVRXvVAIgMtiV266qaC2Pouu/4THLfmVZ2V58SWRcKL9L4ZkJ7VU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixvobACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+Eg//YgL9OmDfCcbNX6eiDSvq+tnpvJoRpa1dLaQoyIYfqMLegKmX\r\noUxOAs98dF/FHK6kzL0XQJ4Ae7SwDW22S8cGfd59OpTfmVL5StA/A+R5+FA8\r\n2sNVlDRFAAaycHfg4AAoEDLknYOv44MnW545XSWzVzPyPTE/00PbeRDjRfXC\r\nmMH60mZM14dwFVZayqIQySKPmuVMFs8LrCp/lfnOJUyiRggN/AAvn1Jj6LAc\r\n3CfXp9heo7sB/YGoWGWC4gHJPkSo8/9/0qEUPYWXEysbRo3gpfDtRyXiEVly\r\nztQ1FMgDGNL6xwU5rDcMqgmFv3kSJ0owrL6pDFHYqReSIJXC2OqfM3xP+h/R\r\nZLYeFZjfFHkVkI04xrT8pgR393xkTGZ+xOvpcKyvjbzQtqzKFAeEjWXh52rh\r\nLnWkvjBTxd06W4+BRsHH0KFvBWaJ/bS1BFSuGUphIPnKCFHiVYrl3m3yiib6\r\n7PbKgROrewKfyaDoYjJxuWBWLVu4daIu4iurtG9OY/Y71gP3iKe4sPK2soNq\r\nO0wo3A27mLasfwp1qANXfOoCsn+ebrjpTn7O1SK23rx5GCTmBVxCROSw1Lw7\r\nvIV5QhINV1jDndTf4bSgP2a/0pvHTYzxV7GgUud7A32A3xsMvm348gPdHHwL\r\nNfYvmtHaN7hmkZopVLG45ktlEBtFZpJMyPc=\r\n=gbti\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","source":"src/index","gitHead":"38cc81e78d612f1f508bd8dbb069f87e6a6d0d57","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","release":"release-it","bootstrap":"yarn example && yarn && yarn example pods","typescript":"tsc --noEmit"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":false},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"repository":{"url":"http://google.com","type":"git"},"_npmVersion":"8.12.1","description":"test","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"18.4.0","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"parser":"@babel/eslint-parser","extends":["@react-native-community","prettier"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","react":"17.0.2","eslint":"^8.4.1","prettier":"^2.0.5","commitlint":"^17.0.2","release-it":"^15.0.0","typescript":"^4.5.2","@types/jest":"^28.1.2","pod-install":"^0.1.0","@types/react":"~17.0.21","react-native":"0.68.2","@arkweid/lefthook":"^0.7.7","@types/react-native":"0.68.0","@babel/eslint-parser":"^7.18.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","react-native-builder-bob":"^0.18.3","@commitlint/config-conventional":"^17.0.2","@release-it/conventional-changelog":"^5.0.0","@react-native-community/eslint-config":"^3.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.1-beta.11_1657207323167_0.6965624784982916","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.0.2-beta.1":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.2-beta.1","keywords":["react-native","ios","android"],"author":{"url":"http://google.com","name":"Oscar","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.2-beta.1","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"http://google.com#readme","bugs":{"url":"http://google.com/issues"},"dist":{"shasum":"718fa8b1534a501a56f7bb3544d35c2977349518","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.2-beta.1.tgz","fileCount":432,"integrity":"sha512-SGIa9qfgxK9AZ5C6yVm4Mocuo/MT3oCejarm2ex+fRsaZQ+z4FxcQ0kPqYH/ytCdsG4miE0OyCkh/dE9jAFM+A==","signatures":[{"sig":"MEUCIQD4zpPZzq+EdEme8TQsOsnp0lzCvZBs7c4BeyT6e4DrfwIgb0WGZiSNNv6wj03gckbnxXjBLK03RTaS0h0SDQW0RVI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":907100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJix+E+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2shAAjCtqzOmMDF9b0wqH2fbBYgJAf0aQ+JbZ7qA5jv72/cMJBs35\r\nOz4o7Pl93fwrMXvzGi2jCoFzXW1E86yjTgNgSWbtwYlFMGjyZKhM970MrM5x\r\noUikailV9ygzkk0Amm3xPOndrBNjq0+hOAR7RNUuIr9bAdtZUT5gQgYmw+EY\r\n/vavisw7BpGSU/+s+5oe/1LjQyAFl7C3l8WZG86d+5Ib1eb7+duh7XT5fhn0\r\nVDj72HA3qKndqd4JffyDceCQlXV+op09QxMDAgyBpTyWwqFGxuXqwJwIijzs\r\nzSD4jZWmJ2q+Gf5TcKeFxI+OoTj3aSM0fwdu/XaGpC+ZtV/U1RuyKRooLWG5\r\nC8f8hdFmfeC4BAKViB4S2RRoqqyYsyTx6WhU1FUZHBFc4EKL4Nznx37EPc+B\r\nx5KGze10TVDJuXVYfNg3fKEiOKgFB4Ny1ad8gDoWiZ2u+75uk6QLvDLEqPDX\r\nx80r/GLoWiEnxlMKrWe9MLuwo+7R6flP6KrYDFhoOVoGZx585fqkc+YyCS4C\r\n2aHew+z8+IYCAexug3d2V4jW7z9s2nf20MsMEc9o9PH0n1AooM7k5iA6zMDl\r\n2iaEnEBNcZruI7j0uKWNc9SgdUafReJtzXfdR1u7j71fVzamH4S4i8x3Lu/6\r\n/FGB+mSQ0q50yfrwTcRM4+DSMfj09m7r/0s=\r\n=mOik\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","source":"src/index","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","release":"release-it","bootstrap":"yarn example && yarn && yarn example pods","typescript":"tsc --noEmit"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":false},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"repository":{"url":"http://google.com","type":"git"},"_npmVersion":"8.12.1","description":"test","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"18.4.0","dependencies":{"axios":"^0.27.2","graphql":"^15.8.0","i18next":"^21.8.13","date-fns":"^2.28.0","apollo-client":"^2.6.10","react-i18next":"^11.18.0","@apollo/client":"^3.6.9","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-webview":"^11.22.5","@react-navigation/native":"^6.0.11","@react-native-picker/picker":"^2.4.2","@react-navigation/native-stack":"^6.7.0","@react-native-async-storage/async-storage":"^1.17.7"},"eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"parser":"@babel/eslint-parser","extends":["@react-native-community","prettier"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","react":"17.0.2","eslint":"^8.4.1","prettier":"^2.0.5","commitlint":"^17.0.2","release-it":"^15.0.0","typescript":"^4.5.2","@types/jest":"^28.1.2","pod-install":"^0.1.0","@types/react":"~17.0.21","react-native":"0.68.2","@arkweid/lefthook":"^0.7.7","@types/react-native":"0.68.0","@babel/eslint-parser":"^7.18.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","react-native-builder-bob":"^0.18.3","@commitlint/config-conventional":"^17.0.2","@release-it/conventional-changelog":"^5.0.0","@react-native-community/eslint-config":"^3.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.2-beta.1_1657266494188_0.3922362774626804","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.0.2-beta.2":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.2-beta.2","keywords":["react-native","ios","android"],"author":{"url":"http://google.com","name":"Oscar","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.2-beta.2","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"http://google.com#readme","bugs":{"url":"http://google.com/issues"},"dist":{"shasum":"a4f479987c24a94549c22d0ebfbeb0c10225b294","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.2-beta.2.tgz","fileCount":432,"integrity":"sha512-mMltEKzSfsirwaokbsgyzJpC8rOh2NAilg9ajHeAZTCTjD+7r9Su3DGGMoR2wwzt7epcjdJPvNh7OzLYBMwROw==","signatures":[{"sig":"MEUCIA5tMGYPe+OGhpENbGl0K4uGIR9/O69uhdNPbefh6F99AiEAmYRMQ8YItzu37bJ+9v4WV97ISLqDymdZQSIX4dipqgU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":910797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJix+PQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqATQ/+OLiQOBYDNtxKuFyJhwRZBNBndkpPo2G/iJ5Wk7d95w8f0zs5\r\nic0GvPFPnGE0Jhj/YDdhptXJQrNqpeI1no1VSvb1UD0PX1CMcgkQW6CxzC2M\r\ny1Uks7i4vO4KTrK/aw4VVE+y2CUhBdbUiZ1EzitHIg+apME2Ujlu6f0xCsA7\r\n1Lz7Fx+fqzQp4LxFHDtAi1PxMFm6kCaZvabRZzGJYaTt1BHNxSDFa6G9PZzg\r\nXuqSShO8F7MbZOijscrkK14CO9P+kXat4QiYDf0UycoGoxFV35pkuYkNSFmK\r\nyAJNNpjD5GAk8fAt1elDE0NI9s4Y3xw1EiWfsFSRHNPBYmJtPBmBBKEy6ufv\r\nwvx6qkNJxG7uA+jUm6HXiRwlv4mVJypOTlho/DuVyyPzejDYyO4xdDatJ6we\r\nZjtQi/5zHIlvNsLBsxoCLhc7n4kxTxfi2k2VIripQu8oaQ2hPMGqhFmEnmZK\r\n7rj9a5SFI9ua7/SHko9j1OYdqmBjaMM0FgDT2cTXFkf36oGjSisUbxvpO/lc\r\nBbE7gEO+GmqApXrLhnKx6RxFV6+sde1ZxLMpuQZpkpM2l9RCAVI5WTNOStdG\r\nVXeSv7IPDg33sqdJYbfjiwaavL3QZ38SCBtMmlO9Ok0aAq/2HNylcKXmE9nE\r\nqTUnRLhYqmqEeDbnolYpKx07h/CLhHUP8i4=\r\n=E2Ss\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","source":"src/index","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","release":"release-it","bootstrap":"yarn example && yarn && yarn example pods","typescript":"tsc --noEmit"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":false},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"repository":{"url":"http://google.com","type":"git"},"_npmVersion":"8.12.1","description":"test","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"18.4.0","dependencies":{"axios":"^0.27.2","graphql":"^15.8.0","i18next":"^21.8.13","date-fns":"^2.28.0","apollo-client":"^2.6.10","react-i18next":"^11.18.0","@apollo/client":"^3.6.9","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-webview":"^11.22.5","@react-navigation/native":"^6.0.11","@react-native-picker/picker":"^2.4.2","@react-navigation/native-stack":"^6.7.0","@react-native-async-storage/async-storage":"^1.17.7"},"eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"parser":"@babel/eslint-parser","extends":["@react-native-community","prettier"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","react":"17.0.2","eslint":"^8.4.1","prettier":"^2.0.5","commitlint":"^17.0.2","release-it":"^15.0.0","typescript":"^4.5.2","@types/jest":"^28.1.2","pod-install":"^0.1.0","@types/react":"~17.0.21","react-native":"0.68.2","@arkweid/lefthook":"^0.7.7","@types/react-native":"0.68.0","@babel/eslint-parser":"^7.18.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","react-native-builder-bob":"^0.18.3","@commitlint/config-conventional":"^17.0.2","@release-it/conventional-changelog":"^5.0.0","@react-native-community/eslint-config":"^3.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.2-beta.2_1657267152743_0.19995698192927924","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.0.2-beta.3":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.2-beta.3","keywords":["react-native","ios","android"],"author":{"url":"http://google.com","name":"Oscar","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.2-beta.3","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"http://google.com#readme","bugs":{"url":"http://google.com/issues"},"dist":{"shasum":"dc659289e0ef81855c23fe55eb110bf70b5ebb03","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.2-beta.3.tgz","fileCount":432,"integrity":"sha512-am1TLDj1k6PezTinCUYlsbnKU1PcDbEBQQ6RGmVFf31v5iyrmDFtW/aRdBPohfNDM/Sc25Z+XkG0pPMUXoB90g==","signatures":[{"sig":"MEYCIQC+lSSSLjfua9SAt/p+fBqlWPQP9ZbqFxNJqNzwv0z/QQIhAL1p7HR58Fs140ml3mkbCmwVzHDVynUGciQpjNZCkMTg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":911105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJix+RcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2EBAAnLd6VtGKR68EwjJqSGgm/D2EyC+LRYABQCqMhghTYOLbQGQ7\r\nFp9ITr8j/3VA76A148iTKfJECDLk5MItRZ+DjOlOrPbLfjEVIURJBtXRL/ah\r\n3Vrn2+AwO7rtf80cdXgCNtYpGBnMHWWKiivag2JlHtst1YWbuBD+ycrg1NTU\r\nevvDKD+JPMwxuBwKXNSdjZW4nKyygJm52lf6w0YTY+s9/Z0sOezoTghbFwjF\r\nDyKNh3EE4pIcx7elhGx4Zf6vfO7PoRVnVbYzbl7KMINk47Z43E8R9EEhoB06\r\nRlLlHAmnPc9CUvOb/WW5q3zz3MmgWSf92eYvTgssMPmjdUHP0P/mTzWpst09\r\ncwSPcHp+j0KM2aPqxk42BCN56MIVvnepCZyE07Zyu1K7j68fRtREzwNdNnJc\r\nuc4BtlOL0gc8hG3UolqjQl2uTMci2s6wey3tJu0ePU+PzC9dUDRfwMRcUUgD\r\n6pRUXGXasEkHBbUTrw6kwCJrGdwBWPx5fNf2IpRbRVN49ZBM5QJamagXUXkD\r\ntG1WyVsHAAt1X5wA6Xh+yU+kF/nu6H2QzY7nCn6Hwmhr/uMRoJVT7g4Vcx7c\r\ncq4VolTWwaKLOzZyobT42lITd8WYU3L3mKSvYcmTgFi3S8d4G82dYR1zjlan\r\n+tia0u19m6YP1iGFZsRcCs8EtDUIADZtFEA=\r\n=BisD\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","source":"src/index","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","release":"release-it","bootstrap":"yarn example && yarn && yarn example pods","typescript":"tsc --noEmit"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":false},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"repository":{"url":"http://google.com","type":"git"},"_npmVersion":"8.12.1","description":"test","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"18.4.0","dependencies":{"axios":"^0.27.2","graphql":"^15.8.0","i18next":"^21.8.13","date-fns":"^2.28.0","apollo-client":"^2.6.10","react-i18next":"^11.18.0","@apollo/client":"^3.6.9","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-webview":"^11.22.5","@react-navigation/native":"^6.0.11","@react-native-picker/picker":"^2.4.2","@react-navigation/native-stack":"^6.7.0","@react-native-async-storage/async-storage":"^1.17.7"},"eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"parser":"@babel/eslint-parser","extends":["@react-native-community","prettier"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","react":"17.0.2","eslint":"^8.4.1","prettier":"^2.0.5","commitlint":"^17.0.2","release-it":"^15.0.0","typescript":"^4.5.2","@types/jest":"^28.1.2","pod-install":"^0.1.0","@types/react":"~17.0.21","react-native":"0.68.2","@arkweid/lefthook":"^0.7.7","@types/react-native":"0.68.0","@babel/eslint-parser":"^7.18.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","react-native-builder-bob":"^0.18.3","@commitlint/config-conventional":"^17.0.2","@release-it/conventional-changelog":"^5.0.0","@react-native-community/eslint-config":"^3.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.2-beta.3_1657267292435_0.15722102316767272","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.0.2-beta.4":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.2-beta.4","keywords":["react-native","ios","android"],"author":{"url":"http://google.com","name":"Oscar","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.2-beta.4","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"http://google.com#readme","bugs":{"url":"http://google.com/issues"},"dist":{"shasum":"96f5a54a9430e1d0b62d41ef17197e96a4d3d171","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.2-beta.4.tgz","fileCount":432,"integrity":"sha512-lL51Cd3XV2vW5jfy6UQ9fxTcy1fJkAptYF/brEzVtaRhZV/MsYREH+F769WL0QM+U3p0Nn4bau247vzAHkHdJw==","signatures":[{"sig":"MEQCIA5jGYsr9pqb2ylv+7x57EJoEAujVJn1cDk/ETV457tVAiADvMsue6QcrnAZCsp0taN0B1BivY+le2IuEGfbvxgRfg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":911175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJix+cAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo85Q/+OhjlOj0ZwuiY/4nyKukxxRLVtHxc+QL0HJ2X1Lw4R+0Fagni\r\n0FsIVQHgtO/HYum7pLwbhtR/P3c4yt23leQ9TxVnIgUb7lraDH2TBOqRwcWc\r\n8iKPSO8mo51mbl7vxRHAlnoIpggtwuf9a5wF0AcYavhYYG3eJMgCBrPxGXWh\r\nAmlfbnErnmMMd2FUnrjxIAh7x/bcMgoHXpPS8c3hwyWYpwxvcMg5e9P1HPqN\r\nRxCPLhK7AWjLE23xsBSnyO4NDaz6lMBrBRhG/pQWOjpSg9O5Jh56AnAMw0Dm\r\nOL6AwBGAUuntdBXM1jqx8zdoLVSwiqY2AIOy+kELU4ms1VQiZKfYtLIQiC7w\r\nMzf+bzAn2HW4xoKqi1TIhvc9Cmy2Cg5/0MhAF660Hn2M/Mp7hWHjrcn+/9DR\r\nUu57MDrqtZCW6sfHuBihFvQVDJPOmgOlH6XUI+vkfJttscrLGF2QQ2fKkExQ\r\n6DzFEWDUOCQiwueqKSTdGoLMwmYq9C0tzehJlOxuWwbGDZEI4Z8aArm0BIVp\r\nRWr1dyx2jK/s1b6/4PloPSJ7+a7bOComwsth2+PCc4spGfN+L9CgP7Wc9o6/\r\nMmFcUgl8th0my+CN8m2bKJyGV46sfkyXZCl0r3B+P+QXX91R4cllVGgJkSUl\r\njeFObi1XXfSRdUIE5F2VFC4DhClYHVDq+5Y=\r\n=zpJY\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","source":"src/index","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","release":"release-it","bootstrap":"yarn example && yarn && yarn example pods","typescript":"tsc --noEmit"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":false},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"repository":{"url":"http://google.com","type":"git"},"_npmVersion":"8.12.1","description":"test","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"18.4.0","dependencies":{"axios":"^0.27.2","graphql":"^15.8.0","i18next":"^21.8.13","date-fns":"^2.28.0","apollo-client":"^2.6.10","react-i18next":"^11.18.0","@apollo/client":"^3.6.9","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-webview":"^11.22.5","@react-navigation/native":"^6.0.11","@react-native-picker/picker":"^2.4.2","@react-navigation/native-stack":"^6.7.0","@react-native-async-storage/async-storage":"^1.17.7"},"eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"parser":"@babel/eslint-parser","extends":["@react-native-community","prettier"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","react":"17.0.2","eslint":"^8.4.1","prettier":"^2.0.5","commitlint":"^17.0.2","release-it":"^15.0.0","typescript":"^4.5.2","@types/jest":"^28.1.2","pod-install":"^0.1.0","@types/react":"~17.0.21","react-native":"0.68.2","@arkweid/lefthook":"^0.7.7","@types/react-native":"0.68.0","@babel/eslint-parser":"^7.18.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","react-native-builder-bob":"^0.18.3","@commitlint/config-conventional":"^17.0.2","@release-it/conventional-changelog":"^5.0.0","@react-native-community/eslint-config":"^3.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.2-beta.4_1657267968341_0.576758170296201","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.0.2-beta.6":{"name":"@nebulr-group/react-native-nblocks","version":"0.0.2-beta.6","keywords":["react-native","ios","android"],"author":{"url":"http://google.com","name":"Oscar","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.0.2-beta.6","maintainers":[{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"http://google.com#readme","bugs":{"url":"http://google.com/issues"},"dist":{"shasum":"1ce7861248208db1953d0864f501425a00c2fa30","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.0.2-beta.6.tgz","fileCount":432,"integrity":"sha512-+370BlLgMxZU/uHzll3rpz0lU4ixaXjFMQ1K7rAwZoLDueHVnIA2aA7cvvsvEX6ppHBAj++WZcDAHkZklVkWpQ==","signatures":[{"sig":"MEUCIG6aiFtdOPQShw6Nx2qko4Abkk7vOOJHaGhpzaLMJqLbAiEA98ypZ7yyAe9ijhSK5VXC2rohVLDmo3UlmTJbM4ZO+4w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":912400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJix/ZHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoBpA//RzddWzSUJlONiFf4NcU/vzOGeVWFwkXIlHyMryOZjQePzypq\r\nIue4bKsAhoX95a9/NUwSiuj2Gos4JvClbVR3NJnEJq8y2PjPsKHgVXJtnqbc\r\nowUA/Oybcz4wHbL9Ru4jks7XY4XkP3TXVtJFhdhn9vucDYMBk06Xqdocq01R\r\niTCihNR+V2hz2fZwCaLRzFZn28zrnjqPU0XMRYK97Um/6keTIrQQ0saRNpl7\r\nXmpwougjUuPNcs5dDQ5EW71Kf5DqRmtmO4kCtU5zwdoTxiNHUJpTe65foQSs\r\naVyMF2VTRTNV7xdFDr5JsWh14xKTyfizCVOGKi/+yGvF6gZgdOti7DPv12Ow\r\n7OiozlwkIPbSCyhm97vuC738xd3rhLwXCZArJEqKtAjiN8a3ebZFuKrh7LrZ\r\nrVkyxwxeJdyLJt7ijaEjKnMtGVEpgiUiynMNOv3bC3b7MIZM07cakef6GLua\r\nCkrhXe2Ugedrh8gZmoaeLhysWHrrYSBdIsgapOGBFOJoaQAqNn8DpQY3rxpQ\r\n7IO6AlFM4gFhH2b6/Td2kY3fCN+7AUmAxmYDPAYVnUiu8mplvMHXqHk31F0S\r\nIxIMVX7EnxjMbB9r+jb/w+yrLGpaGmKIMqDZh6ZKKdo/hswRT9QAKIia1k36\r\nB7zLYUjvKDitfUPkM7zGMR8j3gTGvPt1WR4=\r\n=3t0K\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","source":"src/index","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","release":"release-it","bootstrap":"yarn example && yarn && yarn example pods","typescript":"tsc --noEmit"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":false},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"repository":{"url":"http://google.com","type":"git"},"_npmVersion":"8.12.1","description":"test","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"18.4.0","dependencies":{"axios":"^0.27.2","graphql":"^15.8.0","i18next":"^21.8.13","date-fns":"^2.28.0","apollo-client":"^2.6.10","react-i18next":"^11.18.0","@apollo/client":"^3.6.9","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-webview":"^11.22.5","@react-navigation/native":"^6.0.11","@react-native-picker/picker":"^2.4.2","@react-navigation/native-stack":"^6.7.0","@react-native-async-storage/async-storage":"^1.17.7"},"eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"parser":"@babel/eslint-parser","extends":["@react-native-community","prettier"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","react":"17.0.2","eslint":"^8.4.1","prettier":"^2.0.5","commitlint":"^17.0.2","release-it":"^15.0.0","typescript":"^4.5.2","@types/jest":"^28.1.2","pod-install":"^0.1.0","@types/react":"~17.0.21","react-native":"0.68.2","@arkweid/lefthook":"^0.7.7","@types/react-native":"0.68.0","@babel/eslint-parser":"^7.18.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","react-native-builder-bob":"^0.18.3","@commitlint/config-conventional":"^17.0.2","@release-it/conventional-changelog":"^5.0.0","@react-native-community/eslint-config":"^3.0.2"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.0.2-beta.6_1657271879622_0.7465846326750967","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"0c0f249e773ca2789c1cf0552edfce95287b344f","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.tgz","fileCount":425,"integrity":"sha512-ZajSMBEAtugMY1X6E9JS8uf5MGc+Zti/qokrwS8xlGx9NNF5AyiK4LPJuPBhX8FDK+mmkjLcJUNKe6OMcQXy1Q==","signatures":[{"sig":"MEUCIQD2eViW7RX5fCYRRl7dDTOUmjjP99UH19Vlho2ENr/RVgIgaQtwDAiHUSbyV7v8XBGeEOuy9bMSqGXj83o5z5wyVRw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMLuWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpL7w//dm+SlaQYVVzybMaa/gKz7/oL0m6B1rnzkoElP2uwxZrkBwM4\r\nuFeffaZD0i+v/qmVqjNIz+4IbiQWybDzHJlz06W1Pn6Qf/oQ4yvB51c0bFmh\r\n6umYSnvK0lhjhPjSZzGWR9P11kqD9yudzCuSUT/lu0OGjZIc+RhJY2jajBlF\r\njyhzFyx4MDU83ubmeq6ASexKsEx6IGGgXZtIbQyu6QX9er6mQqsNq/3DB5mG\r\nMSfX/qZTr2sAzPGcYFPiJzCI+x8lzQ3UDs+W5ZuJ6LPxGoRBsEEqNGNHLT1C\r\nm7oHTJq0Nywaj36biti3chkonU+6xVpAetW8X7w4+v6JKxjaLUR8YTW6zF1D\r\n3Nx0yl1bTQZd96Io3oyETRy1jRsg9cVSFKdHauiqDQTlK2pAUNAxqdxfVleX\r\n5BXexEMJQ+IyIdgGQS2Kmryh3xwz2Swy19ImW3lEgvpc7h1MsXz6LDIbDM/V\r\nGhrolbyE0aG8qxz6B2qe4neX/IKdhHDOTh+VbscljaA/1HReSTkPzvYfxQrz\r\nsyOwsx1Hv/OjYGKtBElQ7rAzhmL6P09bGfsRR0LFdOb4sPr9HlmDUzP+CN/V\r\n4qYLfPP4fwL+E/QVYjB3ohl8e5lpF/9RBk33kawt4pjKZOlrf93RMGN/HI4M\r\nC21n8hj6uNnYyv0x459/Ry8QJEfIIGA/SnY=\r\n=k0fc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"f2378c97293b4a83cdefa7c54e9b5c9d46fba496","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^16.5.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"~0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@release-it/conventional-changelog":"github:release-it/conventional-changelog","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^16.5.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","react-native":"~0.68.2","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@react-native-async-storage/async-storage":"^1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta_1664138133820_0.0714223859083769","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.1":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.1","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.1","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"87b072535d6c9c85ed0f93df745b4cb95c399c80","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.1.tgz","fileCount":425,"integrity":"sha512-sTKESQE+a+udLz9/cnm3oZhT2iqsx7uGDUBuveOEQoy+JWoUd8nEe40LFerZozkeGyUH4bPIYwiZssTskpe59w==","signatures":[{"sig":"MEUCIQDTa/OI5eZI7141IqbyqvCm7FxAFKUW4VI21hGhZrHeewIgDxMagCcPwL2vv8mJCPzB40Yx9bbVIEqtEyvYp8BiYOA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMWJuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0Fg/9HpEZNkf6Qh0Q+XKrTzctsLuub1CxWmsJVJ6lYMTU2LjqxiFu\r\nRFHbvH7djl8c2s2VViM7xil5cZZDU1D6XOpPcL7Wsnqf+kVFD0ZUgXKDTNkA\r\nCiMc9IJrGY8oAve+yAXOT5dFv7a4VvFQMKT1kW4pW+RN0OMhAa4tVmE0uX13\r\nJP3JI2c5p9rzjTEbZIlvky9LpVCnI1sgTJjwco8h08ogSufuSOwAxaGOVfd8\r\nHpsBjdDb79sa6Och074f8gLEMOIBnvrf1Rbyda3wlcjd0hAvAqKRQxidJxjV\r\n1Lpx7Zg091pWHTcI8rVBYTwQl0N+/lG40h7op2vNiDeVFGHdaC0WCjAuTI27\r\nsBM2TR/Y8LT+CUKcMvLwRAhmtWvEjB9v9xBrh9Z/fN1L7w4BBYz9yyUlPZHP\r\nA+KtsPauhCO6ok9epXwI8mO/5QJzOlDgFuG+CTDU6QM6y1dBxsu6Fe0inlqQ\r\n4Gqo4FQnVjLAFKoEM1Kl+a4EM8ry89Xm2otjnz3SYknTc2gjN+ZUkGBgfjby\r\nDMxHZefjWJbUFwlfPkt9p731tPxTkCDX4W3fZx3sRZoG+SqR/jRCC8jIS4Ri\r\nC3EHzl+yHDJB00MvkbUOrnYIeYheTw7WvE/AJVW7iZ/+U0MlakN5aerfMtha\r\nKNe6zdUkCZNz7mixUz2BibKfDTPNYbwOfIk=\r\n=Ecqi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","dependencies":{},"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"~0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","react-native":"~0.68.2","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@react-native-async-storage/async-storage":"^1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.1_1664180845759_0.04015820195596165","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.2":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.2","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.2","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"2fb897c9152ded2df2c93d6438e874c0dc709dc7","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.2.tgz","fileCount":425,"integrity":"sha512-wRkh12dMsvECtCX+t7tY3DfDvB3iKP6zFphHYBkp3smU/UPSknJ4DAL+CbV7R7WjWG3kFsZmBAFTboD4X3+0Lw==","signatures":[{"sig":"MEQCIE21XKEGqIP4oUJxf9UWKFq9R+fc5Kf+G9TiPXrEXO1eAiBjp3Ht/+aN69vxTA2pKuh1bxVpaNVdNmvZUpAZN9GtYw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMWYxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo32g/9GKTBPmmnHML4fZDXo2kOL2/B9US5Ur9HrjL2p1q7fFGD7gfR\r\nCTLPfu/CaSkxB2h+F2lTDe9tc1kUcNOaRnuTN4FMvYtvDZwpJ7AUSDSEp6Np\r\n6paPdn7SoWWRrgSS5VxVVK9Gu/j1F1e+EvUzwzlIY11kKtfFipuH1OJi/l8h\r\nIcE6PRZB05pYcoN/w0VAJrlz46QsG/b0OFSGUXuRBtSwj8aL0kyjc9IFPIL4\r\nlIXlhzqhQmi2aFOG7prkR0vmzQ1LuB2sD4uBxDx7G5DWowx+lxfw2jEc/jn1\r\nyfk5lZ0XgKLsBUHoSPadUQ5aUhpYVOCasOKjVytE4WVTvzPjSpHycEv0s6qB\r\nSNQzmPkDFdoYgf39C/64gpfmtuztk0W/h7CQatxZ3/azuQMkeleHD1w6wngZ\r\nDKTRMLZVQAcCFemmNukH3lW/Bpb1gvsxIz0gi1Y0V11QmwLnhUdpbaREGXQP\r\nk8gigQ3L6Tm0M14EyXP4ki0rmQ+68ZrBfZODE59Ro1GdSA7x/hVXWAnCLl5O\r\ngGmXAxKldKmKZ3fk30nT3U2SSIkH11soy3KXEl+ScIZqGah5oJddDCkC9otZ\r\nNlrzfEdKZvs7y+qoFoeaeImEkvJby88AEvciUUl+nfVYQ7l5yAhwVhoMsFf4\r\naW2bqxwBV/MaeLE5aDJFjrP3HA3Xm9FquuQ=\r\n=Fqxy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","dependencies":{},"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"~0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"^17 || ^18","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17 || ^18","react-native":"~0.68.2","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7 || ~0.18","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@react-native-async-storage/async-storage":"^1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.2_1664181809401_0.024955949828640467","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.3":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.3","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.3","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"3927b421f4e5e4c5570cb6dc3045c4512fc39e12","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.3.tgz","fileCount":425,"integrity":"sha512-0LmVtoNtyNk14rVZKSotAT3qX+JfrzctwmJp+OnEt511y3dQgnwNx9RZcaBiv/UcH4hZLGd/4W2I3Z0wnYBAbg==","signatures":[{"sig":"MEUCICjVsHp/u5SvFZ7X1mpy6gH/zdiE4+OngQuRUzIRVjkFAiEA67ZkG093XBoW0ZdLBlfmOJguNh5lY/4nYoau5BCTiyo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929387,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMXW2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoWJBAAmR0aVKZUZs3Sf/EJyk2hfwf/CHP7BKvQoNg9+nL1vI2p6DLT\r\n1+8IMnKBlqQ1WIwnqX1SugJYAM1Whrr1oF6OvL+FPaIODDvrMcqyRLRMT7Zk\r\nD36YvO36kHHy41dn0NiYrc3iqYWSGjvCtBaWG73dPvgStl/6P5mvjwLjaekM\r\nIKFpnmtprAKoL9UlPq9HgtjiDJ1lG1Ef5NqdmiBJrOSVKpLQljC7NHSrL3Ah\r\nCZjURudrA2XhR6heP3/17MJ+YJPWPczJDZl0iTqIDtMk4HCiH+vY2T+G+Pey\r\nc1eOHqlLbtAQr8mF+sZ0mEjK2g5TTTJm7Iblk0pVMxOx5c7iRrmXDbhvNaeS\r\nSGNaZPrVdpaBxTAXOk95MxIki0MOxvQmp4uP+4UsACHxa0zGpujgU5yBc1bM\r\nNap6HojjPC9SqKHoVKaZe5UV+ioy/HDy2lCUo50qCfAZyj/hS8ePszJTbm6U\r\nVFMNcC0Rn9fBigu1ndSfIwaN8HNoKLh4/7Dr6fKA131p/ZYYvdjskcoD2co8\r\n6TejBmvn990ZGklVeduWQgSLR6vRnE6Tur9rzebD2dY8NtjUEArfBPBdUZKY\r\nmskO40qq8UIOroU9NZhNnY4kRDzzPkyGFh3YpwutM1CttrizZhOIuxV0omUY\r\nBy/qnuhmR8QQcYKzjpTuiI9CqKXb/iX+kN4=\r\n=UQPo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","dependencies":{},"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"~0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"^17 || 18","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17 || 18","react-native":"~0.68.2","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7 || ~0.18","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@react-native-async-storage/async-storage":"^1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.3_1664185781744_0.49613232464278045","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.4":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.4","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.4","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"25437ce2264984fb7d998be211cfa08d151e7054","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.4.tgz","fileCount":425,"integrity":"sha512-VW36cNSUVckU2BdpsEh0teC5lLgWTkCpeu7Op7t7Auo28N0wkM0Jm6M3AAMEJslIwDhJbmXLnYr497vSgiwq7g==","signatures":[{"sig":"MEUCICWBAKVjNwRKMJzBLJOlJCiU+MaRom4DlJ6jfLSlPLfCAiEAixbgOAadcaVFFL2GYYtw+XLqlkRP7AwLkWniBw3FZ/E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMXbHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp5Bg//Y4/2gUx1u0uBUuB9zl23ZkHoAu/W6XOa9UlXPZgpG/nrO2Yk\r\nyqjlqBsfYP4k5gPPvWsKJQanx6OvLrFRT1v6bHIkUpL6HODUFk6iqKCUACGT\r\n05jYxXxnTGeXTbY/gSkLbhOh7qazbjnml/m6wfPDbUumhv4QDKoUUpe4/xe1\r\nfDWSp8S5/nNbA1y5pyCmIl5PVMckspLwPUfGne2OarlISixd109jvyLugOqV\r\nggdnnddobl3NsKM0nK7bL5MqtFIx683XxGk+IePxYrXquPZ71aDZ/fuSwrWf\r\nuVtpBKCFsl6IVOSrUrbRfdp3TvTem3ZnB5C9ujqz48s+QUUVMzqfgmxi2lxx\r\nnLQB+CVDpc6nOLjLSQNF9H1J6qE0ycYbX9w1fGuPO7nAiagu9vzWJ7U55IPz\r\nImwGZuH81aAZbfupHm7E41rvSSGKL+Ul3Aoba9EzsIFkzK0840HaKqevZED5\r\nurs3fRV8HqaqNatj3KLDN6RP2uATAucQ4YCvWjakJpPR+r6t5+WJCKjrnXM8\r\ng8QOlNDsVPXVdBqEXbLqqIzORHaHFnWaie06Gcqk/oFA+c3WLpp+Vsfv9WkT\r\nllXMzgSLAy7kphWarhC9vM5E3ZnPELTGUdZMHrDS4EgrDlsOGKgDeumb3j2T\r\nG0Z397hdq0ZkpiSM1ms8+hhcOjXgMmyCijQ=\r\n=Ti8K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","dependencies":{},"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"~0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"^17 || 18.0.0","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17 || 18.0.0","react-native":"~0.68.2","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7 || ~0.18","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@react-native-async-storage/async-storage":"^1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.4_1664186055121_0.14870212573737218","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.5":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.5","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.5","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"284ec6484086bbdaedf25ccc98cac9582550f1b6","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.5.tgz","fileCount":425,"integrity":"sha512-KagL2meoHL4SiyRyNujBXJ9dlCM8ZctBvqDcRaDSq1AfGw9+02y6XrtDqco1bTomLUXtJScnntAbBcnX38Up+A==","signatures":[{"sig":"MEUCICi3oJ7YIlRGTbx1szN5ZYJpKtUir3WKcuAtjMIswx8XAiEAtZp3V02Q7fWJPKLGGmmvozuoRbjQANM2qFSSN6zbzKA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMXgVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrNvhAAiEUo7NlMai7WKNkn14aAXoi7m4jLLiPQQcIXRPrhTke0pPyX\r\n3Ypm+D6+eRhBQ0AYfK7AS7dj+nD8i0QJ0vboLCoGGR0aMkfUmvTzJ918PRV8\r\ne4EfwwffsDzpO7/zh/4BIcf/XVrTM7ChabMGcUw3DHtkmu2ii43SBberUDG6\r\nC3sfXoy762WVNSRDyIPRIgD/h88AM/RyvxWmnTTMnVuEWQeV8zQo9tsXbtGz\r\nueQs5oKCYNE/8O5a4NDabaeyNBM46wu5Uo2mhx/fb1QhqaF2KTBzDek1IFvW\r\nEuS/JP19uFBrvG+VZFJAkQMgViFmelnLqFnsUTJMROs3l0+X8rDvMv2+htLy\r\n+a2Afwox58z6krZQ7XTsfJcf0Qi4jB4zCtt6Q3KEOA2aSxpBJnXU5Ombnzd9\r\nNCdZpZnYLGpEWHAQV3+TiNzPOlT9jU77HnFsZOA7agWn7MaaSZrUyekdCFEW\r\n/OVfkl8VcYZSwwwFA0IODDWLm/A2JP81edUq+FNFoCutPRaxwiLjxrMTxOYo\r\ns53NhSiS622fb5iyLO5SyKWbatxQZFnHniE1AFJLBcE7rEOYjvGt0hrz+Zr3\r\n+BQ0DPvwpx4HrVwX0pJADwFD/DSPpxWT5PqVxOlrgBowbKiq1t0eLkPz1T1f\r\n0FIP05Vyp779iKAdNKf9d9cUDrYUhodP0EM=\r\n=Ltrb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","dependencies":{},"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"~0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"^17 || 18.0.0","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17 || 18.0.0","react-native":"^0.68.2","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7 || ~0.18","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@react-native-async-storage/async-storage":"^1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.5_1664186389028_0.5786141788013657","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.6":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.6","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.6","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"8df09ae207700de1f5df20027dd3b13ef5b6fee4","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.6.tgz","fileCount":425,"integrity":"sha512-dGLkLiuk8uT4oLNekycGnKcCzkjhMmJ/DCP2GdvwqLH7LsTh4pHyc2B7PDTDAWN4EfnNVmkRzIaxEcJoH87B6A==","signatures":[{"sig":"MEYCIQDV7gPcsn340f0AO+dyMaWze+/3CHfihKI4S5143tgR5wIhALebRm8bYHfWxk2zdJOLN8iQpKSVUVmwY7tleBmYHEeK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMZtUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqUGw//aycEdt7DH0toAojjdiG/dd/Ns6wUJNjJEHNGhQHWL4TocmLw\r\nYOjy+u2KDjpPBujQJ4wrCa65+WE53b6L+uD7QLzaeCut/5MBMK5BSudt6Igv\r\nIQ3y40kLigPKqvj6GcbQnaL8Q2lL2Hwayz8f0tevVLYHbevoxcrxHKLq6eD2\r\nhx+sOmoYyPPebAh+ABmVwwpIwnSkNxcbG1jWOdSng2LTa02UfrUD006ynPEa\r\nTkabnoQwea+3eXwyQfwAFq31QCZf3jZWDm2+xkcbUQASuAKiIzzK6c9cyC19\r\njLZtGsUf0P2FW0zPRbYgoqMmhkdR5AZ/EhTNB+L7AK9ohTVt+gYTS8q2d8R0\r\nN1M9LKNo1steU8Nz8oHRJtHf8tnwlFZ2Rz/TcszwjuC48PCCJuYA77RR9Vhe\r\nS3WY0PYb1TRYH4BsKAf/mdLNBwtkoOBRQEV5XehAxlxwEdnT5x1h2IQhw6JB\r\n3n0Fza6NMbgqGEaStRZfvA7peXZRQQs9LDwBgYZKCaWNamQ2UOkYVH1CC8sa\r\noLZRQXp1RQK+Dz4tXoKbipcSMNd7Fh0wI14BfWoSqJjpU5cs6cIdy/5VH7DZ\r\nvMYs4IPXErP5vhwYSmFHDuQ2UGnH2jxg0nUpK1DYoqy4Hpv6CV687EvRGccp\r\nFtWBwjHNnLRV6gag23C1kDiieQIo7m9HJBg=\r\n=a2Zs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","rnx-kit":{"kitType":"library","capabilities":["core","core-android","core-ios","modal","navigation/native","react","react-dom","safe-area","screens","storage","webview"],"reactNativeVersion":"^0.68 || ^0.69","reactNativeDevVersion":"^0.68 || ^0.69"},"scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"17.0.2","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"^0.68.0","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","@rnx-kit/dep-check":"^1.13.0","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.13.1","react-native-webview":"^11.22.6","@react-navigation/native":"^6.0.8","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^3.2.0","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"17.0.2 || 18.0.0","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"17.0.2 || ^18.0.0","react-native":"^0.68.0 || ^0.69.0","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7 || ~0.18","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.13.1 || ^3.14.1","react-native-webview":"^11.22.6 || ^11.23.0","@react-navigation/native":"^6.0.8","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^3.2.0 || ^4.3.1","@react-native-async-storage/async-storage":"^1.17.3 || ^1.17.7"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.6_1664195412559_0.8519397554048651","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.7":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.7","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.7","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"3e3c78fcf05d8f52ddd04d1d4dd27159e58bb8c6","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.7.tgz","fileCount":425,"integrity":"sha512-+Uzwlj3RVnNo7CJcfalwmBlBWKrcjpjXiRveD4ZVva0rT7a+buNhKZTs1nsKnotVbim882vHHiUSaOBBMLMPsw==","signatures":[{"sig":"MEYCIQDYyg/2LE6PKpPFlNWn26SO5sfV7dRGNg2kvMaKvtLPjQIhAL3N5IU85CyKbmPyGfWRnV2bdG1GtImD9uaA3Ix/LJwe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMZ4tACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqptxAAl2Lh8HojLu2+og1pbhOqfbTj27HU0MRE+OsEC3mbmONviSM6\r\nnOwMA2sX3LNVUx/i2QFGsHEgQUPRF1tRnqS00YXTlRIMt8b661NdafAdDziL\r\nIi3ptQkaH1X1BFtMILumXVFv0KOrt1fhaMgVBheUbUb8Qy2vDvCucRgi7ZOJ\r\ntuAYQdVK2v2NyKpejrGjh4chJsmh4TO7FWoKv+qpFBBavk/O0jKjpQVVDGKM\r\nHd654y69K6syJQy9sPCApiqXg/z3dH4QlybQuh2ScMvaezhNyxru8M66tPXj\r\n6qzIDy3H/ZgDlzXIXA7tmbO6MOVSEOWuNNmMwhlSyrhQGlQvk1Mib9aeYC96\r\nF4WqXtgQBT/XGQLj7lDHj+jfQa27FWthpsyHNSSotNh21U+HKTyvo8R8klcg\r\nSAZ8B8JaNCNSfSrBS8dWpWoJtxvaKB281r1XCOzusuhiws7/nBxO3QJLzrb7\r\nueXEbd1JXA8RlGn0pK5Q2LXvL0f6waZ60af+OJ0fZjFH9RTDvVWFTSumPHVn\r\nqYrwzA+a8ypPGpaWp25CRJwQlA4G4IaBLP9DfK9zGgmt6l3W6gQKwrZP+klt\r\n9XGNmzxtwz0OeM2s9cy4vdgE4/73Cwn0UbrFnGv3UNf2cFDCPiw5+pftVxTy\r\ncQTX5S9NPv9M1iwWWe8k/cTOTpmXRria0C8=\r\n=gUD2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","rnx-kit":{"kitType":"library","capabilities":["core","core-android","core-ios","modal","navigation/native","react","react-dom","safe-area","screens","storage","webview"],"reactNativeVersion":"^0.68 || ^0.69","reactNativeDevVersion":"^0.68 || ^0.69"},"scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"17.0.2","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"^0.68.0","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","@rnx-kit/dep-check":"^1.13.0","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.13.1","react-native-webview":"^11.22.6","@react-navigation/native":"^6.0.8","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^3.2.0","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"17.0.2 || 18.0.0","lodash":"^4.17.21","graphql":"^15","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"17.0.2 || ^18.0.0","react-native":"^0.68.0 || ^0.69.0","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7 || ~0.18","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.13.1 || ^3.14.1","react-native-webview":"^11.22.6 || ^11.23.0","@react-navigation/native":"^6.0.8","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^3.2.0 || ^4.3.1","@react-native-async-storage/async-storage":"^1.17.3 || ^1.17.7"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.7_1664196141556_0.34347461507904153","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.8":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.8","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.8","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"83ef24513149c6c2cb9565df54e8d53f44797a03","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.8.tgz","fileCount":425,"integrity":"sha512-/l4ZKTLB4rFBwhNCi6WD98xE3hqZO6BoancvZ8KT1ev85lYhV0/SmiW2m8peTsRjjpKoiabD9y87FxvGH8WCBQ==","signatures":[{"sig":"MEYCIQCdPsc1BSjoZsaVJ/bQR2ygwiCdia3bHy75VatMvyKACQIhANkEEnKnf4nqBoIOF3UKGJuvSGmLLq78gxvpmCDGLI7O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":930039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMcCQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpw5g//QJi9wvslNvefXOedaILMlQVf7UJPMRgzGztwdYqVugmK41cL\r\nmj3oYVBBtur945SYA30rxQH/buywcQuk3byMzWu9H1zLmmUcqZ9Nq7gcNWGr\r\nJrx+yQLz90b0E3EdrORxLq9jdBgHKXoXnDGsyJK/lYcNXdjeKp0koISNovSG\r\n9w9ZuLZGelYGxlKTJY6eUqtZO+1iatgCKt08iULfjlOgNRLWCO+q8lPP0TuC\r\nlonAnSePu2BfFrey1UoTLbGbVISxH7Ik6/nXs75fyBu9+TKuXKjMU6G6emiW\r\nPgI580bkplCYCIQBZQtPQFoN8RBqFcd5RvptQ/Rxmrk+Gzje8kDbGYQWKy+H\r\n0Ls6XE+G7FF2Jpvd9ySph+x7d3LqqS4CwVWrJ8sq+WyHkR402q8bvXGnf4Be\r\nBKhDOk7NkM3kJpXTJBpjgKSn9pcoVhjJI1jL/crnWXgMwsrhb3+XYNhKfexk\r\n0Yeue4sfMHUcK5A1zz/c2gNEVBUleQjmx3O3DD9/229eGRF3InG0EPC02+++\r\nKfV4jufOdyHSveLARO7MOoeJeHFF3eB5IL/MaXmzdAKF3fYCy64FrSDw39yD\r\nwLBqZEOdrFrgx+vgIpMUIWYeBLKzZvgRn9zD4sT25jNdytVIIrvuZyCpa0Nq\r\nwm714lafkjT3zv9UKZrx/tUwr9ju7ZOQX+8=\r\n=7/VD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","rnx-kit":{"kitType":"library","capabilities":["core","core-android","core-ios","modal","navigation/native","react","react-dom","safe-area","screens","storage","webview"],"reactNativeVersion":"^0.60 || ^0.70","reactNativeDevVersion":"^0.60 || ^0.70"},"scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.2"},"_nodeVersion":"14.20.0","eslintConfig":{"root":true,"parser":"@babel/eslint-parser","extends":["@react-native-community"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"17.0.2","eslint":"^8.4.1","lodash":"^4.17.21","graphql":"^15.0.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"^11.17.4","@apollo/client":"^3.6.5","react-native-web":"0.17.7","@rnx-kit/dep-check":"^1.13.0","react-native-modal":"13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"~3.11.1","react-native-webview":"11.18.1","@babel/preset-typescript":"7.18.6","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"4.2.4","@react-native-community/eslint-config":"^3.0.2","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27.2","react":"17.0.2","lodash":"^4.17.21","graphql":"^15.0.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-native":"0.68.2","apollo-client":"^2.6.10","react-i18next":"^11.17.4","@apollo/client":"^3.6.5","react-native-web":"0.17.7","react-native-modal":"13.0.1","@apollo/react-hooks":"^4.0.0","react-native-screens":"~3.11.1","react-native-webview":"11.18.1","@react-navigation/native":"^6.0.10","@react-native-picker/picker":"2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"4.2.4","@react-native-async-storage/async-storage":"^1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.8_1664204944310_0.4253668913271329","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["commonjs"],["module"],["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.9":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.9","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.9","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"284664dbf75f059368c367284f6161a08a4795e5","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.9.tgz","fileCount":425,"integrity":"sha512-jULHGY80Tr7WjKzwTvKCrA9FZJnPhCuvYxs/n8eqfqA4cplpu0O9/BNeIPJ08AZjFStX9OOSV5c296WH5G/GMg==","signatures":[{"sig":"MEUCIQC2lYQ1In/BK2nCTJyTX2DPFv/pWDLfaKvaKybKewOQYQIgbByqiRjC3cQh7xiSuzEY3O+SQjDAwyAYgp/RDTJl96s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":930106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMcHQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqgiA//Up1oRgi+ojDMaleq7FC8C/jc4hYThnHhh2hDCwGHuopPvjCZ\r\n8n5ORSSCxaj/BWdWBrw+aT34dkVN5jK7ttiBXcKEUu3JMwO7g7SD3va3uZ6O\r\n/CZ7fYzzi8t22gTCKMRpVcP3fHU+UaNQFUcf7zlcDAah+pk2TfeCqGn3zCMK\r\nUpygjehVdTIutYVmdnqseCWPqCt+jKrZKoEFby3+3LFQQ4N70dW52Ry9gW7u\r\nFUgUmjgJUB80LgkIM7c311k4fYAdmPYX/UQT7Wr9TxqQJIjBWWQRvzsiKHKy\r\naZM1csJ+9H6v7+pyDf6vgoTfg6ppFMqsxuWU7cKlSP+GhGJHZV7oWg/DFAeA\r\nJQSYKhPTg4ucZncyfFOTQPyVt5yOdRr3wt1UqUJhM3gacnkG7Z8SYISyBob/\r\nc+Vb9mruLW1HexplcK2I/SWZA0b70Wot4zxbUosrf1eiZpUrTJDUzwLhuhZn\r\npq3/qg3/2iPOwdIWQ4LCSzBXqMzNajRygpEE8F6fHK4D09t09lUZB3F6IseG\r\nDvLDixv80wMJNSniIqc3vqAEYoVWi6D1uesl+fBiV0Tm2SN3W4GzlURvBmEt\r\nM8tYX64Xal6FrwqDIMv9KuQJb5d2E5Wb0oRtYuqnX8iKHBvc3XXZGPFBkZfV\r\n0oIAvTj0KkAujvoUjR64MZOTcWKZI34bt/Q=\r\n=vGub\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","rnx-kit":{"kitType":"library","capabilities":["core","core-android","core-ios","modal","navigation/native","react","react-dom","safe-area","screens","storage","webview"],"reactNativeVersion":"^0.60 || ^0.70","reactNativeDevVersion":"^0.60 || ^0.70"},"scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.2"},"_nodeVersion":"14.20.0","eslintConfig":{"root":true,"parser":"@babel/eslint-parser","extends":["@react-native-community"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"18.1.0","eslint":"^8.4.1","lodash":"^4.17.21","graphql":"^15.0.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^18.1.0","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"^0.70.0","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"^11.17.4","@apollo/client":"^3.6.5","react-native-web":"0.17.7","@rnx-kit/dep-check":"^1.13.0","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.14.1","react-native-webview":"^11.23.0","@babel/preset-typescript":"7.18.6","@react-navigation/native":"^6.0.8","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.3.1","@react-native-community/eslint-config":"^3.0.2","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.10"},"peerDependencies":{"axios":"^0.27.2","react":"18.1.0","lodash":"^4.17.21","graphql":"^15.0.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^18.1.0","react-native":"^0.70.0","apollo-client":"^2.6.10","react-i18next":"^11.17.4","@apollo/client":"^3.6.5","react-native-web":"0.17.7","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.14.1","react-native-webview":"^11.23.0","@react-navigation/native":"^6.0.8","@react-native-picker/picker":"2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.3.1","@react-native-async-storage/async-storage":"^1.17.10"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.9_1664205264423_0.9004247181378204","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["commonjs"],["module"],["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.10":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.10","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.10","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"2e779018a47165fecd1095c1c3a02e8ff0827da2","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.10.tgz","fileCount":425,"integrity":"sha512-Nf1R6WpEI2WjRC/joLJp+WqsFO2FGrhBHMGEsTfhKkD0z8sFmbMXQU/rzjanJGYCNKkX6BcFsO0UC34aWNWJZA==","signatures":[{"sig":"MEUCIG4ebDCjisYz7rwrLNJv1i0FprPz2xETLMBf6/jcjv6TAiEA24sS/TXOcY0l/sbV6VuDXz1Ge4dArI8AX/DIyuwJ1+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":930107,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMcUCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrl7w//cxJMsppVysyqLqiDy229tAHlPvuuHYFRFw3aDbaY1iB7JbuI\r\nI2Pvv/kQnCiSToFebdOOaDp1plGQ3+Hz5AAcjUz9xWL4dfhz7VsRFAAR5Jp1\r\nsv6N0RKlfBBzcZdbEOl7DslXafCjbRaaScBZADutUexGQhOe3Bn/NBhbIW0S\r\n49i7KT6wrXBTiwb+c5wFP1EhWKdebl49a89aRR8N4RI5hqPhjN3bwt3kMne9\r\ni5o3bIh1cubjGj2vs8IKYuHDH8EniopBfb2/3vaR58YQlu5piyX1q8wlkVRg\r\nCdUt8nP8IlCaLYXNDBIdnq5ZnFz445kI0Pm4qrQ6qOdieQWmpiQGwQPtxs2S\r\nRJvwzJNObaAUahjIWF5biVpSvEecDfj780QColH1PQHN04nLfVGRmUM47yl9\r\njtqb/mQo3db0Dxb7SsENw001p9mKtfSp/Ge45EltY/7POl9R7+uGZtXKMaS3\r\nfeou4gKp/FFUaU9rBHMG8y7wwxmXRtNH3GefrsX/ooQF5HNWiN+RcdnJK0u9\r\n7LZQGBwkTp1Ny/cLWDiBjorZSZF+YoGjIh4o+eqeaaRqrrAMwXRow9tLz8Mq\r\nqpPvKXV+tlRUNoxcC3mWhUVcrPAc6T+dffeGO1TOWR6bo2fsclMO6yRuua/n\r\nnuDwMravf2mEDML4kOT/hUll3SWPa0HbEb8=\r\n=nD2U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","rnx-kit":{"kitType":"library","capabilities":["core","core-android","core-ios","modal","navigation/native","react","react-dom","safe-area","screens","storage","webview"],"reactNativeVersion":"^0.60 || ^0.70","reactNativeDevVersion":"^0.60 || ^0.70"},"scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.2"},"_nodeVersion":"14.20.0","eslintConfig":{"root":true,"parser":"@babel/eslint-parser","extends":["@react-native-community"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"18.1.0","eslint":"^8.4.1","lodash":"^4.17.21","graphql":"^15.0.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^18.1.0","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"^0.70.0","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"^11.17.4","@apollo/client":"^3.6.5","react-native-web":"0.17.7","@rnx-kit/dep-check":"^1.13.0","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.14.1","react-native-webview":"^11.23.0","@babel/preset-typescript":"7.18.6","@react-navigation/native":"^6.0.8","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"2.4.4","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.3.1","@react-native-community/eslint-config":"^3.0.2","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.10"},"peerDependencies":{"axios":"^0.27.2","react":"18.1.0","lodash":"^4.17.21","graphql":"^15.0.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^18.1.0","react-native":"^0.70.0","apollo-client":"^2.6.10","react-i18next":"^11.17.4","@apollo/client":"^3.6.5","react-native-web":"0.17.7","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","react-native-screens":"^3.14.1","react-native-webview":"^11.23.0","@react-navigation/native":"^6.0.8","@react-native-picker/picker":"2.4.4","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.3.1","@react-native-async-storage/async-storage":"^1.17.10"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.10_1664206081955_0.055159830037210256","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["commonjs"],["module"],["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-oscar.0":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-oscar.0","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-oscar.0","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"c697ca9481ecc698bb0d597196d20fa75726edc4","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-oscar.0.tgz","fileCount":425,"integrity":"sha512-F2JdNbGoj4/Su02uUUpqkqbhg6rPgRAqoYxEz7O3NBdHftAAlWGNT7KivNc8ossxUcglwMmWQ4VSuk9rDrsk6w==","signatures":[{"sig":"MEYCIQDm1/sUWkBd2qqO2Tc2V/2DP4lJz0retIAY92EORMiR8wIhAIvt30EYM+GdyEk5xeJ8BgzeybfbA7W9ViHmDFdJr9Yo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMcV8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrOOw//asm57s1LrA0OJz4erDaLQ9wLQa21H0OHo2rvXtsF1B2YeVfS\r\nMovsryb/xzsHFtznOi1glKmtdf+kznhx75wNlYcucMhW0cSAZdTXM0bCqG6K\r\nP396ny74k4EziSKp69/AR3CDpY6/lnxRWi2AD46ZCl2am9QFLYieWKwKwDtM\r\ncDklOTP5JiKzaEjOKP6s3PP1uwKlxNiMbSmHnBDlM2YPe4iZ+d6Hut8V8bIg\r\nAx8KQ6z2dysK3RnWqXt5ZP88UAksi40pLxg52KMeg1syYxmwpp/oyHTKYWxK\r\n1hEGNcJTLqOtgDxzLD0nbazxr2FXmufSuld0TOpfent6i/3xyZlY/oGxl7dO\r\nB3vF+hwAUVcMAVsYbS8ftikpR144URjFMPl0OBSYEu4h0GI6r19hecw3tnDC\r\n4iUxocAGZWoPlM7pIHkhLA7r1Qq3o81odc81kNZr9vXLdnb2HsGn18hvyJ/Z\r\nr5cfvRRtIrdAgo+FrTTicbjem8MccAWN+qEAPmaT2qqrGvrdQmTZg31S0b3W\r\nZZl5UEBd0fc3YaLcMF8/SWagnt0oAF8jrEYTm5uVoTH3hyWCWxpxasl2DCsG\r\nSfylZNICTokic26TZUfxxR29EFw6IAlTReB6+esIlvmPiH6ZllW93HfEajoA\r\nyJ2MuVZp0sLQXjC4/qX4irh5u4W+IZlLxtU=\r\n=V4L/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag oscar"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^15.8.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"~0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27","react":"^17 || ^18","lodash":"^4","graphql":"^14 || ^15","i18next":"^21","date-fns":"^2","react-native":">=0.65","apollo-client":"^2","react-i18next":"11.17.4","@apollo/client":"^3","react-native-web":"~0.17","react-native-modal":"^13","@apollo/react-hooks":"^4","react-native-screens":"^3","react-native-webview":"^11","@react-navigation/native":"^6","@react-native-picker/picker":"^2","@react-navigation/native-stack":"^6","@react-native-async-storage/async-storage":"^1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-oscar.0_1664206204757_0.7490574052195498","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-oscar.1":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-oscar.1","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-oscar.1","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"e9f3c01e9e6487fbb9e94d753c5d3d170d86f996","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-oscar.1.tgz","fileCount":425,"integrity":"sha512-hsmgPmG04xJMfLDw5dbtdiiKnxD1mWZSvJiWd0wHaCu5JLELlj0Qi1u7NzA3MVaEHY75HZD7dD1OmoBbMyAqnw==","signatures":[{"sig":"MEYCIQDecVVgJ8sfqmUB+hMmfpIhO0Iloi93ewWVb7UL38J4xAIhAJzrv7qJX7cAZOeApVWdDkPavoy2Dh+JoJUXqK6rGd1m","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMcY9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZSg/9HNVFUjjhit1TP/wUy3YxJ39u/30iMLmjWV5Tucgs6leKTZq/\r\nzPcNn/uwGcU2amo/CXESI0zIY1AyxU6Cs5MS1xYkzI13fyAllW9ehUEzzFCi\r\nWwY4nwVvtCehdU9suiNh2qoP3b7FHuFxwLDVUqi6wn7ovps4TCzZpwVaJ/Mi\r\ns7w0pKTUwgsUDP1sDTtEw/e7bmQtlJNLSTyyhQfDIDhMfobKzlaQfaVz/VIs\r\ngdWBMDny3XS9J3B6B3PaGrYnCZvkh1HPn4k8xd7i5NLRmtQO7o6d0HJSLo24\r\nK5qNR3uYpApa3g9GrkluE9ype5SWBgpWddRp1rCWtWIdD3CWcCckf3yS4YKa\r\n9kvqFRo7O36wIvx7xBggECBHp0+f1x2TxqgAt1BxjeuhJ99kkLb519GElm3y\r\n0DIy0kVEp9axR7pXi33H/lCUyyuXUhHw2a02D539b9hkWzX3wVTOChl/Xerl\r\nSwB8+UVIy14NxBpI0xvIP4Y8pD5LOkM8ZxPWMko7yUfIhAFOOO2r4YgNx2CX\r\nHqcvQ+ENzZoaomJKFB53mG+4OTwb8+0zFsPAfHz9NIwdhixeRVL2WO+jBJvM\r\nBOPo5xnPAYoWoD5JRi3j0F4Wv4SyV7YfxHYnwPCQzXkJk1M+U+db2aelI3md\r\nzqo1FFSInls/ZAol8N3XOKbfJsQUHYI8YnQ=\r\n=TyN2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag oscar"},"_npmUser":{"name":"0rr3","email":"oscar@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.21"},"_nodeVersion":"14.20.0","react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"^17.0.2","lodash":"^4.17.21","graphql":"^15.8.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^17.0.2","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"~0.68.2","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"11.17.4","@apollo/client":"^3.6.5","react-native-web":"~0.17.7","react-native-modal":"^13.0.1","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.11.1","react-native-webview":"^11.18.1","@react-navigation/native":"^6.0.10","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"^2.4.0","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.2.4","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.3"},"peerDependencies":{"axios":"^0.27","react":"^17 || ^18","lodash":"^4","graphql":"^14 || ^15","i18next":"^21","date-fns":"^2","react-native":">=0.65","apollo-client":"^2","react-i18next":"11.17.4","@apollo/client":"^3","react-native-modal":"^13","@apollo/react-hooks":"^4","react-native-screens":"^3","react-native-webview":"^11","@react-navigation/native":"^6","@react-native-picker/picker":"^2","@react-navigation/native-stack":"^6","@react-native-async-storage/async-storage":"^1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-oscar.1_1664206397127_0.7791593808635082","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.0-beta.11":{"name":"@nebulr-group/react-native-nblocks","version":"0.1.0-beta.11","keywords":["react-native","ios","android"],"author":{"url":"https://nebulr.group/nblocks/","name":"Oscar Söderlund","email":"oscar@nebulr.group"},"license":"MIT","_id":"@nebulr-group/react-native-nblocks@0.1.0-beta.11","maintainers":[{"name":"nemanja25","email":"nemanja@nebulr.group"},{"name":"olganebulr","email":"olga@nebulr.group"},{"name":"0rr3","email":"oscar@nebulr.group"}],"homepage":"https://github.com/nebulr-group/nblocks-react-native#readme","bugs":{"url":"https://github.com/nebulr-group/nblocks-react-native/issues"},"dist":{"shasum":"813bf6edfddfea4adc7eac74ec1fbfdf33f7765f","tarball":"https://registry.npmjs.org/@nebulr-group/react-native-nblocks/-/react-native-nblocks-0.1.0-beta.11.tgz","fileCount":425,"integrity":"sha512-gcQlKidudRqUvKFHhh5m/EFJgGHjWsU9DMOpyThvRJtOZRw+LfEr4QB63XQlCEEcLp4xtfuAZ3F+NcWtMg8E5Q==","signatures":[{"sig":"MEQCICztBalKkx+kg9y2oSZq9HgIRr23qdHEIUl7Rxek7RQUAiAw6jYDvWjjKomXTPoAwiKRIixTMEf3SYh6yfGKRlO4Yg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":929903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMg1ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoY4Q//S1O4zfXYWZDCtaE5XAsnl/QaA9ESHWrqN5E8rGQnFqTlug58\r\nSWI+FPB4CzhIc/YB7tRJo5oEAMSxN4URxaGun6DBm6m/u8C6OoFfupYsgyiI\r\n9IWM+o2JnGjwxPXv1fZNyZ+z3nRDdHnGpviK8XbwM6JG3SbWAgT2btzBF768\r\nuD3qMItu1MMa4jCHza9f0MIkAjLnGQ0qkCgJ5lwauDdUzYVmCXp9G6OFGfJc\r\nEGc6nesXx6JkpBekXideRdzZpjjwfFLOIEhkCVjZjHXdcAsOfhOpDZckt3ly\r\nqhdco+AqOgD2GfpErJc/V6m/HzR8p825i4CfFiK/gu84774r6DEw1CobG4oh\r\ntr7F53UATYMO6qKcaYYOu7j31ETvVhRCMklTJldTG79XBkh927vZo4xnDmw3\r\nFqukg4tjSXbEuDYzSSAvX7aGOW/5MOviVGnSpNA3ds+I7tO1WZ3rORf8y+sz\r\nDYxY8ypgoiT1NTNI4aw2ztrJTKYvydRhqkUsOLwFWUfoj5tWgtGuWwUgBI72\r\ne6V99kHeTPYcIz3N1KH21JXAS581PeSi4sBuVvn+cJMk0tMQ3gohNwcgZxrv\r\n8OcIJPxog2VwDfdJlZYGbo6mtpwHr04UhMgdbzv4Xj+THkpO2DXcjHOyN4p6\r\nFfui2RVNLtZk54kadx83wTNJh8/vxlABeD8=\r\n=wiz+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/commonjs/index","types":"lib/typescript/index.d.ts","module":"lib/module/index","readme":"# nblocks-react-native\n\nThis plugin supercharges your React native app with Nblocks powers in a true plug-n-play manner.\n\nDevelopement instructions further down.\n\n# Built in Functionality\n\n- UI components for\n  - Auth (Login, Social login, Submit reset password, Set new password, MFA, Choose workspace)\n  - Tenant (Show, Edit, Onboard)\n  - User profile (Show, Edit, Onboard)\n  - User management (List, Edit, Add)\n  - Brand expo (Showcase of Nblocks component default styling)\n- Basic navigation support for above components which can be extendable by app developers\n- Nblocks default style which can be extendable by app developers\n- I18n support which can be extendable by app developers\n- Support for both HTTP and GraphQL clients & Auth context aware intercepting these API calls.\n- Exposed state management and Helper services useful for app developers (currentUser, authenticated events, logout functionality)\n- Deep linking to consume links outside app\n\n# Getting started\n\n## Installing\n\n### React native\n\n```\nnpm install nblocks-react-native\n```\n\n### Expo\n\n```\nexpo install nblocks-react-native\n```\n\nWrap your app with the `NblocksProvider` in your top most App component.\n\n```jsx\n<NblocksProvider>\n  <MyApp />\n</NblocksProvider>\n```\n\nThat's all. See Configuration section how to change default configuration.  \n**By default the plugin requires a Nblocks enabled API to be present at `localhost:3000`**\n\n# Usage\n\n## Get current user\n\n```typescript\nconst MyComponent: FunctionComponent<{}> = ({ children }) => {\n  const { currentUser } = useAuth();\n\n  if (currentUser.authenticated) return <View>Secret data</View>;\n  else return <View>Forbidden</View>;\n};\n```\n\n## Making calls to your backend\n\n```typescript\n\n```\n\n# Configuration\n\nThe plugin comes with a default style and config for its views and functionality. These defaults can easily be overriden by you by providing other config properties for the `NblocksProvider`. E.g.\n\n```jsx\n<NblocksProvider\n  config={{}}\n  i18nOverrides={[{ lang: \"en\", resources: { FORGOT_PASSWORD: \"iForgot?\" } }]}\n  colorOverrides={{ primaryColor: \"red\" }}\n  styleOverrides={{\n    buttonText: { color: \"black\", padding: 10, fontWeight: \"700\" },\n  }}\n>\n  <MyApp />\n</NblocksProvider>\n```\n\n## General config\n\nThe plugin accepts a config object to be provided. This object must implement `LibConfig` as shown below.\n\n```typescript\nexport interface LibConfig {\n  // Output debug messages from plugin\n  debug: boolean;\n\n  /** Base Url to a backend API running a NBlocks compatable feature set. E.g. `https://api.myapp.com` */\n  apiHost: string;\n\n  /** The path which host the graphql endpoint, will be concatenated with apiHost. E.g. `/graphql` */\n  graphqlPath: string;\n\n  /** View routes that are considered public accessable and interceptors should not require authentication context. E.g. `['/about', '/home']` */\n  openRoutes: string[];\n\n  /** Available languages that the user can set for the workspace. Can just be 'en' or 'sv' at the moment */\n  languages: string[];\n\n  /** Enable password complexity according to ISO27001 */\n  passwordComplexity: boolean;\n\n  /** Ask for personal information after first time user logs in. Can be setup to require specific fields */\n  onboarding: {\n    enabled: boolean;\n    requiredFields: {\n      firstName: boolean;\n      lastName: boolean;\n      phoneNumber: boolean;\n    };\n  };\n\n  /** Available social login providers and account api data that the user can use for authorization. */\n  socialLogins: {\n    accountApiHost: string;\n    appId: string;\n    providers: {\n      google: boolean;\n      github: boolean;\n      facebook: boolean;\n    };\n  };\n}\n```\n\n## Styling and Brand\n\nAll Nblocks components inherit the default style which is composed by both a style object and color object.\n\n### Changing default style\n\nThe plugin accepts a style override object to be provided using the property `styleOverrides`. This object must implement `BrandingConfig` as shown below.\n\n```typescript\ntype BrandingConfig = {\n  body: ViewStyle;\n  textGlobal: TextStyle;\n  defaultPadding: ViewStyle;\n  title: TextStyle;\n  subTitle: TextStyle;\n  textIngress: TextStyle;\n  inputGroup: ViewStyle;\n  textInput: TextStyle;\n  button: ViewStyle;\n  buttonText: TextStyle;\n  divider: ViewStyle;\n  chip: TextStyle;\n};\n```\n\n### Changing default colors\n\nThe plugin accepts a color override object to be provided using the property `colorOverrides`. This object must implement `ColorConfig` as shown below. These strings must be either hex code or strings conforming to color/backgroundColor of react stylesheet TextStyle/ViewStyle.\n\n```typescript\ntype ColorConfig = {\n  primaryColor: string;\n  secondaryColor: string;\n  dangerColor: string;\n  cancelColor: string;\n  backgroundColor: string;\n  textColor: string;\n};\n```\n\n## I18n & Translations\n\nYou can add your own custom language overrides using the `i18nOverrides` property.\nThe data must be in `LangOverrideParam[]` format where:\n\n```typescript\nexport type LangOverrideParam = { lang: string; resources: any };\n```\n\n# Conceps and tools used\n\n## Global state management and Event handling\n\n- Built in React `Context API` exposed via different `hooks`.\n- @react-native-async-storage/async-storage for persistent data between sessions\n\n## Networking and HTTP\n\n- `axios` - Wrapped into and exposed as `AuthHttpClient`.\n- `@apollo/client` - Wrapped into and exposed as `AuthApolloClient`.\n- `@graphql-codegen` to generate graphql types from API\n\n## I18n\n\n- `i18next` via `react-i18next`.\n\n## Branding\n\n- Custom components pulling the overridable style state via `useTheme` hook.\n\n---\n\n# Development environment\n\nFollowing the recommended way to get started with react-native nowadays this project is built with `expo`. Expo is a set of tools built around React Native to easily build, run and deploy your app. It also simplifies working with native OS APIs. Since this project aim to be an installable plugin, not deployable itself and available to as many react-native devs as possible, expo will probably be removed later on.\n\nInitial commands used:\n\n1. `expo init nblocks-react-native --npm`\n1. Picking blank typescript project\n\n## Setup\n\nProject comes within a docker container. Just open the project in VSCode and let it build the container automatically.\n\n## Running it\n\nWhen starting the development server web browsers and mobiles (using the app Expo Go) can access the app using QR code. Due to the project beeing inside a docker container external access outside the host machine requires the local IP to be set.\n\n`REACT_NATIVE_PACKAGER_HOSTNAME=[YOUR_LOCAL_IP] npm run start`\n\n![QR code](readme_assets/qr.png)\n\n# Developer notes\n\nWe should try avoid external dependencies as much as possible. Those we add must work both for expo but also natively since we're going to ditch Expo at some point.\n\n## Simple dependencies\n\n### date-fns\n\nLodash for dates. Greate modularized date tool, better than momentjs\n`npm i date-fns`\n\n### lodash + @types/lodash probably not?\n\n### react-i18next i18next\n\n## Native dependencies\n\n_Installing_ `expo install [package name]`\nhttps://stackoverflow.com/questions/63784493/is-it-safe-to-use-expo-install-for-everything-that-i-need-to-install\n\n_Uninstalling_ `npm uninstall [package name]`\n\n### select/picker\n\nreact-native-picker-select\nThere exists no built in picker in react-native. Expo docs refers to this community project https://docs.expo.dev/versions/v45.0.0/sdk/picker.\n\n`expo install @react-native-picker/picker`\n\nIt seems this breaks when opening a web run on expo mobile (`npm run web`). Will download xcode to see if stuff is working on mobile (`npm run ios`).\nThat did not work either. Seems a lot of packages are not built for Expo web and webpack must fix them, unsure how to configure webpack for this....\n\n### react-native-webview\n\nRequires linking?\n\n# Keeping dependencies up-to-date\n\n- `expo upgrade` will upgrade expo sdk and also npm packages to compatable semver.\n- `npm install -g expo-cli` to keep global expo cli up-to-date\n\n(`npx react-native upgrade` when we've diched expo)\n\n# FAQ & Loopholes\n\n## Why style flex:1 on root view?\n\nWhen using a root view it must be stretched to fill the container.\nSee https://reactnavigation.org/docs/troubleshooting/#nothing-is-visible-on-the-screen-after-adding-a-view\n\n## Helpers\n\n- AccessControllComponent\n\n## Overriding default configurations\n\nThe plugin supports overriding different default configurations like styling and translations (i18n).\n\nThis is done by providing props to the root `NblocksProvider` component.\n\nSupported props:\n\n- i18nOverrides\n- colorOverrides\n- styleOverrides\n\nE.g.\n\n```tsx\n<NblocksProvider\n    i18nOverrides={[{lang: 'en', resources: {\"FORGOT_PASSWORD\": \"iForgot?\"}}]}\n    colorOverrides={{primaryColor: 'red'}}\n    styleOverrides={{buttonText: {color: 'black', padding: 10,\n      fontWeight: \"700\"}}}\n>\n      <......>\n</NblocksProvider>\n```\n\n## Contributing\n\nSee the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.\n\n## License\n\n---\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)\n","source":"src/index.tsx","gitHead":"cf46b89b6d87678cf54039f9e1829d278eef38f4","rnx-kit":{"kitType":"library","capabilities":["core","core-android","core-ios","modal","navigation/native","react","react-dom","safe-area","screens","storage","webview"],"reactNativeVersion":"^0.60 || ^0.70","reactNativeDevVersion":"^0.60 || ^0.70"},"scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","example":"yarn --cwd example","prepare":"bob build","bootstrap":"yarn example && yarn","typescript":"tsc --noEmit","npm-publish-beta":"yarn prepare && npm publish --access public --tag beta"},"_npmUser":{"name":"nemanja25","email":"nemanja@nebulr.group"},"deprecated":"Package moved to https://www.npmjs.com/package/@nebulr-group/nblocks-react-native","repository":{"url":"git+https://github.com/nebulr-group/nblocks-react-native.git","type":"git"},"_npmVersion":"6.14.17","description":"This library contains components that allow you to speed up your app development by making use of Nblocks powers in a true plug-n-play manner.","directories":{},"resolutions":{"@types/react":"17.0.2"},"_nodeVersion":"14.20.0","eslintConfig":{"root":true,"parser":"@babel/eslint-parser","extends":["@react-native-community"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"axios":"^0.27.2","react":"18.1.0","eslint":"^8.4.1","lodash":"^4.17.21","graphql":"^15.0.0","i18next":"^21.8.12","date-fns":"^2.28.0","react-dom":"^18.1.0","typescript":"~4.3.5","@babel/core":"^7.12.9","@types/react":"~17.0.21","react-native":"^0.70.0","@types/lodash":"^4.14.182","apollo-client":"^2.6.10","react-i18next":"^11.17.4","@apollo/client":"^3.6.5","react-native-web":"0.17.7","react-native-modal":"^13.0.0","@apollo/react-hooks":"^4.0.0","@types/react-native":"~0.67.6","@babel/eslint-parser":"^7.18.2","@graphql-codegen/cli":"2.6.2","react-native-screens":"^3.14.1","react-native-webview":"^11.23.0","@babel/preset-typescript":"7.18.6","@react-navigation/native":"^6.0.8","react-native-builder-bob":"^0.18.3","@graphql-codegen/typescript":"2.4.11","@react-native-picker/picker":"2.4.4","@react-navigation/native-stack":"^6.6.2","react-native-safe-area-context":"^4.3.1","@react-native-community/eslint-config":"^3.0.2","@graphql-codegen/typescript-operations":"2.4.0","@graphql-codegen/typescript-react-apollo":"3.2.14","@react-native-async-storage/async-storage":"^1.17.10"},"peerDependencies":{"axios":"^0.27","react":"^17 || ^18","lodash":"^4","graphql":"^14 || ^15","i18next":"^21","date-fns":"^2","react-native":">=0.65","apollo-client":"^2","react-i18next":"11.17.4","@apollo/client":"^3","react-native-modal":"^13","@apollo/react-hooks":"^4","react-native-screens":"^3","react-native-webview":"^11","@react-navigation/native":"^6","@react-native-picker/picker":"^2","@react-navigation/native-stack":"^6","@react-native-async-storage/async-storage":"^1"},"_npmOperationalInternal":{"tmp":"tmp/react-native-nblocks_0.1.0-beta.11_1664224601446_0.4211397815865583","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["commonjs"],["module"],["typescript",{"project":"tsconfig.build.json"}]]}}},"time":{"created":"2022-07-06T15:13:41.457Z","modified":"2025-01-31T14:55:02.260Z","0.0.1-beta.1":"2022-07-06T15:13:41.770Z","0.0.1-beta.2":"2022-07-06T15:41:55.462Z","0.0.1-beta.3":"2022-07-06T15:48:08.589Z","0.0.1-beta.4":"2022-07-06T16:10:03.016Z","0.0.1-beta.5":"2022-07-06T16:11:58.833Z","0.0.1-beta.6":"2022-07-06T17:35:36.812Z","0.0.1-beta.7":"2022-07-06T18:06:37.301Z","0.0.1-beta.8":"2022-07-07T11:53:24.859Z","0.0.1-beta.9":"2022-07-07T12:09:29.648Z","0.0.1-beta.10":"2022-07-07T12:16:21.668Z","0.0.1-beta.11":"2022-07-07T15:22:03.356Z","0.0.2-beta.1":"2022-07-08T07:48:14.538Z","0.0.2-beta.2":"2022-07-08T07:59:12.895Z","0.0.2-beta.3":"2022-07-08T08:01:32.727Z","0.0.2-beta.4":"2022-07-08T08:12:48.579Z","0.0.2-beta.6":"2022-07-08T09:17:59.957Z","0.1.0-beta":"2022-09-25T20:35:34.105Z","0.1.0-beta.1":"2022-09-26T08:27:26.002Z","0.1.0-beta.2":"2022-09-26T08:43:29.640Z","0.1.0-beta.3":"2022-09-26T09:49:42.035Z","0.1.0-beta.4":"2022-09-26T09:54:15.326Z","0.1.0-beta.5":"2022-09-26T09:59:49.270Z","0.1.0-beta.6":"2022-09-26T12:30:12.875Z","0.1.0-beta.7":"2022-09-26T12:42:21.777Z","0.1.0-beta.8":"2022-09-26T15:09:04.549Z","0.1.0-beta.9":"2022-09-26T15:14:24.659Z","0.1.0-beta.10":"2022-09-26T15:28:02.247Z","0.1.0-oscar.0":"2022-09-26T15:30:04.953Z","0.1.0-oscar.1":"2022-09-26T15:33:17.358Z","0.1.0-beta.11":"2022-09-26T20:36:41.737Z"},"bugs":{"url":"http://google.com/issues"},"author":{"url":"http://google.com","name":"Oscar","email":"oscar@nebulr.group"},"license":"MIT","homepage":"http://google.com#readme","keywords":["react-native","ios","android"],"repository":{"url":"http://google.com","type":"git"},"description":"test","maintainers":[{"email":"oscar@nebulr.group","name":"0rr3"},{"email":"iman@nebulr.group","name":"imanski"}],"readme":"","readmeFilename":""}