{"_id":"@bmrk/pickle","_rev":"9-37c08398c42d1f8e23ef12050008753e","name":"@bmrk/pickle","dist-tags":{"latest":"1.3.0"},"versions":{"0.1.0":{"name":"@bmrk/pickle","version":"0.1.0","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@0.1.0","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"5f1a5e88b65b1ef93c381aa07f95b14c440ae237","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-0.1.0.tgz","fileCount":19,"integrity":"sha512-FZ7jhrXn2ilrTARgh/85odC8ou220yrOQoh5ffOt4GqI1G9/SPN6ma4nQkgdhZjbuInsmPzCHB/Egsi+Cagkkg==","signatures":[{"sig":"MEQCICvvnItfjnDTsFZoFAXP128ajwH2hFo5XVcP32JH5riUAiAvBdM15ZQARElF7KKeZ2ZGy0OMJOPYDlZ/qe9PGNjyqQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87267},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"ba80f227de752e22b380c4dee792e11ef00cf4b3","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_0.1.0_1730445820544_0.15198584420571404","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@bmrk/pickle","version":"0.2.0","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@0.2.0","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"fa6ca615d4177b4d56c03f9f6bf0c1ed807a4599","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-0.2.0.tgz","fileCount":19,"integrity":"sha512-RQedomO/dLBrsZnBtXjT3K04331Bs6rWWFy4CPDf0UhnZlNYCYC7q/CeVc18x2fT27qniIB6arODrrd8vUBr5w==","signatures":[{"sig":"MEUCIHJKSR+/JOeY4hdCe7c7yU8VvXkK79wx6E+OeQvUdC+3AiEAilmvrl2875fNvVOUmiJj/wpoHsdfDuRe7oAo6VZZO/Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100802},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"77ac35ed870dad4cd8e38a53fa1c7804846644b1","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_0.2.0_1730973603448_0.19347927145416755","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@bmrk/pickle","version":"0.2.1","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@0.2.1","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"d8d72298734ab52ffaa5101bf97d7f8f32d71b34","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-0.2.1.tgz","fileCount":19,"integrity":"sha512-gbHdBQTgeoQoNtKsCyXQDuN2W7hU7vNuyCrDUf3u2wWT/V5eHjmXsKB63CVdV2I4qkZjYHw21axMlZbbAr1etw==","signatures":[{"sig":"MEQCIDMFlVFkSTkIECim8pw5wIE1hAm/E2SsrWoDNvG/zM33AiAXN/kp4gg3g1BRByNqVp+T8bK5mqlfU3JoKmWleEwMmg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100808},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"1965203ea917c74959cdf9522a9600f666ea033f","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_0.2.1_1730973752845_0.12922819310013445","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@bmrk/pickle","version":"0.3.0","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@0.3.0","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"b264fe219bf2a6842c7c6653f45bd70f8193d0b3","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-0.3.0.tgz","fileCount":19,"integrity":"sha512-LtkbYCEFOp6TG7IhDfmC/DkVTTRAS0itTg16Px/HJ/t5uig+AXbVVv153EQW0Qz7Bwlkextksw7mbs5MFcusXA==","signatures":[{"sig":"MEQCICbuL7AJR3FMQAqF+13WcRb8WeanrDOea/ETkV7NXumZAiAK+rs5b+Ny5t7IfbOlID5Af2uCvgj7SrHJIlMvv4JVDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":94715},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"d484ff2dbe7192a5cbbc574e0521e749a798f343","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_0.3.0_1732910148004_0.6719606521351622","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@bmrk/pickle","version":"1.0.0","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@1.0.0","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"66aaf6f0dfcf21bfdb481ac15ea1533ee005379e","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-1.0.0.tgz","fileCount":19,"integrity":"sha512-t8r4DKM5FZuihTxw96zOpUFmT7v0DvZm/jrA0MqvLe/MUEIS1ccWhrJ0/21X+w4o4ta9sB36jsHjp8wXcF/CjA==","signatures":[{"sig":"MEYCIQDeK/wRaHmFzzMjX5wS5FK1oSz1rVapVCH22xE5M3jMBgIhAMW9evQL/Jjvkpsvs+juM1PjPO/VRcWFcjaMyMfiBpXS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":94715},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"4bb3b8f7b5e546c904453b8f9d10f3ccb7bb4562","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_1.0.0_1734433692030_0.8390601852629187","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bmrk/pickle","version":"1.1.0","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@1.1.0","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"ea45d656aecb68bcbe5fada7e0840cf6ebad6177","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-1.1.0.tgz","fileCount":19,"integrity":"sha512-adTDc/53gIKaaWkT2Dtu35ilhFEvLPYE9V4PM9UdBlzeShmZ1NGp3QbaeHGkVdmPtnCsAIBXdAr+3N1GWhgeXg==","signatures":[{"sig":"MEUCIQDBcVPOVNsiY5srLlWFFDLl6xnTuh3I88dIZw8+7m2Z0AIgUlBHbfbnfiWv+64uRJw+CE5O06GNXTpzIffLMF6Noys=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96362},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"0872d10cffba986b14652b876e77e3cb79f33d37","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_1.1.0_1734814921555_0.03764620071193758","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@bmrk/pickle","version":"1.1.1","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@1.1.1","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"f37e477b84650d1a9fa099014756ba5de79f0b88","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-1.1.1.tgz","fileCount":19,"integrity":"sha512-WzsoOMKIu/c1oGTGmY57qsns5JRBT9oySYdI9dGCxsWxoM+5PUyq1ADWhMwrWUxJI7+tlBOGzcImmVL4N8jcDA==","signatures":[{"sig":"MEYCIQD7zJdd0afWDGtjFGrfqhYOO+hv5YfXR9AWGFK4QJA81AIhAOevBSZ8+WOJcx0UobrdGx01xOpk/oy/vhRcVENIT20g","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96422},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"e5bc82b75428f763a788101a26a4fb97500533ee","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_1.1.1_1734971998794_0.05705742456404117","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@bmrk/pickle","version":"1.1.2","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@1.1.2","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"14259dabe05ab2a7e97871bffc9f4d914f56a38f","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-1.1.2.tgz","fileCount":19,"integrity":"sha512-nrAU4+nFJI1CMw3d4s4zer5Y28CoMNhWrC/eEJNXmFJqygf1mm5Nd1Ypp1LoQhxNq7YY5dKXqRAbNJ8jcFnkUw==","signatures":[{"sig":"MEQCIAcuNloEUvauoL+dNsJmA0GPust7+NXv1PCfRIlkO5CcAiAgk/R+lLRVjTN2yVkljf/sPkBdiRxucWdcDTixv2zF8A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96520},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"faf765e50d13df99347fc371b6162a540476d977","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_1.1.2_1735989799865_0.8079355982201786","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bmrk/pickle","version":"1.2.0","author":{"name":"Enzo Bomark"},"license":"MIT","_id":"@bmrk/pickle@1.2.0","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"dist":{"shasum":"cc62a99546aa490444f199893fbcd4cc93321b3d","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-1.2.0.tgz","fileCount":19,"integrity":"sha512-DZWO1oVUJL0A1f5XhFNN7aOSmAslkDpISRDVRwPeQgS3t4GDyky8qYDwNM1YVTNJZoHxjFiY6NNKJri+oJFI5Q==","signatures":[{"sig":"MEUCIEzdx8OYgsf/+otcz051K5Wj2REG9+wTzLwfJF5C+dNMAiEAweNHlk4gTmcmM4+lcrvC15ng7nLK+OPw1W7IWATm5nQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94544},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"npm":"please-use-pnpm","node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm"},"gitHead":"18c67c62d1925cf11c0283ac359f8fd7086cbbb3","scripts":{"test":"jest","build":"tsc","prepublish":"tsc","test:watch":"jest --watch"},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"_npmVersion":"9.6.7","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"packageManager":"pnpm@8.15.6","devDependencies":{"jest":"^29.7.0","eslint":"^9.11.0","ts-node":"^10.9.2","@swc/cli":"0.4.0","prettier":"^3.3.3","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.5.5","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.6.0","@typescript-eslint/eslint-plugin":"^8.6.0"},"_npmOperationalInternal":{"tmp":"tmp/pickle_1.2.0_1737885135048_0.7221053277976526","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bmrk/pickle","author":{"name":"Enzo Bomark"},"version":"1.3.0","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","license":"MIT","main":"./dist/index.js","types":"./dist/index.d.ts","packageManager":"pnpm@8.15.6","engines":{"node":"^20.12.0","pnpm":"8.15.6","yarn":"please-use-pnpm","npm":"please-use-pnpm"},"scripts":{"prepublish":"tsc","test:watch":"jest --watch","test":"jest","build":"tsc"},"devDependencies":{"@swc/cli":"0.4.0","@swc/core":"^1.7.26","@swc/jest":"^0.2.36","@types/jest":"^29.5.13","@types/node":"^22.5.5","@typescript-eslint/eslint-plugin":"^8.6.0","@typescript-eslint/parser":"^8.6.0","eslint":"^9.11.0","eslint-config-prettier":"^9.1.0","jest":"^29.7.0","prettier":"^3.3.3","ts-node":"^10.9.2","typescript":"^5.6.2"},"gitHead":"dd9b1fd5dedaac03cd99871b9bed5d4445ea7fe5","_id":"@bmrk/pickle@1.3.0","_nodeVersion":"18.17.1","_npmVersion":"9.6.7","dist":{"integrity":"sha512-Zm6dtkCES3lY+qY+N85sZ9YVPKUIXzXh6efrljN6zFiGF57lWMxxeP7h0hh4yAJDY88o/iOab0X5vWcShJ8osA==","shasum":"83a4aea81167e65d820180b38ffc8f56e0385dda","tarball":"https://registry.npmjs.org/@bmrk/pickle/-/pickle-1.3.0.tgz","fileCount":19,"unpackedSize":96034,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDDVrOfs7/51U00hvg8MIkUazVHYchDh153AFsjqeUQ8gIhAJzoy8Jr/Rvg9XKPCjUVjl3x1thklojZfrT+8JF+Yusi"}]},"_npmUser":{"name":"enzobomark","email":"enzo.boma@hotmail.com"},"directories":{},"maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pickle_1.3.0_1738490043383_0.6655788821781294"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-01T07:23:40.439Z","modified":"2025-02-02T09:54:03.775Z","0.1.0":"2024-11-01T07:23:40.731Z","0.2.0":"2024-11-07T10:00:03.598Z","0.2.1":"2024-11-07T10:02:33.019Z","0.3.0":"2024-11-29T19:55:48.176Z","1.0.0":"2024-12-17T11:08:12.190Z","1.1.0":"2024-12-21T21:02:01.745Z","1.1.1":"2024-12-23T16:39:58.975Z","1.1.2":"2025-01-04T11:23:20.055Z","1.2.0":"2025-01-26T09:52:15.206Z","1.3.0":"2025-02-02T09:54:03.549Z"},"author":{"name":"Enzo Bomark"},"license":"MIT","description":"Result<Ok, Err> and Option<Some>, implemented for TypeScript.","maintainers":[{"name":"enzobomark","email":"enzo.boma@hotmail.com"}],"readme":"# Result and Option Utilities for TypeScript\n\n⚠️ This package is not production-ready yet, and the API is subject to change. If you want to use it, please download the source code and include it in your project. ⚠️\n\nThe `Result` and `Option` utilities are designed to improve error handling and value management in TypeScript by providing a more functional approach. These utilities help you avoid common pitfalls associated with exceptions and null/undefined values.\n\n## Purpose\n\nPickle draws inspiration from the error-handling patterns of languages like Rust, where Result and Option types enable more expressive and type-safe management of errors and uncertain values. While this implementation is not a direct 1:1 port from any specific language—given that JavaScript and TypeScript lack native support for Result and Option types—the goal is to introduce some of their advantages into your codebase. Designed to integrate seamlessly with TypeScript's type system, this library enhances the developer experience by improving the handling of errors and uncertain values.\n\nFor asynchronous tasks, Pickle provides an `AsyncResult` helper that wraps a `Promise<Result<T, E>>`, offering the same level of expressivity and control as a standard `Result<T, E>`.\n\n### Table of contents\n\n<details>\n<summary>Result</summary>\n\n- [Core](#result-core)\n  - [unsafe](#unsafe)\n  - [okOr](#okOr)\n  - [okOrElse](#okOrElse)\n  - [okOrThrow](#okOrThrow)\n  - [errorOr](#errorOr)\n  - [errorOrElse](#errorOrElse)\n  - [errorOrThrow](#errorOrThrow)\n  - [tuple](#tuple)\n- [Pipable methods](#pipable-methods)\n  - [or](#or)\n  - [map](#map)\n  - [flatMap](#flatMap)\n  - [mapErr](#mapErr)\n  - [flatMapErr](#flatMapErr)\n  - [filter](#filter)\n  - [toOption](#toOption)\n  - [effect](#effect)\n  - [effectErr](#effectErr)\n- [Static methods](#static-methods)\n  - [is](#is)\n  - [ok](#ok)\n  - [err](#err)\n  - [safe](#safe)\n  - [all](#all)\n  - [any](#any)\n  - [from](#from)\n  - [fromNullable](#fromNullable)\n  - [async](#async)\n  </details>\n\n<details>\n<summary>Option</summary>\n\n- [Core](#option-core)\n  - [unsafe](#unsafe-1)\n  - [someOr](#someOr)\n  - [someOrElse](#someOrElse)\n  - [someOrThrow](#someOrThrow)\n  - [noneOr](#noneOr)\n  - [noneOrElse](#noneOrElse)\n  - [noneOrThrow](#noneOrThrow)\n- [Pipable methods](#pipable-methods-1)\n  - [or](#or-1)\n  - [map](#map-1)\n  - [flatMap](#flatMap-1)\n  - [filter](#filter-1)\n  - [toResult](#toResult)\n  - [effect](#effect-1)\n  - [effectNone](#effectNone)\n- [Static methods](#static-methods-1)\n  - [is](#is-1)\n  - [some](#some)\n  - [none](#none)\n  - [safe](#safe-1)\n  - [all](#all-1)\n  - [any](#any-1)\n  - [from](#from)\n  - [fromNullable](#fromNullable-1)\n  </details>\n\n## Result\n\nA Result represents either something good (`T`) or something not so good (`E`).\nIf we hold a value of type `Result<T, E>` we know it's either `Ok<T>` or\n`Err<E>`.\n\n### Result core\n\n```typescript\nimport { Result } from '@bmrk/pickle';\n\nfunction divide(x: number, by: number): Result<number, string> {\n  return by === 0 ? Result.err('Division by zero') : Result.ok(x / by);\n}\n\nconst okResult = divide(100, 20);\nconst errResult = divide(100, 0);\n```\n\n#### Unsafe\n\nReturns the contained `Ok` or `Err` value.\n\n```typescript\nconst res: number | string = okResult.unsafe();\nassert.equal(res, 5);\n\nconst res: number | string = errResult.unsafe();\nassert.equal(res, 'Division by zero');\n```\n\n#### OkOr\n\nReturns the contained `Ok` value or a provided fallback.\n\n```typescript\nconst res: number = okResult.okOr(0);\nassert.equal(res, 5);\n\nconst res: number = errResult.okOr(0);\nassert.equal(res, 0);\n```\n\n#### OkOrElse\n\nReturns the contained `Ok` value or computes a fallback.\n\n```typescript\nconst res: number = okResult.okOrElse(() => 0);\nassert.equal(res, 5);\n\nconst res: number = errResult.okOrElse(() => 0);\nassert.equal(res, 0);\n```\n\n#### OkOrThrow\n\nReturns the contained `Ok` value or throws an error.\n\n```typescript\nconst res: number = okResult.okOrThrow((err) => err);\nassert.equal(res, 5);\n\nconst res: number = errResult.okOrThrow((err) => err); // Throws \"Division by zero\"\n```\n\n#### ErrorOr\n\nReturns the contained `Err` value or a provided fallback.\n\n```typescript\nconst res: string = okResult.errorOr('Succesfully divided');\nassert.equal(res, 'Succesfully divided');\n\nconst res: string = errResult.errorOr('Succesfully divided');\nassert.equal(res, 'Division by zero');\n```\n\n#### ErrorOrElse\n\nReturns the contained `Err` value or computes a fallback.\n\n```typescript\nconst res: string = okResult.errorOrElse(() => 'Succesfully divided');\nassert.equal(res, 'Succesfully divided');\n\nconst res: string = errResult.errorOrElse(() => 'Succesfully divided');\nassert.equal(res, 'Division by zero');\n```\n\n#### ErrorOrThrow\n\nReturns the contained `Err` value or throws an error.\n\n```typescript\nconst res: string = okResult.errorOrThrow(() => 'Expected division by zero!'); // Throws \"Expected division by zero!\"\n\nconst res: string = errResult.errorOrThrow(() => 'Expected division by zero!');\nassert.equal(res, 'Division by zero');\n```\n\n#### Tuple\n\nConverts the `Result` into a tuple.\n\n```typescript\nconst [ok, err] = okResult.tuple();\nassert.equal(ok, 5);\nassert.equal(err, null);\n\nconst [ok, err] = errResult.tuple();\nassert.equal(ok, null);\nassert.equal(err, 'Division by zero');\n```\n\n### Pipable methods\n\n#### Or\n\nReturns the contained `Ok` value or the provided `Result`.\n\n```typescript\nconst res: Result<number, string> = okResult.or(Result.ok(0));\nassert.equal(res.unsafe(), 5);\n\nconst res: Result<number, string> = errResult.or(Result.ok(0));\nassert.equal(res.unsafe(), 0);\n```\n\n#### Map\n\nMaps a `Result<Ok, Err>` to `Result<NewOk, Err>` by applying a function to a contained `Ok` value, leaving an `Err` value untouched.\n\n```typescript\nconst res: Result<number, string> = okResult.map((num) => num * 2);\nassert.equal(res.unsafe(), 10);\n\nconst res: Result<number, string> = errResult.map((num) => num * 2);\nassert.equal(res.unsafe(), 'Division by zero');\n```\n\n#### FlatMap\n\nMaps a `Result<Ok, Err>` to `Result<NewOk, Err>` by applying a function to a contained `Ok` value, flattening the `Err` value.\n\n```typescript\nconst res: Result<number, string> = okResult.flatMap((num) =>\n  Result.ok(num * 2)\n);\nassert.equal(res.unsafe(), 10);\n\nconst res: Result<number, string> = errResult.flatMap((num) =>\n  Result.ok(num * 2)\n);\nassert.equal(res.unsafe(), 'Division by zero');\n```\n\n#### MapErr\n\nMaps a `Result<Ok, Err>` to `Result<Ok, NewErr>` by applying a function to a contained `Err` value, leaving an `Ok` value untouched.\n\n```typescript\nconst res: Result<number, string> = okResult.mapErr((err) => `Error: ${err}`);\nassert.equal(res.unsafe(), 5);\n\nconst res: Result<number, string> = errResult.mapErr((err) => `Error: ${err}`);\nassert.equal(res.unsafe(), 'Error: Division by zero');\n```\n\n#### FlatMapErr\n\nMaps a `Result<Ok, Err>` to `Result<Ok, NewErr>` by applying a function to a contained `Err` value, flattening the `Ok` value.\n\n```typescript\nconst res: Result<number, string> = okResult.flatMapErr((err) =>\n  Result.err(`Error: ${err}`)\n);\nassert.equal(res.unsafe(), 5);\n\nconst res: Result<number, string> = errResult.flatMapErr((err) =>\n  Result.err(`Error: ${err}`)\n);\nassert.equal(res.unsafe(), 'Error: Division by zero');\n```\n\n#### Filter\n\nConverts the `Result` into an `Option`.\n\n```typescript\nconst res: Option<number> = okResult.filter((num) => num === 5);\nassert.equal(res.isSome, true);\nassert.equal(res.unsafe(), 5);\n\nconst res: Option<number> = okResult.filter((num) => num === 10);\nassert.equal(res.isNone, true);\nassert.equal(res.unsafe(), null);\n```\n\n#### ToOption\n\nConverts the `Result` into an `Option`.\n\n```typescript\nconst res: Option<number> = okResult.toOption();\nassert.equal(res.isSome, true);\nassert.equal(res.unsafe(), 5);\n\nconst res: Option<number> = errResult.toOption();\nassert.equal(res.isNone, true);\nassert.equal(res.unsafe(), null);\n```\n\n#### Effect\n\nPerform side-effects from the `Ok` value without changing the result.\n\n```typescript\nconst res = okResult.effect((num) => nitification(num)); // Fire and forget the notification function\nassert.equal(res.unsafe(), 5);\n\nconst res = errResult.effect((num) => nitification(num)); // Does execute the notification function\nassert.equal(res.unsafe(), 'Division by zero');\n```\n\n#### EffectErr\n\nPerform side-effects from the `Err` value without changing the result.\n\n```typescript\nconst res = okResult.effectErr((err) => notification(err)); // Does not execute the notification function\nassert.equal(res.unsafe(), 5);\n\nconst res = errResult.effectErr((err) => notification(err)); // Fire and forget the notification function\nassert.equal(res.unsafe(), 'Division by zero');\n```\n\n### Static methods\n\n#### Is\n\nReturns `true` if `input` is a `Result`.\n\n```typescript\nconst res: boolean = Result.is(okResult);\nassert.equal(res, true);\n```\n\n#### Ok\n\nReturns a `Result` with an `Ok` value.\n\n```typescript\nconst res: Result<number, never> = Result.ok(5);\nassert.equal(res.unsafe(), 5);\n```\n\n#### Err\n\nReturns a `Result` with an `Err` value.\n\n```typescript\nconst res: Result<never, string> = Result.err('Error');\nassert.equal(res.unsafe(), 'Error');\n```\n\n#### Safe\n\nReturns a `Result` with the result of a promise.\n\n```typescript\nconst res: Result<number, string> = await Result.safe(() => Promise.resolve(5));\nassert.equal(res.unsafe(), 5);\n\nconst res: Result<number, string> = await Result.safe(() =>\n  Promise.reject('Error')\n);\nassert.equal(res.unsafe(), 'Error');\n```\n\n#### All\n\nReturns a `Result` with an array of `Ok` values or the first `Err` value.\n\n```typescript\nconst res: Result<[number, number], never> = Result.all(\n  Result.ok(1),\n  Result.ok(2)\n);\nassert.deepEqual(res.unsafe(), [1, 2]);\n\nconst res: Result<[number, never], string> = Result.all(\n  Result.ok(1),\n  Result.err('Error')\n);\nassert.equal(res.unsafe(), 'Error');\n```\n\n#### Any\n\nReturns a `Result` with the first `Ok` value or an array of `Err` values.\n\n```typescript\nconst res: Result<number, [never, string]> = Result.any(\n  Result.ok(1),\n  Result.err('Error')\n);\nassert.equal(res.unsafe(), 1);\n\nconst res: Result<never, [string, string]> = Result.any(\n  Result.err('Error 1'),\n  Result.err('Error 2')\n);\nassert.deepEqual(res.unsafe(), ['Error 1', 'Error 2']);\n```\n\n#### From\n\nReturns a `Result` with an `Ok` value if `value` is truthy, otherwise an `Err` value.\n\n```typescript\nconst res: Result<number, string> = Result.from(5);\nassert.equal(res.isOk, true);\n\nconst res: Result<number, string> = Result.from(0);\nassert.equal(res.isErr, true);\n```\n\n#### FromNullable\n\nReturns a `Result` with an `Ok` value if `value` is not null, otherwise an `Err` value.\n\n```typescript\nconst res: Result<number, string> = Result.fromNullable(5);\nassert.equal(res.isOk, true);\n\nconst res: Result<number, string> = Result.fromNullable(null);\nassert.equal(res.isErr, true);\n```\n\n#### Async\n\nReturns `AsyncResult`.\n\n```typescript\nconst res: Result<number, string> = await Result.async(\n  Promise.resolve(Result.ok(5))\n).map((num) => num * 2);\nassert.equal(res.unsafe(), 10);\n```\n\n## Option\n\nAn Option represents either something, or nothing. If we hold a value of type `Option<T>`, we know it is either `Some<T>` or `None`.\n\n### Option core\n\n```typescript\nimport { Option } from '@bmrk/pickle';\n\nfunction divide(x: number, by: number): Option<number> {\n  return by === 0 ? Option.none : Option.some(x / by);\n}\n\nconst someOption = divide(100, 20);\nconst noneOption = divide(100, 0);\n```\n\n#### Unsafe\n\nReturns the contained `Some` or `None` value.\n\n```typescript\nconst res: number = someOption.unsafe();\nassert.equal(res, 5);\n\nconst res: number = noneOption.unsafe();\nassert.equal(res, null);\n```\n\n#### SomeOr\n\nReturns the contained `Some` value or a provided fallback.\n\n```typescript\nconst res: number = someOption.someOr(0);\nassert.equal(res, 5);\n\nconst res: number = noneOption.someOr(0);\nassert.equal(res, 0);\n```\n\n#### SomeOrElse\n\nReturns the contained `Some` value or computes a fallback.\n\n```typescript\nconst res: number = someOption.someOrElse(() => 0);\nassert.equal(res, 5);\n\nconst res: number = noneOption.someOrElse(() => 0);\nassert.equal(res, 0);\n```\n\n#### SomeOrThrow\n\nReturns the contained `Some` value or throws an error.\n\n```typescript\nconst res: number = someOption.someOrThrow(() => 'Division by zero!');\nassert.equal(res, 5);\n\nconst res: number = noneOption.someOrThrow(() => 'Division by zero!'); // Throws \"Division by zero!\"\n```\n\n#### NoneOr\n\nReturns the contained `None` value or a provided fallback.\n\n```typescript\nconst res: number = someOption.noneOr(0);\nassert.equal(res, 0);\n\nconst res: number = noneOption.noneOr(0);\nassert.equal(res, 0);\n```\n\n#### NoneOrElse\n\nReturns the contained `None` value or computes a fallback.\n\n```typescript\nconst res: number = someOption.noneOrElse(() => 0);\nassert.equal(res, 0);\n\nconst res: number = noneOption.noneOrElse(() => 0);\nassert.equal(res, 0);\n```\n\n#### NoneOrThrow\n\nReturns the contained `None` value or throws an error.\n\n```typescript\nconst res: number = someOption.noneOrThrow(() => 'Expected division by zero!'); // Throws \"Expected division by zero!\"\n\nconst res: number = noneOption.noneOrThrow(() => 'Expected division by zero!');\nassert.equal(res, 0);\n```\n\n### Pipable methods\n\n#### Or\n\nReturns the contained `Some` value or the provided `Option`.\n\n```typescript\nconst res: Option<number> = someOption.or(Option.some(0));\nassert.equal(res.unsafe(), 5);\n\nconst res: Option<number> = noneOption.or(Option.some(0));\nassert.equal(res.unsafe(), 0);\n```\n\n#### Map\n\nMaps a `Option<Some, None>` to `Option<NewSome, None>` by applying a function to a contained `Some` value, leaving an `None` value untouched.\n\n```typescript\nconst res: Option<number> = someOption.map((num) => num * 2);\nassert.equal(res.unsafe(), 10);\n\nconst res: Option<number> = noneOption.map((num) => num * 2);\nassert.equal(res.unsafe(), null);\n```\n\n#### FlatMap\n\nMaps a `Option<Some, None>` to `Option<NewSome, None>` by applying a function to a contained `Some` value, flattening the `None` value.\n\n```typescript\nconst res: Option<number> = someOption.flatMap((num) => Option.some(num * 2));\nassert.equal(res.unsafe(), 10);\n\nconst res: Option<number> = noneOption.flatMap((num) => Option.some(num * 2));\nassert.equal(res.unsafe(), null);\n```\n\n#### Filter\n\nReturns an `Option` with a `Some` value or an `None` value.\n\n```typescript\nconst res: Option<number> = someOption.filter((num) => num === 5);\nassert.equal(res.unsafe(), 5);\n\nconst res: Option<number> = someOption.filter((num) => num === 10);\nassert.equal(res.unsafe(), null);\n```\n\n#### ToResult\n\nConverts the `Option` into a `Result`.\n\n```typescript\nconst res: Result<number, string> = someOption.toResult('No value');\nassert.equal(res.unsafe(), 5);\n\nconst res: Result<number, string> = noneOption.toResult('No value');\nassert.equal(res.unsafe(), 'No value');\n```\n\n#### Effect\n\nPerform side-effects from the `Some` value without changing the option.\n\n```typescript\nconst res = someOption.effect((num) => notification(num)); // Fire and forget the notification function\nassert.equal(res.unsafe(), 5);\n\nconst res = noneOption.effect((num) => notification(num)); // Does not execute the notification function\nassert.equal(res.unsafe(), null);\n```\n\n#### EffectNone\n\nPerform side-effects if the option is `None` without changing the option.\n\n```typescript\nconst res = someOption.effectNone(() => notification()); // Does not execute the notification function\nassert.equal(res.unsafe(), 5);\n\nconst res = noneOption.effectNone(() => notification()); // Fire and forget the notification function\nassert.equal(res.unsafe(), null);\n```\n\n### Static methods\n\n#### Is\n\nReturns `true` if `input` is an `Option`.\n\n```typescript\nconst res: boolean = Option.is(someOption);\nassert.equal(res, true);\n```\n\n#### Some\n\nReturns an `Option` with a `Some` value.\n\n```typescript\nconst res: Option<number> = Option.some(5);\nassert.equal(res.unsafe(), 5);\n```\n\n#### None\n\nReturns an `Option` with a `None` value.\n\n```typescript\nconst res: Option<number> = Option.none;\nassert.equal(res.unsafe(), null);\n```\n\n#### Safe\n\nReturns an `Option` with the result of a promise.\n\n```typescript\nconst res: Option<number> = await Option.safe(() => Promise.resolve(5));\nassert.equal(res.unsafe(), 5);\n\nconst res: Option<number> = await Option.safe(() => Promise.reject('Error'));\nassert.equal(res.unsafe(), null);\n```\n\n#### All\n\nReturns an `Option` with an array of `Some` values or the first `None` value.\n\n```typescript\nconst res: Option<number[]> = Option.all(Option.some(1), Option.some(2));\nassert.deepEqual(res.unsafe(), [1, 2]);\n\nconst res: Option<number[]> = Option.all(Option.some(1), Option.none);\nassert.equal(res.unsafe(), null);\n```\n\n#### Any\n\nReturns an `Option` with the first `Some` value or an array of `None` values.\n\n```typescript\nconst res: Option<number> = Option.any(Option.some(1), Option.none);\nassert.equal(res.unsafe(), 1);\n\nconst res: Option<number> = Option.any(Option.none, Option.none);\nassert.equal(res.unsafe(), null);\n```\n\n#### From\n\nReturns an `Option` with a value.\n\n```typescript\nconst res: Option<number> = Option.from(5);\nassert.equal(res.unsafe(), 5);\n```\n\n#### FromNullable\n\nReturns an `Option` with a value if it is not `null`.\n\n```typescript\nconst res: Option<number> = Option.fromNullable(5);\nassert.equal(res.unsafe(), 5);\n\nconst res: Option<number> = Option.fromNullable(null);\nassert.equal(res.unsafe(), null);\n```\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request on GitHub.\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Special Thanks\n\nSpecial thanks to my friend [Emric](https://github.com/Istanful) for the name suggestion.\n\"To remove rust chemically, the workpieces can be pickled.\"\n","readmeFilename":"README.md"}