{"_id":"@carbonteq/fp","_rev":"26-24cae734dbbe4fc4c77c785857c4aca8","name":"@carbonteq/fp","dist-tags":{"alpha":"0.8.0-alpha.6","latest":"0.10.0"},"versions":{"0.2.0":{"name":"@carbonteq/fp","version":"0.2.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.2.0","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"71a9b3fb92831fda5d71addcd85f9c46e9eb6e4d","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.2.0.tgz","fileCount":12,"integrity":"sha512-exNbPkyNoaKuT/30n7fa0pFKjP0brsUTfDTJvKxHNzIt7mTezbgr3NzoI8ltBubDKprhsS7+pwlgCBQd3U7zog==","signatures":[{"sig":"MEYCIQCVFa53urK8vDpm2OpBqRvYymB6l/AB4yqWOXgaDRmUWgIhAPtV6zP+FVwlxgPk89IJewk8trqWY9UGr3VAsez8pW7W","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19051},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"c7e6ed9ef5f9a71e70f579daac1e02402732e8c1","scripts":{"ci":"rome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"rome format src tests --write","lint":"rome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"rome format src tests","release":"changeset publish","lint:fix":"rome check src tests --apply-unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"9.5.1","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.5.0","rome":"^12.1.3","rimraf":"^5.0.1","rollup":"^3.23.1","@swc/core":"^1.3.62","@swc/jest":"^0.2.26","changesets":"^1.0.2","typescript":"^5.1.3","@types/jest":"^29.5.2","@types/node":"^20.2.5","jest-extended":"^4.0.0","@changesets/cli":"^2.26.1","rollup-plugin-swc3":"^0.8.2","rollup-plugin-node-externals":"^6.1.1","rollup-plugin-typescript-paths":"^1.4.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.2.0_1686013520831_0.9188822117895621","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@carbonteq/fp","version":"0.3.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.3.0","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"f5c34d998120b67adb0af7bf1b48726bc89d5699","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.3.0.tgz","fileCount":14,"integrity":"sha512-SDTgrF9njkXXFwExKDAZFn2LsNQ7xeemgdoGIuxgzZm2syBDFFvbuNTjIDnuf/LrzgKKCFeedQaRt5N4tTPI5w==","signatures":[{"sig":"MEYCIQCOCiKDTNHtq9vseiD8V4aLc36nN1RrD/j1zsXbe75zcgIhANLqLn93kDxtQESHgdfSqDZlV3cUUjtOGHG+L1KpFB90","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20194},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"9110891754794b51465e593de9702515f30596e2","scripts":{"ci":"rome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"rome format src tests --write","lint":"rome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"rome format src tests","release":"changeset publish","lint:fix":"rome check src tests --apply-unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"9.5.1","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.5.0","rome":"^12.1.3","rimraf":"^5.0.1","rollup":"^3.23.1","@swc/core":"^1.3.62","@swc/jest":"^0.2.26","changesets":"^1.0.2","typescript":"^5.1.3","@types/jest":"^29.5.2","@types/node":"^20.2.5","jest-extended":"^4.0.0","@changesets/cli":"^2.26.1","rollup-plugin-swc3":"^0.8.2","rollup-plugin-node-externals":"^6.1.1","rollup-plugin-typescript-paths":"^1.4.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.3.0_1686237113805_0.7321443015775617","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@carbonteq/fp","version":"0.3.1","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.3.1","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"84f883f7358e3b458f6bf4e892f4bbfc8ef8d564","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.3.1.tgz","fileCount":14,"integrity":"sha512-ut3ZJ4l4OsM6GamO+i51Xp7e66MegQ/yORkc2Wxdb4l1CzBqW0ACZLhEYLh5T4HxOHWX9ghWZ9N0DzzHH47Xqg==","signatures":[{"sig":"MEUCIQDVpL+JkAuZidSQ6e+UxU5DN1XowTQs/u3fpADBgeluVQIgRwSJvoHPe//qV55Dn/V26MPOIvfU0g+Q20zDHA+8UmI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20262},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"c290a5d07039d40411ff46e8a9ae15d501904c66","scripts":{"ci":"rome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"rome format src tests --write","lint":"rome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"rome format src tests","release":"changeset publish","lint:fix":"rome check src tests --apply-unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"9.5.1","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.5.0","rome":"^12.1.3","rimraf":"^5.0.1","rollup":"^3.23.1","@swc/core":"^1.3.62","@swc/jest":"^0.2.26","changesets":"^1.0.2","typescript":"^5.1.3","@types/jest":"^29.5.2","@types/node":"^20.2.5","jest-extended":"^4.0.0","@changesets/cli":"^2.26.1","rollup-plugin-swc3":"^0.8.2","rollup-plugin-node-externals":"^6.1.1","rollup-plugin-typescript-paths":"^1.4.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.3.1_1686237619624_0.021945075310692008","host":"s3://npm-registry-packages"}},"0.3.2":{"name":"@carbonteq/fp","version":"0.3.2","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.3.2","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"4c6b2c56b60ac892238135b6ac6e461baba086b9","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.3.2.tgz","fileCount":14,"integrity":"sha512-qyQFDhWBV0H+Wzw6M/IFMfO0rOpIpS1UQ2Z5TLcE7A+jmpiyQAdRdec/otTHCCOX7PkcerO5TdQWis5FU1iSiQ==","signatures":[{"sig":"MEUCIQDPsYiN2ItAXzdPMBhk3VclsgzZX707XrI+54vtKnH/GAIgCgOAlmk6SMbtBZOnPmL8GsiYlfxJPoSdD723vxHvXeE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20563},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"4c1b708b09a19d7b28cccba5129dbe480c84af5c","scripts":{"ci":"rome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"rome format src tests --write","lint":"rome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"rome format src tests","release":"changeset publish","lint:fix":"rome check src tests --apply-unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"9.5.1","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.5.0","rome":"^12.1.3","rimraf":"^5.0.1","rollup":"^3.23.1","@swc/core":"^1.3.62","@swc/jest":"^0.2.26","changesets":"^1.0.2","typescript":"^5.1.3","@types/jest":"^29.5.2","@types/node":"^20.2.5","jest-extended":"^4.0.0","@changesets/cli":"^2.26.1","rollup-plugin-swc3":"^0.8.2","rollup-plugin-node-externals":"^6.1.1","rollup-plugin-typescript-paths":"^1.4.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.3.2_1686538313060_0.9241754716633661","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@carbonteq/fp","version":"0.4.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.4.0","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"567c84f81824565b9a3f3c4dec75c226c1fb1fb9","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.4.0.tgz","fileCount":14,"integrity":"sha512-MbU+Ry5B1h3giNhAJ7cYmQjv394bbtqxkeOzOiyU67nMxY8HwXkiYvONJrCE1qfZfJDSN07GOuI04V1tmE3ssA==","signatures":[{"sig":"MEUCIC9D4jtWfq5u7/cs08j4pOyovnoUTvHFbRKkcL7HasL1AiEAgL7e+QaCnHZuY5T6zfsjyZJbmlyy+sDEAQKpHZzZSyo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27572},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"ad1836d7882c02f26681aca1dff6a14ae15f1edc","scripts":{"ci":"biome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"biome format src tests --write","lint":"biome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.7.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.7","rollup":"^4.18.0","@swc/core":"^1.6.6","@swc/jest":"^0.2.36","changesets":"^1.0.2","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","jest-extended":"^4.0.2","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node18":"^18.2.4","rollup-plugin-swc3":"^0.11.2","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-typescript-paths":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.4.0_1719953945451_0.06439048192801411","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@carbonteq/fp","version":"0.5.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.5.0","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"ef8138c383b04061cd84a4faaf33717e107ebe24","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.5.0.tgz","fileCount":14,"integrity":"sha512-zY0S0+qseNiKxsecFHNZYZwRsEirVpwDLdVDIqVLsBhEzn1Arao+q7r2cQ18jseddokph68xGbydiz6SOX1zKw==","signatures":[{"sig":"MEUCIFTsAeemgLhoshof//5hw+vuUSsL5wNnigqxJD8HCgKcAiEA8P9tC1h0/7vQ1K5eOtQ/lZFv91bkj/3K5epk6BszHJg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29819},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"66a51625a2fdd50a4774204d74992e5460c89fe2","scripts":{"ci":"biome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"biome format src tests --write","lint":"biome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.7.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.7","rollup":"^4.18.0","@swc/core":"^1.6.6","@swc/jest":"^0.2.36","changesets":"^1.0.2","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","jest-extended":"^4.0.2","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node18":"^18.2.4","@swc-node/register":"^1.10.3","rollup-plugin-swc3":"^0.11.2","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-typescript-paths":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.5.0_1720714754503_0.9883303447607659","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"@carbonteq/fp","version":"0.5.1","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.5.1","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"bc56abf7c06bbcfde9b95473629eb255b5c593f7","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.5.1.tgz","fileCount":14,"integrity":"sha512-izl6hvZL9cFSQKnUQV7uwqGpoopWAYtggQ/4i918iscYhcWYn2ZXBqAh0X06MlpkySST9dmbucYEoBIz8eYSfw==","signatures":[{"sig":"MEYCIQDf1RhhcIYyYjTYhbiCaFRmcZDKK48pCE+ZLtgkx8X9DAIhAMAjBlLaiqkqfWnUxCJ8J/gTpIleEPkkQbBLF/Ifg4ZX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30095},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"503ace7b9a852f580761136bdcf8f0089681450d","scripts":{"ci":"biome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"biome format src tests --write","lint":"biome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.7.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.7","rollup":"^4.18.0","@swc/core":"^1.6.6","@swc/jest":"^0.2.36","changesets":"^1.0.2","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","jest-extended":"^4.0.2","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node18":"^18.2.4","@swc-node/register":"^1.10.3","rollup-plugin-swc3":"^0.11.2","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-typescript-paths":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.5.1_1720722516266_0.6056871387117986","host":"s3://npm-registry-packages"}},"0.5.2":{"name":"@carbonteq/fp","version":"0.5.2","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.5.2","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"ba641ce9e2324b1301e4f983b404beb7ace06adf","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.5.2.tgz","fileCount":14,"integrity":"sha512-wMgVLek0cfWvuTxjpHKL8N9dHq6Xp5hnCXOlTZRWEpH2fx3UPeR2fAqqpSNhjCz5pEmzIHQ5vea2ldo5dWx29Q==","signatures":[{"sig":"MEYCIQDoIO2hDdIMm0LjQOB/BHdM5mx8Cc/VtaDIBFnnozSvMQIhAIySq/pyvnHivaMsHikTCm5xHA7guDOk6rkfWB6Me5dM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30051},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"cb0a4ac6000ebacd4a3933830440ae0adf0edc30","scripts":{"ci":"biome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"biome format src tests --write","lint":"biome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.7.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.7","rollup":"^4.18.0","@swc/core":"^1.6.6","@swc/jest":"^0.2.36","changesets":"^1.0.2","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","jest-extended":"^4.0.2","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node18":"^18.2.4","@swc-node/register":"^1.10.3","rollup-plugin-swc3":"^0.11.2","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-typescript-paths":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.5.2_1720723910582_0.5466431376908276","host":"s3://npm-registry-packages"}},"0.5.3":{"name":"@carbonteq/fp","version":"0.5.3","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.5.3","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"85a1f7c8a21de5a554b4cc84f26323bc6504cf41","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.5.3.tgz","fileCount":14,"integrity":"sha512-ceKxS2LP/zUYhhMlUTC3qRPfb4UvCmfaUNk2WWH2uAsfFOHYSt3nfh6fl+t8M7bBGklFVvBmLMQZ/WGjV72FJA==","signatures":[{"sig":"MEQCIFcqygvxbsqCGIYHqz1BpPGuFInAxsNVRQiriy5tHZpFAiAo1eByA/Hp1d1ooUoIxg508yCG5JeNXJ69RjbOyVB9Lw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30489},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"bd5f6c4269b91eb41ba247165d0c7c491b729dea","scripts":{"ci":"biome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"biome format src tests --write","lint":"biome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.7.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.7","rollup":"^4.18.0","@swc/core":"^1.6.6","@swc/jest":"^0.2.36","changesets":"^1.0.2","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","jest-extended":"^4.0.2","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node18":"^18.2.4","@swc-node/register":"^1.10.3","rollup-plugin-swc3":"^0.11.2","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-typescript-paths":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.5.3_1721212424925_0.9247149964662149","host":"s3://npm-registry-packages"}},"0.5.4":{"name":"@carbonteq/fp","version":"0.5.4","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.5.4","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"77d7b78f23a68a3717cd044dd4a2cad6afafc9ea","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.5.4.tgz","fileCount":14,"integrity":"sha512-HS0uxV5c0KIc8n6NUyAhn/Ej8FoTT/PJLg3l8Yv3N1O18ECVB2iohMtyp+nVjZrzyGL0CdHendc/sBpmjCANlQ==","signatures":[{"sig":"MEUCIQCnhASdPPPT1OqEPbKIcfztRbyM4JDTJlkOSpXKphMOugIgXTGPauCcnOJXwNlHBXlFwrpK7zwNVL9/tjUFniY0uZg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32469},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"904ed6b60e85a0f80de45af09d1b2bd23e39e7f7","scripts":{"ci":"biome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"biome format src tests --write","lint":"biome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.7.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.20.4","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.7","rollup":"^4.18.0","@swc/core":"^1.6.6","@swc/jest":"^0.2.36","changesets":"^1.0.2","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","jest-extended":"^4.0.2","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node18":"^18.2.4","@swc-node/register":"^1.10.3","rollup-plugin-swc3":"^0.11.2","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-typescript-paths":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.5.4_1721401475163_0.16197123475432962","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"@carbonteq/fp","version":"0.6.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.6.0","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"2d16b2f1c9e9505bdf340dd62f742beffd302e5a","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.6.0.tgz","fileCount":16,"integrity":"sha512-Zas4Pakjw/fuWwOUbF0hvKoANaZASL9IWzhf2449oEm7NNHdeJGGOqpOm64F++vY2BcACFMwgsgX/RtzW7WK1w==","signatures":[{"sig":"MEUCICQmNl9yYFa2B4JUGnzYtvOD00bPpX2nIdY2zLMzxWRHAiEAx+Ex+OC+nh8NRbGzpILiKLSovrEveG4LuIWf66CCt7U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":46519},"main":"lib/index.js","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"}},"gitHead":"f8f258d3e8defc7476c2498c92a8d205674b9878","scripts":{"ci":"biome ci src tests","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"rollup -c rollup.config.ts --configPlugin swc3","fmt":"biome format src tests --write","lint":"biome check src tests","test":"jest --verbose","build":"rollup -c rollup.config.ts --configPlugin swc3","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","prebuild":"rimraf lib","test:dbg":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand","postbuild":"tsc --emitDeclarationOnly --declaration --declarationMap --project tsconfig.build.json"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.7.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"18.20.4","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.7","rollup":"^4.18.0","@swc/core":"^1.6.6","@swc/jest":"^0.2.36","changesets":"^1.0.2","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","jest-extended":"^4.0.2","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node18":"^18.2.4","@swc-node/register":"^1.10.3","rollup-plugin-swc3":"^0.11.2","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-typescript-paths":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.6.0_1721649393414_0.33062039843102076","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"@carbonteq/fp","version":"0.7.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.7.0","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"87ae2898a8117135109e79bbadb844ca01108b16","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.7.0.tgz","fileCount":41,"integrity":"sha512-s/2UsyXNgxh22fvYAbcJbvHodNSW2yQ6ItlEfPW3xdPX9S5bPItyWOk7g+Jx58/z27jTGVG6wtrT3rDi0gVyYg==","signatures":[{"sig":"MEYCIQDE/oKk1gq1QOLFJg2vYHA9qjWFF1teyekwmfBPUEPvcgIhAOQDPAl5tC39PddALE0V1FjDjwacHTkX/U63Ox1TTUXJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carbonteq%2ffp@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140472},"main":"lib/index.js","type":"module","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"32450f5363c19a121d30a54be7af0097d1fadd25","scripts":{"tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsup --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"tsup","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.8.2","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.13.1+sha512.5ac37545851c55ec58521b6c285db6f848f93ca70889beb4145f5b40fe234e4ea4faee4dad12ac5c139e494374c65d9c3a6ec9a25954378fa286a250e68d2f20","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsup":"^8.3.5","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.7.0_1731703866341_0.08124086606598069","host":"s3://npm-registry-packages"}},"0.8.0-alpha.0":{"name":"@carbonteq/fp","version":"0.8.0-alpha.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.0-alpha.0","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"8c51502e10d5a65765c6e0530875bdb06125e980","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.0-alpha.0.tgz","fileCount":3,"integrity":"sha512-d0l2y7YWJmlDQDzqMYgKO/MW+rHMfDmHCKHJ7Hkw2o0OuliaOzU/q1nAxLFAmWr5cN+UoioUd/B9t6R6mAoCmA==","signatures":[{"sig":"MEUCIQDX/KgqhZHV8Ez1WjWPcf9qwiawfmUAkiA75Q/sD3NCPwIgPMZzRqaV6cDX48U5E0JOG4U6v32oWMFQ7G6HGj1Kcp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26062},"main":"lib/index.js","type":"module","_from":"file:carbonteq-fp-0.8.0-alpha.0.tgz","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"bd":"tsup","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsup --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsup","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"},"_resolved":"/tmp/ab54ae1c021d8dec05cecc5cf9f4dc47/carbonteq-fp-0.8.0-alpha.0.tgz","_integrity":"sha512-d0l2y7YWJmlDQDzqMYgKO/MW+rHMfDmHCKHJ7Hkw2o0OuliaOzU/q1nAxLFAmWr5cN+UoioUd/B9t6R6mAoCmA==","deprecated":"Faulty publish","repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.9.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"22.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsup":"^8.3.5","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.0-alpha.0_1742801958236_0.6234870081514665","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-alpha.1":{"name":"@carbonteq/fp","version":"0.8.0-alpha.1","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.0-alpha.1","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"8f2d3215af28adf3ede3903f04d2ef0c5ecbe463","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.0-alpha.1.tgz","fileCount":43,"integrity":"sha512-SK6eJaoh/lr3klP3FYkKPZe78mTbNABFC4kMIkD+1inaGDM7Den1pgOoPFZOyf67Ai5xHrh/Pyq4GIrvFo1eng==","signatures":[{"sig":"MEUCIFYYvI01ep/2VBP4MXH9LOZmO79jryiAXuHPnk36cayLAiEAvlf+6oS1rUP+Z6fUZ0BOXYbJSjhrBp9ZQJGau6Cafuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211751},"main":"lib/index.js","type":"module","_from":"file:carbonteq-fp-0.8.0-alpha.1.tgz","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"bd":"tsup","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsup --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsup","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"},"_resolved":"/tmp/682af3590812e2fecacee23383289bce/carbonteq-fp-0.8.0-alpha.1.tgz","_integrity":"sha512-SK6eJaoh/lr3klP3FYkKPZe78mTbNABFC4kMIkD+1inaGDM7Den1pgOoPFZOyf67Ai5xHrh/Pyq4GIrvFo1eng==","repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.9.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"22.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsup":"^8.3.5","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.0-alpha.1_1742802652792_0.46591006961220205","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-alpha.2":{"name":"@carbonteq/fp","version":"0.8.0-alpha.2","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.0-alpha.2","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"4667f682460e153214b9fc22a45ac4f79e09f40b","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.0-alpha.2.tgz","fileCount":43,"integrity":"sha512-L6IFSJVBjZiJEnzENEgCLGz8CKDBpqeeNnAqoVAMYQCODDKc0jsiXOvLcZPQju7wAWiaSux+jhkELl2gP6vHog==","signatures":[{"sig":"MEUCICh8RfL2tDnV6J6H76GyAQD3SfdfcshJw9gyOVjCgek9AiEA9wPaC16BHXhJUHbAnLOFUfNFgYSkMEcyShJTLBjLpcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212831},"main":"lib/index.js","type":"module","_from":"file:carbonteq-fp-0.8.0-alpha.2.tgz","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"bd":"tsup","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsup --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsup","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"},"_resolved":"/tmp/e4b6606feb68d661f0e735c2df7c8288/carbonteq-fp-0.8.0-alpha.2.tgz","_integrity":"sha512-L6IFSJVBjZiJEnzENEgCLGz8CKDBpqeeNnAqoVAMYQCODDKc0jsiXOvLcZPQju7wAWiaSux+jhkELl2gP6vHog==","repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.9.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"22.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsup":"^8.3.5","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.0-alpha.2_1742982521663_0.7620079669950597","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-alpha.3":{"name":"@carbonteq/fp","version":"0.8.0-alpha.3","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.0-alpha.3","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"4795617a8bcdd7fadac2eae9c09d93594d572f57","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.0-alpha.3.tgz","fileCount":43,"integrity":"sha512-CEDR2WIINfAByzHgBG1mWMgrainPlxoj9asTctNjC9vb3u+zFM/Z3UprKMB/4vI7bljz20dqmu6lM5rwC2q8LA==","signatures":[{"sig":"MEUCICl8/l8zmQ+hWUDGuy8NWT+npBE0/GFBWIxT4h0iW5FMAiEAwO9890oEPIlaLwC3snJPAtuKmmwOUY6aG8Sihax4RHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211877},"main":"lib/index.js","type":"module","_from":"file:carbonteq-fp-0.8.0-alpha.3.tgz","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"bd":"tsup","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsup --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsup","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"},"_resolved":"/tmp/4cc6de9244cab82de2f17ab70d244c1e/carbonteq-fp-0.8.0-alpha.3.tgz","_integrity":"sha512-CEDR2WIINfAByzHgBG1mWMgrainPlxoj9asTctNjC9vb3u+zFM/Z3UprKMB/4vI7bljz20dqmu6lM5rwC2q8LA==","repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.9.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"22.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsup":"^8.3.5","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.0-alpha.3_1742983621424_0.1676374668145153","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-alpha.4":{"name":"@carbonteq/fp","version":"0.8.0-alpha.4","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.0-alpha.4","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"8a32e5988b79e6ac794c14c3e0fb92f9e016cb3a","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.0-alpha.4.tgz","fileCount":43,"integrity":"sha512-aHCV8uqDvtkBKH51iDjtdfqZZEBpEZ4y+615Rhf4SOoJKVj8QNQK8VsmJpWZH6UIdI5bvZ+t1SVSkARGmcr18w==","signatures":[{"sig":"MEMCIH9XEg9QAJYBu3WUB3xWQuZ/QkQ7tG1JF0gPUA1XrN97Ah9zU0Lu56K+PgpaqW0vytCeuHb2Q90hkjT1pgbXWU6z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211841},"main":"lib/index.js","type":"module","_from":"file:carbonteq-fp-0.8.0-alpha.4.tgz","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"bd":"tsup","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsup --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsup","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"},"_resolved":"/tmp/350e9cd398de43a7b778446fbdc9ca5f/carbonteq-fp-0.8.0-alpha.4.tgz","_integrity":"sha512-aHCV8uqDvtkBKH51iDjtdfqZZEBpEZ4y+615Rhf4SOoJKVj8QNQK8VsmJpWZH6UIdI5bvZ+t1SVSkARGmcr18w==","repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.9.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"22.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsup":"^8.3.5","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.0-alpha.4_1742984025368_0.35195078561193704","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-alpha.5":{"name":"@carbonteq/fp","version":"0.8.0-alpha.5","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.0-alpha.5","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"c0887d3f06dcc0cad312a9614f7756118faaa4de","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.0-alpha.5.tgz","fileCount":9,"integrity":"sha512-0iMzefNY+bjYADLqgHJ/Lm2vEsU5CD0JecIDPxXUEtP1KVOBq3LnA7OinfEylnW3sTf8GW2hLWsJGlp4n+nOKQ==","signatures":[{"sig":"MEQCIEE2m1pJufamPeKdmKjvIRTMFBj/tcV5ql0Xbnj8IC4DAiBCq9xjVqZDOTjM6ye/e2KOaj+0hH3Oo8/vV+xnQCfaDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202943},"main":"./dist/index.cjs","type":"module","_from":"file:carbonteq-fp-0.8.0-alpha.5.tgz","scope":"@carbonteq","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"import":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","require":"./dist/index.cjs"}},"scripts":{"bd":"tsup","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsup --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsup","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"},"_resolved":"/tmp/782445a806773bce36d8caf5e7840095/carbonteq-fp-0.8.0-alpha.5.tgz","_integrity":"sha512-0iMzefNY+bjYADLqgHJ/Lm2vEsU5CD0JecIDPxXUEtP1KVOBq3LnA7OinfEylnW3sTf8GW2hLWsJGlp4n+nOKQ==","repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.9.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"22.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsup":"^8.3.5","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.0-alpha.5_1743068881932_0.7673184635358372","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-alpha.6":{"name":"@carbonteq/fp","version":"0.8.0-alpha.6","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.0-alpha.6","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"2517707090f6b5c1e6d8bca02ec52ce8cc1afe86","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.0-alpha.6.tgz","fileCount":9,"integrity":"sha512-gldQxydW9wT1EiUYyEnpBrIa9gb5KSylXbvoM4mEC1hHika3EdCg2dA5i+dZaJDLcEUFWR4YkVSjEzCHKq5NaA==","signatures":[{"sig":"MEYCIQDwk7S+0pIlLOHId68XunlionluQ2veyY1jUTi8CBPargIhAODr2FgHBjZFs4qJ63PvI3+Hvdy1mCMHSw5h4DlpeSjK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202943},"main":"./dist/index.cjs","type":"module","_from":"file:carbonteq-fp-0.8.0-alpha.6.tgz","scope":"@carbonteq","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"import":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","require":"./dist/index.cjs"}},"scripts":{"bd":"tsup","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsup --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsup","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"},"_resolved":"/tmp/2517f21a529935117a982c43bc1e98ed/carbonteq-fp-0.8.0-alpha.6.tgz","_integrity":"sha512-gldQxydW9wT1EiUYyEnpBrIa9gb5KSylXbvoM4mEC1hHika3EdCg2dA5i+dZaJDLcEUFWR4YkVSjEzCHKq5NaA==","repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.9.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"22.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsup":"^8.3.5","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.0-alpha.6_1743069501240_0.4119803427392701","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@carbonteq/fp","version":"0.8.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.0","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"7c2ac5d2c4ad7220dac6904e65945ae754911804","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.0.tgz","fileCount":64,"integrity":"sha512-GCFjZ6nfE8Nld4r3hhhBOwws6pLKPpIR3X6F6iZ7xRayJt42RkyU1DjS/2etgFeJArQmhnQs2FPCoEikGFpVhQ==","signatures":[{"sig":"MEYCIQCmUz2viv+kB0tTpwWiEu4K+KmnO1lSNCkBiz7AL4yOQQIhAN8gFBLYDi34SMBsLiwKlOHCw0j7k2GaOcdd3tCl6zTR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carbonteq%2ffp@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233333},"main":"lib/index.js","type":"module","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{"node":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"cc4640278efed34caeac1ec0de923dc264a216a2","scripts":{"bd":"tsdown","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsdown --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsdown","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.8.2","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"20.19.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.13.1+sha512.5ac37545851c55ec58521b6c285db6f848f93ca70889beb4145f5b40fe234e4ea4faee4dad12ac5c139e494374c65d9c3a6ec9a25954378fa286a250e68d2f20","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsdown":"^0.11.12","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.0_1747757206209_0.3436610070577084","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@carbonteq/fp","version":"0.8.1","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.1","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"8d014f44a276d0d00bc09a42a5df91890c5f3ca9","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.1.tgz","fileCount":64,"integrity":"sha512-3MEBjJYbS7zYRbjOU9DM8n69nEhCDB5oUQOsgnz7uLul7QJ8Wrk5PaGrwBehAXuBKLKrKbtrkhcBL0vZTVXoEw==","signatures":[{"sig":"MEUCIQDdlUPCR7EGX6UTdh1XFaRHuG8+2YtOuHmh7fwp4fqF6QIgG1cNq0rMUUmJE7/HJmEYoxp1s1IdnvjErJ2z/w7pSZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carbonteq%2ffp@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233859},"main":"lib/index.js","type":"module","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"node":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./match":{"types":"./dist/match.d.ts","import":"./dist/match.js","require":"./dist/match.cjs"},"./option":{"types":"./dist/option.d.ts","import":"./dist/option.js","require":"./dist/option.cjs"},"./result":{"types":"./dist/result.d.ts","import":"./dist/result.js","require":"./dist/result.cjs"}},"gitHead":"abf97151324a36fddfdf4d429809582e6eb05910","scripts":{"bd":"tsdown","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsdown --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsdown","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.8.2","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"20.19.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.13.1+sha512.5ac37545851c55ec58521b6c285db6f848f93ca70889beb4145f5b40fe234e4ea4faee4dad12ac5c139e494374c65d9c3a6ec9a25954378fa286a250e68d2f20","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsdown":"^0.11.12","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.1_1750120868728_0.44413359439491407","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@carbonteq/fp","version":"0.8.2","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.8.2","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"afb151702602a1baee9cbfc27d12dbb1cca4ece5","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.8.2.tgz","fileCount":64,"integrity":"sha512-TgygpDhBb0D05xskb1GWpjE0gDioq7nfD1unSu2/DQatq5iq6LnSLt/+3CmdmcZ/6BMI1ehDrvJTt+T9c/ThOA==","signatures":[{"sig":"MEUCIDP1d19Bx0o/7l1eDIib3U+BgMkczw33oGvUVQbjBXctAiEA1IJkM2Vb6Uldi6h8+ajBXlgvlxnfr888NaCZzupp/zw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carbonteq%2ffp@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233731},"main":"lib/index.js","type":"module","scope":"@carbonteq","types":"lib/index.d.ts","module":"lib/index.mjs","engines":{"npm":">=8.0.0","node":">=18.0.0","yarn":">=1.22.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./match":{"types":"./dist/match.d.ts","import":"./dist/match.js","require":"./dist/match.cjs"},"./option":{"types":"./dist/option.d.ts","import":"./dist/option.js","require":"./dist/option.cjs"},"./result":{"types":"./dist/result.d.ts","import":"./dist/result.js","require":"./dist/result.cjs"}},"gitHead":"1e042924fc233a59c2110433a7f3ea3bddb89064","scripts":{"bd":"tsdown","tc":"tsc --pretty --noEmit --project tsconfig.build.json","dev":"tsdown --watch","fmt":"biome format src tests --write","tag":"changeset tag","lint":"biome check src tests","test":"tsx --test tests/*.test.ts","build":"NODE_ENV=production tsdown","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"tsx --inspect-brk --test tests/*.test.ts"},"_npmUser":{"name":"volf","email":"rslnkrmt2552@gmail.com"},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"10.8.2","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"20.19.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.13.1+sha512.5ac37545851c55ec58521b6c285db6f848f93ca70889beb4145f5b40fe234e4ea4faee4dad12ac5c139e494374c65d9c3a6ec9a25954378fa286a250e68d2f20","devDependencies":{"jsr":"^0.13.2","tsx":"^4.19.2","tsdown":"^0.11.12","@swc/core":"^1.9.2","changesets":"^1.0.2","typescript":"^5.5.3","@types/node":"^20.14.9","@biomejs/biome":"^1.8.3","@changesets/cli":"^2.27.7","@tsconfig/node20":"^20.1.4","@microsoft/api-extractor":"^7.47.11"},"_npmOperationalInternal":{"tmp":"tmp/fp_0.8.2_1750121795630_0.05062165893040094","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@carbonteq/fp","version":"0.9.1","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","_id":"@carbonteq/fp@0.9.1","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"homepage":"https://github.com/carbonteq/fp#readme","bugs":{"url":"https://github.com/carbonteq/fp/issues"},"dist":{"shasum":"310b5e8325087b7c55b301304050cc33673487a2","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.9.1.tgz","fileCount":63,"integrity":"sha512-yha6oKK4JEVILz5E1Z0DwOf9G1VTgatZ3lufWYX3cjcTR0oZt7ZYsnF1tXCyaWd+yOGj9CpIkhoJVK53ruxw0g==","signatures":[{"sig":"MEQCIBAdAwU2z5F+1wyqGK2PGxoy05urSXXWAliS5DH21FU1AiAn62ZpeMgywdQ8s0ktsaj7C8MlPAwRAxZnQxnnTqpT0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carbonteq%2ffp@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":326995},"main":"./dist/index.cjs","type":"module","scope":"@carbonteq","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./match":{"import":{"types":"./dist/match.d.mts","default":"./dist/match.mjs"},"require":{"types":"./dist/match.d.cts","default":"./dist/match.cjs"}},"./errors":{"import":{"types":"./dist/errors.d.mts","default":"./dist/errors.mjs"},"require":{"types":"./dist/errors.d.cts","default":"./dist/errors.cjs"}},"./option":{"import":{"types":"./dist/option.d.mts","default":"./dist/option.mjs"},"require":{"types":"./dist/option.d.cts","default":"./dist/option.cjs"}},"./result":{"import":{"types":"./dist/result.d.mts","default":"./dist/result.mjs"},"require":{"types":"./dist/result.d.cts","default":"./dist/result.cjs"}}},"gitHead":"5d803ef0aa3c311b658859cc115ed3565b19ab63","scripts":{"tc":"tsc --pretty --noEmit","dev":"tsdown --watch","fmt":"biome format src tests --write","tag":"changeset tag","knip":"knip","lint":"biome check src tests","test":"bun test","build":"NODE_ENV=production tsdown","fmt:dry":"biome format src tests","release":"changeset publish","lint:fix":"biome check src tests --write --unsafe","test:dbg":"bun test --inspect","test:node":"tsx --test tests/*.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:75d80efe-5a73-462b-826d-ed62e12d2565"}},"repository":{"url":"git+https://github.com/carbonteq/fp.git","type":"git"},"_npmVersion":"11.7.0","description":"FP utils","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.3.5","devDependencies":{"jsr":"^0.13.5","tsx":"^4.21.0","knip":"^5.80.0","bunup":"^0.16.17","oxfmt":"^0.23.0","oxlint":"^1.38.0","tsdown":"^0.19.0-beta.4","@swc/core":"^1.15.8","@types/bun":"^1.3.5","changesets":"^1.0.2","typescript":"^5.9.3","@types/node":"^24.10.1","@tsconfig/bun":"^1.0.10","@biomejs/biome":"^2.3.11","@changesets/cli":"^2.29.8","oxlint-tsgolint":"^0.10.1","@tsconfig/node22":"^22.0.5","@microsoft/api-extractor":"^7.55.2","@typescript/native-preview":"^7.0.0-dev.20260107.1"},"trustedDependencies":[],"_npmOperationalInternal":{"tmp":"tmp/fp_0.9.1_1767804880701_0.46432710246338393","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@carbonteq/fp","description":"FP utils","version":"0.10.0","author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","scope":"@carbonteq","repository":{"type":"git","url":"git+https://github.com/carbonteq/fp.git"},"bugs":{"url":"https://github.com/carbonteq/fp/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"./result":{"require":{"types":"./dist/result.d.cts","default":"./dist/result.cjs"},"import":{"types":"./dist/result.d.mts","default":"./dist/result.mjs"}},"./option":{"require":{"types":"./dist/option.d.cts","default":"./dist/option.cjs"},"import":{"types":"./dist/option.d.mts","default":"./dist/option.mjs"}},"./match":{"require":{"types":"./dist/match.d.cts","default":"./dist/match.cjs"},"import":{"types":"./dist/match.d.mts","default":"./dist/match.mjs"}},"./errors":{"require":{"types":"./dist/errors.d.cts","default":"./dist/errors.cjs"},"import":{"types":"./dist/errors.d.mts","default":"./dist/errors.mjs"}},"./flow":{"require":{"types":"./dist/flow.d.cts","default":"./dist/flow.cjs"},"import":{"types":"./dist/flow.d.mts","default":"./dist/flow.mjs"}},"./result-experimental":{"require":{"types":"./dist/result-experimental.d.cts","default":"./dist/result-experimental.cjs"},"import":{"types":"./dist/result-experimental.d.mts","default":"./dist/result-experimental.mjs"}},"./option-experimental":{"require":{"types":"./dist/option-experimental.d.cts","default":"./dist/option-experimental.cjs"},"import":{"types":"./dist/option-experimental.d.mts","default":"./dist/option-experimental.mjs"}}},"homepage":"https://github.com/carbonteq/fp#readme","sideEffects":false,"publishConfig":{"access":"public","provenance":true,"registry":"https://registry.npmjs.org/"},"scripts":{"lint":"biome check src tests","lint:fix":"biome check src tests --write --unsafe","olint":"oxlint --type-aware","fmt:dry":"oxfmt --check .","fmt":"oxfmt .","tc":"tsc --pretty --noEmit","typecheck":"tsgo --noEmit --pretty","build":"NODE_ENV=production tsdown","dev":"tsdown --watch","test":"bun test","test:dbg":"bun test --inspect","release":"changeset publish","tag":"changeset tag","knip":"knip"},"devDependencies":{"@biomejs/biome":"^2.3.14","@changesets/cli":"^2.29.8","@microsoft/api-extractor":"^7.56.3","@swc/core":"^1.15.11","@tsconfig/bun":"^1.0.10","@tsconfig/node22":"^22.0.5","@types/bun":"^1.3.8","@types/node":"^24.10.1","@typescript/native-preview":"^7.0.0-dev.20260207.1","bunup":"^0.16.22","changesets":"^1.0.2","jsr":"^0.14.2","knip":"^5.83.1","oxfmt":"^0.28.0","oxlint":"^1.43.0","oxlint-tsgolint":"^0.11.4","tsdown":"^0.20.3","tsx":"^4.21.0","typescript":"^5.9.3"},"engines":{"node":">=22.0.0"},"trustedDependencies":[],"packageManager":"bun@1.3.5","gitHead":"112c498d589dd25d8bd65bcd576b5d4fbd37bd1d","_id":"@carbonteq/fp@0.10.0","_nodeVersion":"22.22.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-CaY6GeUNCI7zsmhyzB+/W3uioVZmRhvv9JnLe0oh/D80MAYtzGx2WzYkp1/Bt4VKxODqtqdrbs6rkEVPQEP3qQ==","shasum":"17d0cfed2fd52bb18f6889ccb9d0530f9f56b0a1","tarball":"https://registry.npmjs.org/@carbonteq/fp/-/fp-0.10.0.tgz","fileCount":150,"unpackedSize":1844419,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carbonteq%2ffp@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCvuZKYGm99/JmxdcXhahC2VX8I8UU/ZxFDwlC3PutYdQIgdjf5AMiH3sqcA05dDZI9ZHkpewEYR7O4/H2O07z+xeE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:75d80efe-5a73-462b-826d-ed62e12d2565"}},"directories":{},"maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fp_0.10.0_1770486098123_0.45399933166553175"},"_hasShrinkwrap":false}},"time":{"created":"2023-06-06T01:05:20.779Z","modified":"2026-02-07T17:41:38.856Z","0.2.0":"2023-06-06T01:05:21.037Z","0.3.0":"2023-06-08T15:11:53.943Z","0.3.1":"2023-06-08T15:20:19.820Z","0.3.2":"2023-06-12T02:51:53.225Z","0.4.0":"2024-07-02T20:59:06.018Z","0.5.0":"2024-07-11T16:19:14.664Z","0.5.1":"2024-07-11T18:28:36.452Z","0.5.2":"2024-07-11T18:51:50.729Z","0.5.3":"2024-07-17T10:33:45.105Z","0.5.4":"2024-07-19T15:04:35.390Z","0.6.0":"2024-07-22T11:56:33.562Z","0.7.0":"2024-11-15T20:51:06.569Z","0.8.0-alpha.0":"2025-03-24T07:39:18.424Z","0.8.0-alpha.1":"2025-03-24T07:50:53.001Z","0.8.0-alpha.2":"2025-03-26T09:48:41.848Z","0.8.0-alpha.3":"2025-03-26T10:07:01.615Z","0.8.0-alpha.4":"2025-03-26T10:13:45.544Z","0.8.0-alpha.5":"2025-03-27T09:48:02.096Z","0.8.0-alpha.6":"2025-03-27T09:58:21.420Z","0.8.0":"2025-05-20T16:06:46.398Z","0.8.1":"2025-06-17T00:41:08.933Z","0.8.2":"2025-06-17T00:56:35.847Z","0.9.1":"2026-01-07T16:54:40.896Z","0.10.0":"2026-02-07T17:41:38.345Z"},"bugs":{"url":"https://github.com/carbonteq/fp/issues"},"author":{"name":"Arslan","email":"rslnkrmt2552@gmail.com"},"license":"MIT","homepage":"https://github.com/carbonteq/fp#readme","repository":{"type":"git","url":"git+https://github.com/carbonteq/fp.git"},"description":"FP utils","maintainers":[{"name":"volf","email":"rslnkrmt2552@gmail.com"},{"name":"adm-carbonteq","email":"admin@carbonteq.com"},{"name":"irfanatcarbonteq","email":"irfan@carbonteq.com"},{"name":"owaisatcarbonteq","email":"owais.ahsan@carbonteq.com"}],"readme":"# Carbonteq Functional Programming Utilities (fp)\n\n## Description\n\n`fp` is a lightweight TypeScript library designed to simplify functional programming by providing essential types like `Option` and `Result`. It helps developers handle errors, manage optional values, and write expressive, composable code.\n\n## Installation\n\n```sh\nnpm i @carbonteq/fp\n```\n\n```sh\npnpm i @carbonteq/fp\n```\n\n```sh\nyarn add @carbonteq/fp\n```\n\n```sh\nbun add @carbonteq/fp\n```\n\n## But why fp?\n\nIn JavaScript and TypeScript, dealing with `null`, `undefined`, and errors can lead to verbose, error-prone code. `fp` introduces functional paradigms that make handling these cases cleaner and more reliable. By leveraging `fp`, you can reduce boilerplate, improve readability, and create more maintainable applications.\n\nTo demonstrate the utility of `fp`, let us consider a use case where we need to retrieve a user's email and address.\n\n## Without using the `fp` library\n\n```typescript\nfunction getUserByEmail(user: { email?: string }): string | null {\n  return user.email ? user.email : null;\n}\n\nfunction getUserAddress(email: string): string | null {\n  return email ? \"Some Address\" : null;\n}\n\nconst email = getUserByEmail({ email: \"test@test.com\" });\nif (email) {\n  const address = getUserAddress(email);\n  if (address) {\n    console.log(`User ${email} has address: ${address}`);\n  } else {\n    console.error(\"Address not found\");\n  }\n} else {\n  console.error(\"Email not found\");\n}\n// Example output: User test@test.com has address: Some Address\n```\n\nNow imagine if we had more complex use cases that involved more than two optional values. We would have to nest if statements and handle errors manually. This is where `fp` comes in.\n\n### Using the `fp` library\n\n```typescript\nimport { Option, matchOpt } from \"@carbonteq/fp\";\n\nfunction getUserByEmail(user: { email?: string }): Option<string> {\n  return user.email ? Option.Some(user.email) : Option.None;\n}\n\nfunction getUserAddress(email: string): Option<string> {\n  return Option.Some(\"Some Address\");\n}\n\nconst res = getUserByEmail({ email: \"test@test.com\" }).flatZip((email) =>\n  getUserAddress(email),\n);\n\nmatchOpt(res, {\n  Some: (res) => {\n    console.log(`User ${res[0]} has address: ${res[1]}`);\n  },\n  None: () => {\n    console.error(\"User or Address not found\");\n  },\n});\n// Example output: User test@test.com has address: Some Address\n```\n\n## Table of Contents\n\n- [Examples](#examples)\n- [Usage](#usage)\n  - [The `Result` type](#the-result-type)\n  - [The `Option` type](#the-option-type)\n  - [Fluent `match()` builder](#fluent-match-builder)\n  - [The `ExperimentalResult` type (Experimental)](#the-experimentalresult-type-experimental)\n  - [The `ExperimentalOption` type (Experimental)](#the-experimentaloption-type-experimental)\n  - [The `Flow` namespaces](#the-flow-namespaces)\n  - [Cheatsheet](#cheatsheet)\n    - [map](#map)\n    - [flatMap](#flatmap)\n    - [zip](#zip)\n    - [flatZip](#flatzip)\n    - [Comparison of map and zip](#comparison-of-map-flatmap-zip-and-flatzip)\n    - [Some Other Useful Functions](#some-other-useful-functions)\n    - [Creating Values from Existing Data](#creating-values-from-existing-data)\n    - [Exception Handling](#exception-handling)\n    - [Transforming Inner Values](#transforming-inner-values)\n    - [Combining & Converting](#combining--converting)\n    - [Error Recovery & Side Effects](#error-recovery--side-effects)\n    - [Aggregation Helpers](#aggregation-helpers)\n- [Build Your First Pipeline](#build-your-first-pipeline)\n  - [Synchronous Pipeline](#synchronous-pipeline)\n  - [Asynchronous Pipeline](#asynchronous-pipeline)\n\n## Examples\n\nExamples are split between stable and experimental APIs.\n\n- Stable runnable examples live under `examples/result/`, `examples/option/`, and `examples/flow/`.\n- Experimental runnable examples live under `examples/result-experimental/`, `examples/option-experimental/`, and `examples/flow-experimental/`.\n\nSee `examples/README.md` for the runnable index and file paths.\n\n## Usage\n\n## The `Result` type\n\n`Result` represents a value that can be either a success (`Ok`) or a failure (`Err`). It simplifies error handling by making success and failure explicit.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst res1: Result<number, string> = Result.Ok(5); // Contains the value 5\nconst res2: Result<number, string> = Result.Err(\"Some Error\"); // Contains the error \"Some Error\"\n```\n\nAsync variants\n\nIn the stable API, async mappers/binders are allowed on the same methods. The async work stays inside the Result, so the return type is `Result<Promise<T>, E>`. Use `toPromise()` when you need `Promise<Result<T, E>>`.\n\n```typescript\n// Sync\nResult.Ok(5).map((x) => x * 2); // Result<number, never>\nResult.Ok(5).flatMap((x) => Result.Ok(x * 2));\n\n// Async (stable)\nconst mapped = Result.Ok(5).map(async (x) => x * 2); // Result<Promise<number>, never>\nconst chained = Result.Ok(5).flatMap(async (x) => Result.Ok(x * 2)); // Result<Promise<number>, never>\nconst resolved = await chained.toPromise(); // Promise<Result<number, never>>\n```\n\n## The `Option` type\n\nThe `Option` type represents a value that might or might not be present. It eliminates the need for manual checks for `null` or `undefined`.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nconst opt1: Option<number> = Option.Some(5); // Contains the value 5\nconst opt2: Option<number> = Option.None; // Contains no value (None)\n```\n\nAsync variants\n\nIn the stable API, async mappers/predicates are allowed on the same methods. The async work stays inside the Option, so the return type is `Option<Promise<T>>`. Use `toPromise()` when you need `Promise<Option<T>>`.\n\n```typescript\n// Sync\nOption.Some(5).map((x) => x * 2); // Option<number>\nOption.Some(5).flatMap((x) => Option.Some(x * 2));\n\n// Async (stable)\nconst mapped = Option.Some(5).map(async (x) => x * 2); // Option<Promise<number>>\nconst chained = Option.Some(5).flatMap(async (x) => Option.Some(x * 2)); // Option<Promise<number>>\nconst filtered = Option.Some(5).filter(async (x) => x > 3); // Option<Promise<number>>\nconst resolved = await filtered.toPromise(); // Promise<Option<number>>\n```\n\n## Fluent `match()` builder\n\nUse `match()` for fluent, exhaustive pattern matching across stable and experimental `Option`/`Result` values, plus generic discriminated unions.\n\n```typescript\nimport { match, P, Result } from \"@carbonteq/fp\";\n\nconst message = match(Result.Ok(42) as Result<number, string>)\n  .with(P.Ok(P.eq(42)), () => \"exactly 42\")\n  .with(P.Ok(P.not(P.oneOf(42, 43))), () => \"ok but not 42 or 43\")\n  .with(P.Ok(), (value) => `other ok: ${value}`)\n  .with(P.Err(), (error) => `error: ${error}`)\n  .exhaustive();\n\nconst branch = match(Result.Err(\"timeout\") as Result<number, string>)\n  .when(P.IsOk, () => \"ok\")\n  .when(P.IsErr, () => \"err\")\n  .otherwise(() => \"other\");\n\nconst combined = match(Result.Ok(42) as Result<number, string>)\n  .with(P.Ok(P.all(P.not(P.eq(0)), P.any(P.eq(42), P.eq(43)))), () => \"hit\")\n  .with(P.Ok(), () => \"miss\")\n  .with(P.Err(), () => \"err\")\n  .exhaustive();\n```\n\n`match()` is intentionally synchronous. If you have async-inner stable values, settle first:\n\n```typescript\nimport { match, Result } from \"@carbonteq/fp\";\n\nconst asyncResult = Result.Ok(Promise.resolve(10)); // Result<Promise<number>, never>\nconst settled = await asyncResult.toPromise(); // Promise<Result<number, never>>\n\nconst label = match(settled)\n  .with(\"Ok\", (value) => `value=${value}`)\n  .with(\"Err\", () => \"error\")\n  .exhaustive();\n```\n\n---\n\n## The `ExperimentalResult` type (Experimental)\n\n`ExperimentalResult` differs from the stable `Result` by providing explicit async methods like `mapAsync` and `flatMapAsync` that return `Promise<ExperimentalResult<T, E>>` directly, rather than returning `Result<Promise<T>, E>` and requiring `toPromise()`. It also includes generator-based APIs (`gen`, `asyncGen`, and adapter variants) used by `Flow`.\n\n```typescript\nimport { ExperimentalResult } from \"@carbonteq/fp\";\n```\n\n## The `ExperimentalOption` type (Experimental)\n\n`ExperimentalOption` mirrors the stable `Option` API but provides explicit async methods like `mapAsync`, `flatMapAsync`, and `filterAsync` that return `Promise<ExperimentalOption<T>>` rather than `Option<Promise<T>>`. It also includes generator-based APIs (`gen`, `asyncGen`, and adapter variants) and is the `Option` type used by `Flow`.\n\n```typescript\nimport { ExperimentalOption } from \"@carbonteq/fp\";\n```\n\n---\n\n## The `Flow` namespaces\n\n`Flow` is the stable generator namespace and works with stable `Option` + `Result`, returning stable `Result`.\n\n```typescript\nimport { Flow, Option, Result, UnwrappedNone } from \"@carbonteq/fp\";\n\nconst result = Flow.gen(function* () {\n  const a = yield* Option.Some(5);\n  const b = yield* Result.Ok(10);\n  const c = yield* Option.fromNullable(20);\n  return a + b + c;\n});\n\n// Result<number, UnwrappedNone>\n```\n\n`ExperimentalFlow` is the experimental counterpart and works with `ExperimentalOption` + `ExperimentalResult`, returning `ExperimentalResult`.\n\n```typescript\nimport {\n  ExperimentalFlow,\n  ExperimentalOption,\n  ExperimentalResult,\n} from \"@carbonteq/fp\";\n\nconst result = ExperimentalFlow.gen(function* () {\n  const a = yield* ExperimentalOption.Some(5);\n  const b = yield* ExperimentalResult.Ok(10);\n  return a + b;\n});\n```\n\nBoth namespaces provide `gen`, `genAdapter`, `asyncGen`, and `asyncGenAdapter`.\n\n---\n\n## Cheatsheet\n\n### `map`\n\nTransforms the `Some` or `Ok` value inside `Option` or `Result`.\n\nIf your mapper is async, `map` returns `Option<Promise<U>>` or `Result<Promise<U>, E>`. Use `toPromise()` when you need a resolved `Option`/`Result`.\n\nLet's say we want to apply a 10% bonus to the account balance of a user.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nasync function fetchUserBalanceFromDatabase(\n  userId: string,\n): Promise<Option<number>> {\n  // Simulate fetching balance from a database\n  await Promise.resolve(userId);\n  return Option.Some(100);\n}\n\nasync function applyBonus() {\n  const userId = \"user123\"; // Example user ID\n  const balanceOption = await Option.Some(userId)\n    .flatMap(fetchUserBalanceFromDatabase)\n    .map((balance) => balance * 1.1)\n    .toPromise(); // Apply a 10% bonus if balance exists\n  return balanceOption;\n}\n\nconsole.log(await applyBonus()); // Example output: Some(110)\n```\n\n#### `flatMap`\n\n`flatMap` is used to chain operations where each step returns an `Option` or `Result`. It avoids nested structures like `Option<Option<T>>` or `Result<Result<T, E>, E>` by \"flattening\" them into a single level.\n\nLet's say we want to validate user input and then save it to a database:\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\n// Function to validate user input\nconst validateUserData = (\n  name: string,\n  age: number,\n): Result<{ name: string; age: number }, Error> => {\n  if (name.trim() === \"\") {\n    return Result.Err(new Error(\"Name cannot be empty\"));\n  }\n  if (age < 0 || age > 120) {\n    return Result.Err(new Error(\"Age must be between 0 and 120\"));\n  }\n  return Result.Ok({ name, age });\n};\n\n// Simulated asynchronous task to save user data to a \"database\"\nconst saveUserData = async (user: {\n  name: string;\n  age: number;\n}): Promise<Result<string, Error>> => {\n  // Simulate saving to database\n  await Promise.resolve(user);\n  return Result.Ok(`User ${user.name} saved successfully!`);\n};\n\n// Chaining validation and save using `flatMap`\nconst processUser = async (\n  name: string,\n  age: number,\n): Promise<Result<string, Error>> => {\n  const validationResult = await validateUserData(name, age)\n    .flatMap(saveUserData)\n    .toPromise();\n  return validationResult;\n};\n\nconsole.log(await processUser(\"Alice\", 30)); // Example output: Result.Ok(\"User Alice saved successfully!\")\n\n/* validationResult is of type Result<string, Error> instead of Result<Result<string, Error>, Error> (which is what would have happened if we used map instead of flatMap) */\n```\n\n#### `zip`\n\nCreates a tuple `[T, U]` where the second value `U` is *derived* from the first value `T` using a function `f`.\nFor example, suppose we want to pair the product's original price `T` and discounted price `U`.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nasync function fetchProductPrice(\n  productId: string,\n): Promise<Result<number, Error>> {\n  // Simulate fetching price from a database\n  await Promise.resolve(productId);\n  return Result.Ok(100);\n}\n\nasync function applyDiscount(\n  productId: string,\n): Promise<Result<[number, number], Error>> {\n  const originalPrice = await Result.Ok(productId)\n    .flatMap(fetchProductPrice)\n    .zip((price) => price * 0.9)\n    .toPromise();\n  return originalPrice; //originalPrice is of type Result<[number, number], Error>\n}\n\nconsole.log(await applyDiscount(\"123\")); // Example output: Result.Ok([100, 90])\n```\n\nHere `derivedPair` is a `Result<[number, number], Error>`. Note that `T` = `100` and `U` = `90`.\n\n#### `flatZip`\n\nCombines the current `Result<T, E>` with a **dependent** `Result<U, E2>` produced from `T`, or the current `Option<T>` with a dependent `Option<U>` produced from `T`. Unlike `zip`, which pairs a value with a plain derived value, `flatZip` expects the callback to return a `Result`/`Option` and then flattens the outcome into `[T, U]`. It proceeds only when both steps are `Ok`/`Some`; otherwise, it propagates the first `Err`/`None`.\n\nLets say we want to combine the product price and product stock into a tuple `[number, number]`.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\n// Simulated function to fetch product price\nasync function fetchProductPrice(productId: string): Promise<Option<number>> {\n  // Simulate fetching price from a database\n  await Promise.resolve(productId);\n  return Option.Some(100);\n}\n\n// Simulated function to fetch product stock (receives price, returns Option)\nasync function fetchProductStock(price: number): Promise<Option<number>> {\n  // Simulate fetching stock from a database based on price\n  await Promise.resolve(price);\n  return Option.Some(50);\n}\n\n// Function to combine price and stock using flatZip\nasync function fetchProductDetails(\n  productId: string,\n): Promise<Option<[number, number]>> {\n  const productDetails = await Option.Some(productId)\n    .flatMap(fetchProductPrice)\n    .flatZip(fetchProductStock)\n    .toPromise();\n  return productDetails; // Option<[number, number]>\n}\n\nconsole.log(await fetchProductDetails(\"123\")); // Example output: Option.Some([100, 50])\n```\n\n## Comparison of `map`, `flatMap`, `zip`, and `flatZip`\n\n| **Method**            | **`map`**                                                         | **`flatMap`**                                                                                                                       | **`zip`**                                                                                  | **`flatZip`**                                                                                                |\n| --------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |\n| **Purpose**           | Transforms the value inside an `Ok` or `Some`.                    | Chains dependent computations where each computation returns a `Result` or `Option`.                                                | Combines the current value with another derived value into a tuple `[T, U]`.               | Chains a dependent computation returning `Result`/`Option` and combines both values into `[T, U]`.          |\n| **Input**             | A function `(val: T) => U`.                                       | A function `(val: T) => Result<U, E2>` or `(val: T) => Option<U>` to transform the current value into another `Result` or `Option`. | A function `(val: T) => U` to derive a new value `U` from the current value `T`.           | A function `(val: T) => Result<U, E2>` or `(val: T) => Option<U>` that returns another `Result` or `Option`. |\n| **Output**            | `Result<U, E>`, `Option<U>`                                       | `Result<U, E>`, `Option<U>`                                                                                                         | `Result<[T, U], E>`, `Option<[T, U]>`                                                      | `Result<[T, U], E>`, `Option<[T, U]>`.                                                                       |\n| **Error Propagation** | Propagates `Err`/`None` if the `Result`/`Option` is `Err`/`None`. | Propagates the first `Err`/`None` encountered in the chain.                                                                         | Propagates `Err`/`None` if the current `Result`/`Option` or derived value is `Err`/`None`. | Propagates the first `Err`/`None` encountered between the two `Result`/`Option` values.                      |\n| **Use Case**          | When you want to transform a value inside `Ok`/`Some`.            | When the next computation depends on the current value and returns a `Result`/`Option`.                                             | When you want to pair the current value with a derived one.                                | When you want to pair the current value with a dependent `Result`/`Option` computation.                     |\n\n---\n\n### Some Other Useful Functions\n\n#### `mapErr`\n\nTransforms the `Err` value inside `Result`.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\n// Simulated function to divide two numbers\nfunction divideNumbers(a: number, b: number): Result<number, Error> {\n  if (b === 0) {\n    return Result.Err(new Error(\"Division by zero\"));\n  }\n  return Result.Ok(a / b);\n}\n\n// A safe divide function that returns a Result with a string error message if the division by zero occurs, instead of throwing an exception\nfunction safeDivide(a: number, b: number): Result<number, string> {\n  const res = divideNumbers(a, b).mapErr(\n    (err) => `Operation failed: ${err.message}`,\n  );\n  return res;\n}\n\n// Example usage\nconsole.log(safeDivide(10, 2)); // Result.Ok(5)\nconsole.log(safeDivide(10, 0)); // Result.Err(\"Operation failed: Division by zero\")\n```\n\n#### `mapOr`\n\nChecks if the `Option` or `Result` is `Some` or `Ok`, and if so, applies the function to the value inside. If the `Option` or `Result` is `None` or `Err`, it returns the default value.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\n// Simulated function to find a user by id\nasync function findUserById(id: number): Promise<Option<number>> {\n  // Simulate a database call that either returns a user or null\n  await Promise.resolve(id);\n  if (id === 0) {\n    return Option.None;\n  }\n  return Option.Some(id);\n}\n\n// A safe function that returns a string message (not an Option) - mapOr returns the value directly\nasync function safeFindUserById(id: number): Promise<string> {\n  const userOpt = await findUserById(id);\n  return userOpt.mapOr(`User not found`, (res) => `User: ${res}`);\n}\n\n// Example usage\nconsole.log(await safeFindUserById(10)); // User: 10\nconsole.log(await safeFindUserById(0)); // User not found\n```\n\n#### `all`\n\n`all` is used to combine an array of Results. If any errors exist they are accumulated, else the values are accumulated.\n\n```typescript\nimport { Result, matchRes } from \"@carbonteq/fp\";\n\ntype User = {\n  userId: string;\n  userName: string;\n  createdAt: Date | string;\n};\n\ntype Post = {\n  postId: string;\n  likes: number;\n  replies: number;\n  createdAt: Date | string;\n  author: User[\"userId\"];\n};\n\ntype Like = {\n  likeId: string;\n  postId: Post[\"postId\"];\n  createdAt: Date | string;\n  likedBy: User[\"userId\"];\n};\n\ntype Reply = {\n  replyId: string;\n  postId: Post[\"postId\"];\n  data: string;\n  createdAt: Date | string;\n  author: User[\"userId\"];\n};\n\ntype Hash = string;\n\nasync function fetchUser(userId: string): Promise<Result<User, unknown>> {\n  return Result.Ok({\n    userId,\n    userName: \"Functional Programmer\",\n    createdAt: \"2025-01-01\",\n  });\n}\n\nasync function fetchPosts(userId: string): Promise<Result<Post[], string>> {\n  if (userId === \"TRIAL_USER\") {\n    return Result.Err(\"User has no posts!\");\n  }\n  return Result.Ok([\n    {\n      postId: \"1\",\n      likes: 12,\n      replies: 3,\n      createdAt: \"2025-01-01\",\n      author: userId,\n    },\n  ]);\n}\n\nasync function fetchLikes(userId: string): Promise<Result<Like[], unknown>> {\n  return Result.Ok([\n    { likeId: \"3\", postId: \"2\", createdAt: \"2025-01-01\", likedBy: userId },\n  ]);\n}\n\nasync function fetchReplies(userId: string): Promise<Result<Reply[], string>> {\n  if (userId === \"TRIAL_USER\") {\n    return Result.Err(\"User has no replies!\");\n  }\n  return Result.Ok([\n    {\n      replyId: \"1\",\n      postId: \"2\",\n      data: \"Nice post!\",\n      createdAt: \"2025-01-01\",\n      author: userId,\n    },\n  ]);\n}\n\nfunction generateHash(userId: string): Result<Hash, Error> {\n  return Result.Ok(`${userId}_HASH_VALUE`);\n}\n\nasync function getUserData(userId: string) {\n  const userIdRes = Result.Ok(userId);\n\n  const user = userIdRes.flatMap(fetchUser);\n  const posts = userIdRes.flatMap(fetchPosts);\n  const likes = userIdRes.flatMap(fetchLikes);\n  const replies = userIdRes.flatMap(fetchReplies);\n  const hash = userIdRes.flatMap(generateHash);\n\n  const userData = await Result.all(\n    user,\n    posts,\n    likes,\n    replies,\n    hash,\n  ).toPromise();\n\n  matchRes(userData, {\n    Ok(v) {\n      console.log(v);\n    },\n    Err(e) {\n      console.log(e);\n    },\n  });\n}\n\nawait getUserData(\"USER_ID\");\n\n// [\n//   {\n//     userId: 'USER_ID',\n//     userName: 'Functional Programmer',\n//     createdAt: '2025-01-01'\n//   },\n//   [\n//     {\n//       postId: '1',\n//       likes: 12,\n//       replies: 3,\n//       createdAt: '2025-01-01',\n//       userId: 'USER_ID'\n//     }\n//   ],\n//   [ { postId: '2', createdAt: '2025-01-01', userId: 'USER_ID' } ],\n//   [\n//     {\n//       postId: '2',\n//       data: 'Nice post!',\n//       createdAt: '2025-01-01',\n//       userId: 'USER_ID'\n//     }\n//   ],\n//   'USER_ID_HASH_VALUE'\n// ]\n\nawait getUserData(\"TRIAL_USER\");\n\n// [ 'User has no posts!', 'User has no replies!' ]\n```\n\n#### `validate`\n\nBuilt on top of `all`, `validate` is used to execute an array of validator functions in parallel. If all validations pass, the original value is retained. If any validations fail, the errors are accumulated. Both synchronous and asynchronous computations are handled.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nfunction hasMinimumLength(password: string): Result<boolean, Error> {\n  return password.length < 8\n    ? Result.Err(new Error(\"Password must be at least 8 characters\"))\n    : Result.Ok(true);\n}\n\nfunction hasSpecialCharacters(password: string): Result<boolean, Error> {\n  const specialCharsRegex = /[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]+/;\n  return !specialCharsRegex.test(password)\n    ? Result.Err(\n        new Error(\"Password must contain at least one special character\"),\n      )\n    : Result.Ok(true);\n}\n\n// Asynchronous validation function - checks if password is different from previous\nasync function isNotSameAsPrevious(\n  password: string,\n): Promise<Result<boolean, Error>> {\n  // Simulate checking against a database of user's previous passwords\n  return new Promise<Result<boolean, Error>>((resolve) => {\n    setTimeout(() => {\n      // For demo purposes, we'll consider \"password123!\" as the previous password\n      if (password === \"password123!\") {\n        resolve(\n          Result.Err(\n            new Error(\"New password cannot be the same as previous password\"),\n          ),\n        );\n      } else {\n        resolve(Result.Ok(true));\n      }\n    }, 200); // simulate network delay\n  });\n}\n\nconst validatedOk = Result.Ok(\"password321!\").validate([\n  hasMinimumLength,\n  hasSpecialCharacters,\n]);\nconsole.log(validatedOk.unwrap()); // password321!\n\nconst validatedErr = Result.Ok(\"pword\").validate([\n  hasMinimumLength,\n  hasSpecialCharacters,\n]);\nconsole.log(validatedErr.unwrapErr()); // [Error: Password must be at least 8 characters, Error: Password must contain at least one special character]\n\nconst validatedErrs = await Result.Ok(\"password123!\")\n  .validate([hasMinimumLength, hasSpecialCharacters, isNotSameAsPrevious])\n  .toPromise();\nconsole.log(validatedErrs.unwrapErr()); // [Error: New password cannot be the same as previous password]\n```\n\n#### `unwrap`, `unwrapOr`, `unwrapOrElse`, `safeUnwrap`, and `unwrapErr`\n\nThese functions are used to extract the value from a `Result`. Note that **only `unwrap` and `safeUnwrap` are available for `Option`**.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nfunction divideNumbers(a: number, b: number): Result<number, Error> {\n  if (b === 0) {\n    return Result.Err(new Error(\"Division by zero\"));\n  }\n  return Result.Ok(a / b);\n}\n\n// Example usage of each function\nlet result = divideNumbers(10, 2);\nconsole.log(result.unwrap()); // unwrap: 5 (Extracts the value from Result.Ok, throwing an error if it's Err.)\n\nresult = divideNumbers(10, 0);\nconsole.log(result.safeUnwrap()); // safeUnwrap: null (Safely unwraps the value, returning null if it's an Err instead of throwing an error.)\n\nconst errorResult = Result.Err(new Error(\"Something went wrong\"));\nconsole.log(errorResult.unwrapErr()); // unwrapErr: Error: Something went wrong (Extracts the error from Result.Err, throwing an error if it's Ok)\n```\n\n---\n\n### Creating Values from Existing Data\n\n#### `Option.fromNullable`\n\nCreates an `Option` from a value that might be `null` or `undefined`, returning `None` for those values.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nfunction findUser(id: string): { name: string } | null {\n  return id === \"1\" ? { name: \"Alice\" } : null;\n}\n\nconst user = Option.fromNullable(findUser(\"1\"));\nconsole.log(user); // Some({ name: \"Alice\" })\n\nconst missing = Option.fromNullable(findUser(\"999\"));\nconsole.log(missing); // None\n```\n\n#### `Option.fromFalsy`\n\nCreates an `Option` from a value, returning `None` for any falsy value (`false`, `0`, `\"\"`, `null`, `undefined`).\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nconst valid = Option.fromFalsy(\"hello\");\nconsole.log(valid); // Some(\"hello\")\n\nconst empty = Option.fromFalsy(\"\");\nconsole.log(empty); // None\n\nconst zero = Option.fromFalsy(0);\nconsole.log(zero); // None\n```\n\n#### `Option.fromPredicate`\n\nCreates an `Option` based on a predicate function - returns `Some` if the predicate returns `true`, else `None`.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nconst age = 25;\nconst adult = Option.fromPredicate(age, (a) => a >= 18);\nconsole.log(adult); // Some(25)\n\nconst minor = Option.fromPredicate(15, (a) => a >= 18);\nconsole.log(minor); // None\n```\n\n#### `Result.fromNullable`\n\nCreates a `Result` from a nullable value, returning `Err` with the provided error for `null` or `undefined`.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nfunction getConfig(key: string): string | undefined {\n  return process.env[key];\n}\n\nconst config = Result.fromNullable(getConfig(\"API_KEY\"), \"API_KEY not set\");\nconsole.log(config); // Ok(\"...\") or Err(\"API_KEY not set\")\n```\n\n#### `Result.fromPredicate`\n\nCreates a `Result` based on a predicate function - returns `Ok` with the value if the predicate returns `true`, else `Err` with the provided error.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst score = 85;\nconst passed = Result.fromPredicate(score, (s) => s >= 60, \"Score too low\");\nconsole.log(passed); // Ok(85)\n\nconst failed = Result.fromPredicate(45, (s) => s >= 60, \"Score too low\");\nconsole.log(failed); // Err(\"Score too low\")\n```\n\n---\n\n### Exception Handling\n\n#### `Result.tryCatch`\n\nWraps a synchronous operation in a `Result`, catching any exceptions and converting them to `Err`.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nfunction parseJson(json: string): Result<unknown, Error> {\n  return Result.tryCatch(\n    () => JSON.parse(json),\n    (e) => (e instanceof Error ? e : new Error(String(e))),\n  );\n}\n\nconsole.log(parseJson('{\"name\":\"Alice\"}')); // Ok({ name: \"Alice\" })\nconsole.log(parseJson(\"invalid json\")); // Err(SyntaxError: ...)\n```\n\n#### `Result.tryAsyncCatch`\n\nWraps an asynchronous operation in a `Result`, catching any exceptions and converting them to `Err`.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nasync function fetchUserData(\n  id: string,\n): Promise<Result<{ name: string }, Error>> {\n  return Result.tryAsyncCatch(\n    async () => {\n      const response = await fetch(`/api/users/${id}`);\n      return response.json();\n    },\n    (e) => (e instanceof Error ? e : new Error(String(e))),\n  );\n}\n\nconst user = await fetchUserData(\"123\");\nconsole.log(user); // Ok({ name: \"...\" }) or Err(Error: ...)\n```\n\n---\n\n### Transforming Inner Values\n\n#### `Option.filter`\n\nFilters the value inside an `Option` based on a predicate, returning `None` if the predicate returns `false`.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nconst age = Option.Some(25);\nconst adult = age.filter((a) => a >= 18);\nconsole.log(adult); // Some(25)\n\nconst minor = Option.Some(15).filter((a) => a >= 18);\nconsole.log(minor); // None\n```\n\n#### `Option.innerMap`\n\nTransforms array elements inside an `Option<Array<T>>`.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nconst numbers = Option.Some([1, 2, 3, 4, 5]);\nconst doubled = numbers.innerMap((n) => n * 2);\nconsole.log(doubled); // Some([2, 4, 6, 8, 10])\n```\n\n#### `Result.innerMap`\n\nTransforms array elements inside a `Result<Array<T>, E>`.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst numbers = Result.Ok([1, 2, 3, 4, 5]);\nconst squared = numbers.innerMap((n) => n * n);\nconsole.log(squared); // Ok([1, 4, 9, 16, 25])\n```\n\n#### `Result.mapBoth`\n\nTransforms both the success value and the error value simultaneously.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst result = Result.Ok(42);\nconst decorated = result.mapBoth(\n  (val) => `Success: ${val}`,\n  (err) => `Error: ${err}`,\n);\nconsole.log(decorated); // Ok(\"Success: 42\")\n\nconst error = Result.Err(\"Something failed\");\nconst decoratedError = error.mapBoth(\n  (val) => `Success: ${val}`,\n  (err) => `Error: ${err}`,\n);\nconsole.log(decoratedError); // Err(\"Error: Something failed\")\n```\n\n---\n\n### Combining & Converting\n\n#### `Option.toResult`\n\nConverts an `Option` to a `Result`, using the provided error for `None`.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nconst user = Option.Some({ name: \"Alice\" });\nconst userResult = user.toResult(\"User not found\");\nconsole.log(userResult); // Ok({ name: \"Alice\" })\n\nconst missing = Option.None.toResult(\"User not found\");\nconsole.log(missing); // Err(\"User not found\")\n```\n\n#### `Result.toOption`\n\nConverts a `Result` to an `Option`, discarding error information.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst success = Result.Ok(42);\nconst opt = success.toOption();\nconsole.log(opt); // Some(42)\n\nconst failure = Result.Err(\"Failed\");\nconst optFromErr = failure.toOption();\nconsole.log(optFromErr); // None\n```\n\n#### `Result.zipErr`\n\nRuns a validation/binding function on the Ok value that can produce a new error, while preserving the original Ok value. If the function returns an `Err`, that error is returned. If the initial result is already `Err`, it short-circuits and returns that error.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst checkPermissions = (userId: string) =>\n  Result.Ok(userId).zipErr((id) =>\n    id === \"guest\"\n      ? Result.Err(\"Guest users have limited access\")\n      : Result.Ok(undefined),\n  );\n\nconst admin = checkPermissions(\"admin-123\");\nconsole.log(admin); // Ok(\"admin-123\")\n\nconst guest = checkPermissions(\"guest\");\nconsole.log(guest); // Err(\"Guest users have limited access\")\n\nconst okNoChange = Result.Ok(\"42\").zipErr((id) => Result.Ok(id.length));\nconsole.log(okNoChange); // Ok(\"42\")\n\nconst alreadyFailed = Result.Err<string, string>(\"Network error\").zipErr(() =>\n  Result.Err(\"Validation error\"),\n);\nconsole.log(alreadyFailed); // Err(\"Network error\") - short-circuits\n```\n\n##### `mapErr` vs `zipErr`\n\n`mapErr` transforms the error value only; it never runs on `Ok`. `zipErr` runs a binder on the `Ok` value that can *introduce* a new error, while preserving the original `Ok` value on success.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst res = Result.Err<Error, number>(new Error(\"boom\")).mapErr(\n  (e) => e.message,\n);\nconsole.log(res); // Err(\"boom\")\n\nconst ok = Result.Ok(\"42\").zipErr((value) =>\n  value === \"0\" ? Result.Err(\"invalid\") : Result.Ok(value.length),\n);\nconsole.log(ok); // Ok(\"42\")\n\nconst err = Result.Ok(\"0\").zipErr((value) =>\n  value === \"0\" ? Result.Err(\"invalid\") : Result.Ok(value.length),\n);\nconsole.log(err); // Err(\"invalid\")\n```\n\n#### `Result.flip`\n\nSwaps the `Ok` and `Err` states, turning success into failure and vice versa.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst success = Result.Ok(\"Success value\");\nconst flipped = success.flip();\nconsole.log(flipped); // Err(\"Success value\")\n\nconst failure = Result.Err(\"Error value\");\nconst flippedError = failure.flip();\nconsole.log(flippedError); // Ok(\"Error value\")\n```\n\n---\n\n### Error Recovery & Side Effects\n\n#### `tap`\n\nExecutes a side effect function for `Some` or `Ok` values, then returns the original `Option` or `Result`. Useful for logging, debugging, or executing effects without changing the value.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\n// Simulated database functions\nasync function findUserById(\n  userId: number,\n): Promise<Result<Record<string, number>, string>> {\n  // Simulate a database lookup\n  await Promise.resolve(userId);\n  if (userId === 0) {\n    return Result.Err(\"User not found\");\n  }\n  return Result.Ok({ id: userId, balance: 100 });\n}\n\nfunction updateBalance(\n  user: Record<string, number>,\n  amount: number,\n): Result<Record<string, number>, string> {\n  if (user.balance < amount) {\n    return Result.Err(\"Insufficient funds\");\n  }\n  return Result.Ok({ ...user, balance: user.balance - amount });\n}\n\n// Process withdrawal with logging\nconst res = (await findUserById(1))\n  .tap((user) => console.log(`[Audit] User found: ${user.id}`))\n  .flatMap((user) => updateBalance(user, 10))\n  .tap((updated) =>\n    console.log(`[Transaction] New balance: $${updated.balance}`),\n  )\n  .tapErr((error) => console.error(`[Alert] Transaction failed: ${error}`));\n\nconsole.log(res); // Result.Ok({ id: 1, balance: 90 })\n```\n\n#### `Result.tapErr`\n\nExecutes a side effect function for `Err` values, then returns the original `Result`.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst result = Result.Err(\"Connection failed\");\nconst logged = result.tapErr((err) => {\n  console.error(`[Error Log] ${new Date().toISOString()}: ${err}`);\n});\nconsole.log(logged); // Err(\"Connection failed\")\n// Example output: [Error Log] 2025-01-07T...: Connection failed\n```\n\n#### `Result.orElse`\n\nRecovers from an error by providing a fallback `Result`. If the current result is `Err`, the function is called with the error to produce a new result.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nfunction fetchFromCache(id: string): Result<string, Error> {\n  return id === \"cached\"\n    ? Result.Ok(\"Cached data\")\n    : Result.Err(new Error(\"Not in cache\"));\n}\n\nfunction fetchFromAPI(id: string): Result<string, Error> {\n  return id === \"1\"\n    ? Result.Ok(\"API data\")\n    : Result.Err(new Error(\"Not found\"));\n}\n\nconst cached = fetchFromCache(\"cached\").orElse((err) => fetchFromAPI(\"1\"));\nconsole.log(cached); // Ok(\"Cached data\")\n\nconst fromAPI = fetchFromCache(\"123\").orElse((err) => fetchFromAPI(\"1\"));\nconsole.log(fromAPI); // Ok(\"API data\")\n\nconst failed = fetchFromCache(\"123\").orElse((err) => fetchFromAPI(\"999\"));\nconsole.log(failed); // Err(Error: Not found)\n```\n\n---\n\n### Aggregation Helpers\n\n#### `Option.any`\n\nReturns the first `Some` from a list of `Option`s, or `None` if all are `None`.\n\n```typescript\nimport { Option } from \"@carbonteq/fp\";\n\nconst first = Option.any(\n  Option.None,\n  Option.Some(\"First value\"),\n  Option.Some(\"Second value\"),\n);\nconsole.log(first); // Some(\"First value\")\n\nconst allNone = Option.any(Option.None, Option.None, Option.None);\nconsole.log(allNone); // None\n```\n\n#### `ExperimentalOption.gen`, `genAdapter`, `asyncGen`, `asyncGenAdapter`\n\nExperimental generator-based methods for chaining Option operations with imperative-style syntax.\n\n```typescript\nimport { ExperimentalOption as Option } from \"@carbonteq/fp\";\n\n// Option.gen - simple sync chains (no adapter needed)\nconst syncResult = Option.gen(function* () {\n  const a = yield* Option.Some(1);\n  const b = yield* Option.Some(2);\n  return a + b;\n});\nconsole.log(syncResult); // Some(3)\n\n// Option.asyncGen - async chains with explicit await\nconst asyncResult = await Option.asyncGen(async function* () {\n  const id = yield* Option.Some(1);\n  const data = yield* await fetchUserData(id); // await Promise<Option> first\n  const validated = yield* validate(data);\n  return validated;\n});\n\n// Option.genAdapter - better type inference for complex sync chains\nconst complexSync = Option.genAdapter(function* ($) {\n  const user = yield* $(fetchUser(123)); // sync Option\n  const profile = yield* $(user.profile); // sync Option\n  const valid = yield* $(validate(profile)); // sync Option\n  return valid;\n});\n\n// Option.asyncGenAdapter - cleaner async with auto-await handling\nconst complexAsync = await Option.asyncGenAdapter(async function* ($) {\n  const user = yield* $(fetchUser(123)); // sync or async Option\n  const orders = yield* $(fetchOrders(user)); // Promise<Option> - auto-awaited\n  const total = yield* $(calculateTotal(orders));\n  return total;\n});\n```\n\n**Key differences:**\n\n- `gen` / `asyncGen`: Simple, direct `yield*` with Option values\n- `genAdapter` / `asyncGenAdapter`: Uses `$()` adapter for better type inference and cleaner syntax\n\n#### `Result.any`\n\nReturns the first `Ok` from a list of `Result`s, or collects all errors if all are `Err`.\n\n```typescript\nimport { Result } from \"@carbonteq/fp\";\n\nconst firstSuccess = Result.any(\n  Result.Err(\"Error 1\"),\n  Result.Ok(\"First success\"),\n  Result.Ok(\"Second success\"),\n);\nconsole.log(firstSuccess); // Ok(\"First success\")\n\nconst allErrors = Result.any(\n  Result.Err(\"Error 1\"),\n  Result.Err(\"Error 2\"),\n  Result.Err(\"Error 3\"),\n);\nconsole.log(allErrors); // Err([\"Error 1\", \"Error 2\", \"Error 3\"])\n```\n\n#### `ExperimentalResult.gen`, `genAdapter`, `asyncGen`, `asyncGenAdapter`\n\nExperimental generator-based methods for chaining Result operations with imperative-style syntax.\n\n```typescript\nimport { ExperimentalResult as Result } from \"@carbonteq/fp\";\n\n// Result.gen - simple sync chains (no adapter needed)\nconst syncResult = Result.gen(function* () {\n  const a = yield* Result.Ok(1);\n  const b = yield* Result.Ok(2);\n  return a + b;\n});\nconsole.log(syncResult); // Ok(3)\n\n// Result.asyncGen - async chains with explicit await\nconst asyncResult = await Result.asyncGen(async function* () {\n  const id = yield* Result.Ok(1);\n  const data = yield* await fetchUserData(id); // await Promise<Result> first\n  const validated = yield* validate(data);\n  return validated;\n});\n\n// Result.genAdapter - better type inference for complex sync chains\nconst complexSync = Result.genAdapter(function* ($) {\n  const user = yield* $(fetchUser(123)); // sync Result\n  const profile = yield* $(user.profile); // sync Result\n  const valid = yield* $(validate(profile)); // sync Result\n  return valid;\n});\n\n// Result.asyncGenAdapter - cleaner async with auto-await handling\nconst complexAsync = await Result.asyncGenAdapter(async function* ($) {\n  const user = yield* $(fetchUser(123)); // sync or async Result\n  const orders = yield* $(fetchOrders(user)); // Promise<Result> - auto-awaited\n  const total = yield* $(calculateTotal(orders));\n  return total;\n});\n```\n\n**Key differences:**\n\n- `gen` / `asyncGen`: Simple, direct `yield*` with Result values\n- `genAdapter` / `asyncGenAdapter`: Uses `$()` adapter for better type inference and cleaner syntax\n\n---\n\n## Build Your First Pipeline\n\nLet's build a pipeline for processing an e-commerce order. This example demonstrates handling user input validation, inventory checks, and order processing.\n\n### Synchronous Pipeline\n\n```typescript\nimport { Result, matchRes } from \"@carbonteq/fp\";\n\ninterface Order {\n  productId: string;\n  quantity: number;\n  userId: string;\n}\n\ninterface ProcessedOrder {\n  orderId: string;\n  total: number;\n  status: \"confirmed\" | \"failed\";\n  order: Order;\n}\n\n// Validate order input\nfunction guardOrder(order: Order): Result<Order, string> {\n  if (!order.productId) return Result.Err(\"Product ID is required\");\n  if (order.quantity <= 0) return Result.Err(\"Quantity must be positive\");\n  if (!order.userId) return Result.Err(\"User ID is required\");\n  return Result.Ok(order);\n}\n\n// Check product availability\nfunction guardInventoryCheck(order: Order): Result<Order, string> {\n  const availableStock = 100; // Simulated stock\n  return order.quantity <= availableStock\n    ? Result.Ok(order)\n    : Result.Err(`Insufficient stock. Available: ${availableStock}`);\n}\n\n// Calculate order total\nfunction calculateTotal(order: Order): Result<number, string> {\n  const price = 29.99; // Simulated price\n  return Result.Ok(order.quantity * price);\n}\n\n// Process the order\nfunction processOrder(order: Order): Result<ProcessedOrder, string> {\n  return Result.Ok(order)\n    .validate([guardOrder, guardInventoryCheck])\n    .flatZip(calculateTotal)\n    .map(([order, total]) => ({\n      orderId: `ORD-${Date.now()}`,\n      total: total,\n      status: \"confirmed\" as const,\n      order: order,\n    }))\n    .mapErr((error) => `Order processing failed: ${error}`);\n}\n\n// Usage\nconst order: Order = {\n  productId: \"PROD-123\",\n  quantity: 2,\n  userId: \"USER-456\",\n};\n\nconst result = processOrder(order);\n\nmatchRes(result, {\n  Ok: (processedOrder) => {\n    console.log(`Order confirmed! Order ID: ${processedOrder.orderId}`);\n    console.log(`Total: $${processedOrder.total.toFixed(2)}`);\n    console.log(`Order: ${JSON.stringify(processedOrder.order)}`);\n  },\n  Err: (error) => {\n    console.error(`Error: ${error}`);\n  },\n});\n\n// Example output:\n// Order confirmed! Order ID: ORD-1716888600000\n// Total: $59.98\n// Order: {\"productId\":\"PROD-123\",\"quantity\":2,\"userId\":\"USER-456\"}\n```\n\n#### Asynchronous Pipeline\n\nLet's build an asynchronous pipeline for a user registration system that includes credentials verification and profile setup.\n\n```typescript\nimport { matchRes, Result } from \"@carbonteq/fp\";\n\ninterface UserInput {\n  email: string;\n  password: string;\n  name: string;\n}\n\ninterface UserProfile {\n  userId: string;\n  email: string;\n  name: string;\n  verificationStatus: \"pending\" | \"verified\";\n}\n\n// Validate email format (synchronous)\nfunction guardEmail(email: string): Result<string, string> {\n  const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  return emailRegex.test(email)\n    ? Result.Ok(email)\n    : Result.Err(\"Invalid email format\");\n}\n\n// Check if email is already registered\nasync function guardEmailAvailability(\n  email: string,\n): Promise<Result<string, string>> {\n  // Simulate database check\n  await Promise.resolve(email);\n  const registeredEmails = [\"existing@example.com\"];\n  return !registeredEmails.includes(email)\n    ? Result.Ok(email)\n    : Result.Err(\"Email already registered\");\n}\n\n// Validate password strength (synchronous)\nfunction guardPassword(password: string): Result<string, string> {\n  return password.length >= 8\n    ? Result.Ok(password)\n    : Result.Err(\"Password must be at least 8 characters\");\n}\n\n// Create user profile\nasync function createUserProfile(\n  input: UserInput,\n): Promise<Result<UserProfile, string>> {\n  const userProfile: UserProfile = {\n    userId: `USER-${Date.now()}`,\n    email: input.email,\n    name: input.name,\n    verificationStatus: \"pending\",\n  };\n  return Result.Ok(userProfile);\n}\n\n// Send verification email\nasync function sendVerificationEmail(\n  profile: UserProfile,\n): Promise<Result<UserProfile, string>> {\n  // Simulate email sending and verification\n  await Promise.resolve(profile);\n  console.log(`Verification email sent to ${profile.email}`);\n  return Result.Ok(profile);\n}\n\n// Main registration pipeline using validate + flatMap\nasync function registerUser(\n  input: UserInput,\n): Promise<Result<UserProfile, string | string[]>> {\n  const res = await Result.Ok(input)\n    .validate([\n      ({ email }) => guardEmail(email),\n      ({ email }) => guardEmailAvailability(email),\n      ({ password }) => guardPassword(password),\n    ])\n    .flatMap(createUserProfile)\n    .flatMap(sendVerificationEmail)\n    .toPromise();\n\n  return res;\n}\n\n// Usage\nasync function main() {\n  const userInput: UserInput = {\n    email: \"newuser@example.com\",\n    password: \"securepass123\",\n    name: \"John Doe\",\n  };\n\n  const result = await registerUser(userInput);\n\n  matchRes(result, {\n    Ok: (profile) => {\n      console.log(`Email: ${profile.email}`);\n      console.log(\"Registration successful!\");\n      console.log(`User ID: ${profile.userId}`);\n      console.log(`Verification Status: ${profile.verificationStatus}`);\n    },\n    Err: (error) => {\n      console.error(`Registration failed: ${error}`);\n    },\n  });\n}\n\nmain();\n// Example output:\n// Verification email sent to newuser@example.com\n// Email: newuser@example.com\n// Registration successful!\n// User ID: USER-1737921964102\n// Verification Status: pending\n```\n\n## Contributing\n\nContributions are welcome! Feel free to open issues or submit pull requests.\n","readmeFilename":"README.md"}