{"_id":"@carpcai/expo-recorder","_rev":"1-f4511fb65f09aa37269118edc06b7908","name":"@carpcai/expo-recorder","dist-tags":{"latest":"0.2.3"},"versions":{"0.2.2":{"name":"@carpcai/expo-recorder","version":"0.2.2","keywords":["react-native","ios","android","recorder","expo","expo-av","audio"],"author":{"url":"https://github.com/carpcai","name":"carp","email":"carp.choi@qq.com"},"license":"MIT","_id":"@carpcai/expo-recorder@0.2.2","maintainers":[{"name":"carpcai","email":"563998753@qq.com"}],"homepage":"https://github.com/carpcai/expo-recorder#readme","bugs":{"url":"https://github.com/carpcai/expo-recorder/issues"},"dist":{"shasum":"55e4bc09644d5ad2b131fb97c62ea4d6d5471b0c","tarball":"https://registry.npmjs.org/@carpcai/expo-recorder/-/expo-recorder-0.2.2.tgz","fileCount":80,"integrity":"sha512-2uTyBYsv5VUcOcl8rsDk3Ri5OKR+O/c1RB2nPe2+XatP5LANUf8vFqmkHFx6EzT/1ERniQj9szMLZxBkoEFzqQ==","signatures":[{"sig":"MEQCIH2HpCfu8KyIlHRsLqjGVa7Wc9QF829e0vDesXXFsGPMAiBZmyWdeSN9bbhl0gtiMeRHVem/zjjEd3wyjYqvyPRqiw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135064},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","gitHead":"7e45b0f104c5ac78d10a662fd7daa8f0c268cf3e","scripts":{"lint":"eslint --fix \"**/*.{js,ts,tsx}\"","test":"jest","tidy":"yarn typecheck && yarn lint && yarn format","clean":"del-cli lib","format":"prettier --write \"**/*.{js,ts,tsx}\"","example":"yarn workspace expo-recorder-example","prepare":"bob build","release":"release-it","typecheck":"tsc --noEmit"},"_npmUser":{"name":"carpcai","email":"563998753@qq.com"},"prettier":{"semi":false,"useTabs":false,"tabWidth":2,"printWidth":100,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"repository":{"url":"git+https://github.com/carpcai/expo-recorder.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.8.1","description":"Audio recorder for your React Native apps ⏺️","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"20.16.0","dependencies":{"expo":"^51.0.26"},"eslintConfig":{"root":true,"rules":{"no-unused-vars":0,"react-hooks/exhaustive-deps":0,"react/no-unstable-nested-components":0},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/"],"react-native":"src/index","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"18.2.0","eslint":"^8.57.0","del-cli":"^5.1.0","expo-av":"^14.0.4","prettier":"^3.0.3","commitlint":"^17.0.2","release-it":"^15.0.0","typescript":"~5.2.0","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"0.74.1","@evilmartians/lefthook":"^1.5.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","react-native-reanimated":"~3.10.1","react-native-builder-bob":"^0.20.0","@react-native/eslint-config":"^0.74.83","react-native-gesture-handler":"~2.16.1","@commitlint/config-conventional":"^17.0.2","@release-it/conventional-changelog":"^5.0.0"},"peerDependencies":{"react":"*","expo-av":"*","react-native":"*","react-native-reanimated":"^3","react-native-gesture-handler":"^2"},"_npmOperationalInternal":{"tmp":"tmp/expo-recorder_0.2.2_1723724559029_0.681525624974807","host":"s3://npm-registry-packages"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.2.3":{"name":"@carpcai/expo-recorder","version":"0.2.3","description":"Audio recorder for your React Native apps ⏺️","main":"lib/commonjs/index","module":"lib/module/index","types":"lib/typescript/src/index.d.ts","react-native":"src/index","source":"src/index","scripts":{"example":"yarn workspace expo-recorder-example","test":"jest","typecheck":"tsc --noEmit","lint":"eslint --fix \"**/*.{js,ts,tsx}\"","format":"prettier --write \"**/*.{js,ts,tsx}\"","tidy":"yarn typecheck && yarn lint && yarn format","clean":"del-cli lib","prepare":"bob build","release":"release-it"},"keywords":["react-native","ios","android","recorder","expo","expo-av","audio"],"repository":{"type":"git","url":"git+https://github.com/carpcai/expo-recorder.git"},"author":{"name":"carp","email":"carp.choi@qq.com","url":"https://github.com/carpcai"},"license":"MIT","bugs":{"url":"https://github.com/carpcai/expo-recorder/issues"},"homepage":"https://github.com/carpcai/expo-recorder#readme","publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@commitlint/config-conventional":"^17.0.2","@evilmartians/lefthook":"^1.5.0","@react-native/eslint-config":"^0.74.83","@release-it/conventional-changelog":"^5.0.0","@types/jest":"^29.5.5","@types/react":"^18.2.44","commitlint":"^17.0.2","del-cli":"^5.1.0","eslint":"^8.57.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","expo-av":"^14.0.4","jest":"^29.7.0","prettier":"^3.0.3","react":"18.2.0","react-native":"0.74.1","react-native-builder-bob":"^0.20.0","react-native-gesture-handler":"~2.16.1","react-native-reanimated":"~3.10.1","release-it":"^15.0.0","typescript":"~5.2.0"},"resolutions":{"@types/react":"^18.2.44"},"peerDependencies":{"expo-av":"*","react":"*","react-native":"*","react-native-gesture-handler":"^2","react-native-reanimated":"^3"},"workspaces":["example"],"packageManager":"yarn@3.6.1","jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"commitMessage":"chore: release ${version}","tagName":"v${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"eslintConfig":{"root":true,"extends":["@react-native","prettier"],"rules":{"no-unused-vars":0,"react-hooks/exhaustive-deps":0,"react/no-unstable-nested-components":0}},"eslintIgnore":["node_modules/","lib/"],"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":2,"trailingComma":"es5","useTabs":false,"printWidth":100,"semi":false},"react-native-builder-bob":{"source":"src","output":"lib","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]},"dependencies":{"expo":"^51.0.26"},"_id":"@carpcai/expo-recorder@0.2.3","gitHead":"e5f4dc59c94eddd5fe34655e00cda4ed3fe2f289","_nodeVersion":"20.16.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-Ykk4uoN7nZKtALJUThD/oXvy80iiEEpF/LlVlFPwo6tlLLGKvkWCvnzBN35trIa7wMuFogBJA0cPuld/j19EHQ==","shasum":"8e9ac88b5d00f747bcfaf9ae415b8c8fede7e7ae","tarball":"https://registry.npmjs.org/@carpcai/expo-recorder/-/expo-recorder-0.2.3.tgz","fileCount":126,"unpackedSize":143168,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD86+6/t8KYeAgmuO6XW7lZKJRNDE4aXO/z4wC6xAgqCQIhAPRXrmpC8HJely+FULHbJoSi/HtqIKP/xIsKYnoTUE3B"}]},"_npmUser":{"name":"carpcai","email":"563998753@qq.com"},"directories":{},"maintainers":[{"name":"carpcai","email":"563998753@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/expo-recorder_0.2.3_1723800318865_0.28303866283647405"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-15T12:22:38.894Z","modified":"2024-08-16T09:25:19.286Z","0.2.2":"2024-08-15T12:22:39.245Z","0.2.3":"2024-08-16T09:25:19.106Z"},"bugs":{"url":"https://github.com/carpcai/expo-recorder/issues"},"author":{"name":"carp","email":"carp.choi@qq.com","url":"https://github.com/carpcai"},"license":"MIT","homepage":"https://github.com/carpcai/expo-recorder#readme","keywords":["react-native","ios","android","recorder","expo","expo-av","audio"],"repository":{"type":"git","url":"git+https://github.com/carpcai/expo-recorder.git"},"description":"Audio recorder for your React Native apps ⏺️","maintainers":[{"name":"carpcai","email":"563998753@qq.com"}],"readme":"# Expo Recorder\n\nAudio recorder for your React Native apps 🎙️<br>\nThis is a wrapper component that implements [Expo Audio](https://docs.expo.dev/versions/latest/sdk/audio/) and features an animated waveform for your recording needs. 💪\n\n<img alt=\"Expo Recorder\" src=\"preview.gif\" width=\"300px\" />\n\n> [!NOTE]\n> This package is mostly subjective and might not fit your use case and/or design.\n>\n> I will try to make this as generic as possible, but if you want a very customized experience, feel free to copy its code and customize it the way you want. Alternatively, you could submit a PR if you think it will help the general public. See the [contributing guide](CONTRIBUTING.md) to get started.\n\n## Installation\n\n```sh\nnpx expo install @hippo_scribe/expo-recorder\n```\n\n### Dependencies\n\n```sh\nnpx expo install expo-av react-native-reanimated react-native-gesture-handler\n```\n\nYou might want to check out the individual installation instructions from this package's dependencies.\n\n* [`expo-av`](https://docs.expo.dev/versions/latest/sdk/av/)\n* [`react-native-reanimated`](https://docs.swmansion.com/react-native-reanimated/)\n* [`react-native-gesture-handler`](https://docs.swmansion.com/react-native-gesture-handler/docs/)\n\n## Usage\n\n```tsx\nimport { View, Button } from 'react-native'\nimport { Recorder, type RecorderRef } from '@lodev09/expo-recorder'\n\nconst App = () => {\n  const recorder = useRef<RecorderRef>(null)\n\n  const startRecord = () => {\n    recorder.current?.startRecording()\n  }\n\n  const stopRecord = () => {\n    recorder.current?.stopRecording()\n  }\n\n  const recordingStopped = (uri?: string) => {\n    console.log(uri) // Save the uri somewhere! 🎉\n  }\n\n  return (\n    <View>\n      <Recorder ref={recorder} onRecordStop={recordingStopped} />\n      <Button title=\"Record\" onPress={startRecord} />\n      <Button title=\"Stop\" onPress={stopRecord} />\n    </View>\n  )\n}\n```\n\nFor complete usage, see [example](example/components/ThemedRecorderSheet.tsx).\n\nAlso check out [`react-native-true-sheet`](https://github.com/lodev09/react-native-true-sheet), the **Bottom Sheet** used in this example.\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\nMIT\n","readmeFilename":"README.md"}