{"_id":"@commerce-atoms/filters","_rev":"3-c46b3ae3c240a66539e79ba106982d81","name":"@commerce-atoms/filters","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"@commerce-atoms/filters","version":"0.0.1","keywords":["shopify","hydrogen","filters","products","ecommerce","utilities","search"],"author":{"name":"Commerce Atoms"},"license":"MIT","_id":"@commerce-atoms/filters@0.0.1","maintainers":[{"name":"doctor.undefined","email":"contact@soundefined.com"}],"homepage":"https://github.com/commerce-atoms/shoppy/tree/main/packages/filters","bugs":{"url":"https://github.com/commerce-atoms/shoppy/issues"},"dist":{"shasum":"13be34b2b98d3823ac744600486fdf2a6eff02d0","tarball":"https://registry.npmjs.org/@commerce-atoms/filters/-/filters-0.0.1.tgz","fileCount":21,"integrity":"sha512-+7nIpdJC/kugcV4L8sEOqRxGlJNkS9qnn1KNd4/C5oaqY0q90g8K5v70vAM94+16RIBXa9duYgSMe67k4Frl3w==","signatures":[{"sig":"MEUCIEAv9ddP8vXzP/one9/57sYF1N/L/JFreKqdVuIx4qK2AiEArW/O+tWxqxF3YlOWgvY9lLPCFkytMx8Z2TF/9oS7EiE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@commerce-atoms%2ffilters@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18796},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./package.json":"./package.json","./types/product":{"types":"./dist/types/product.d.ts","import":"./dist/types/product.js"},"./apply/applyFilters":{"types":"./dist/apply/applyFilters.d.ts","import":"./dist/apply/applyFilters.js"},"./filter/filterByTags":{"types":"./dist/filter/filterByTags.d.ts","import":"./dist/filter/filterByTags.js"},"./filter/filterProduct":{"types":"./dist/filter/filterProduct.d.ts","import":"./dist/filter/filterProduct.js"},"./types/filterCriteria":{"types":"./dist/types/filterCriteria.d.ts","import":"./dist/types/filterCriteria.js"},"./filter/filterByOptions":{"types":"./dist/filter/filterByOptions.d.ts","import":"./dist/filter/filterByOptions.js"},"./price/getProductMinPrice":{"types":"./dist/price/getProductMinPrice.d.ts","import":"./dist/price/getProductMinPrice.js"},"./filter/filterByPriceRange":{"types":"./dist/filter/filterByPriceRange.d.ts","import":"./dist/filter/filterByPriceRange.js"},"./filter/filterByAvailability":{"types":"./dist/filter/filterByAvailability.d.ts","import":"./dist/filter/filterByAvailability.js"}},"gitHead":"aad0c0352718bf059706547692bab550e44b087d","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","pack:check":"npm pack --dry-run --silent","prepublishOnly":"npm run build"},"_npmUser":{"name":"doctor.undefined","email":"contact@soundefined.com"},"repository":{"url":"git+https://github.com/commerce-atoms/shoppy.git","type":"git","directory":"packages/filters"},"_npmVersion":"10.9.4","description":"Pure in-memory product filtering for Shopify storefronts","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filters_0.0.1_1766431525187_0.433886437725306","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@commerce-atoms/filters","version":"0.0.2","keywords":["shopify","hydrogen","filters","products","ecommerce","utilities","search"],"author":{"name":"Commerce Atoms"},"license":"MIT","_id":"@commerce-atoms/filters@0.0.2","maintainers":[{"name":"doctor.undefined","email":"contact@soundefined.com"}],"homepage":"https://github.com/commerce-atoms/shoppy/tree/main/packages/filters","bugs":{"url":"https://github.com/commerce-atoms/shoppy/issues"},"dist":{"shasum":"27e4de6d86a51ce891383b2c9fd93731604c8970","tarball":"https://registry.npmjs.org/@commerce-atoms/filters/-/filters-0.0.2.tgz","fileCount":21,"integrity":"sha512-RsaxXyc1y5whTv5N2IFIXb21TUtdvrUJluSOxRIdkBH5A2afmNhYqPbIRLHdTPvbsy8kofgDYKa4eGwfKA67VA==","signatures":[{"sig":"MEQCIFmDhvlsGZQnO21QI4o3b63TDil36hQ5DpTpahwIoLtwAiA5H+SVqEyK1OnZPGNZ9e5/00c+LWCYn4zVBdVeQk7zeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@commerce-atoms%2ffilters@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18796},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./package.json":"./package.json","./types/product":{"types":"./dist/types/product.d.ts","import":"./dist/types/product.js"},"./apply/applyFilters":{"types":"./dist/apply/applyFilters.d.ts","import":"./dist/apply/applyFilters.js"},"./filter/filterByTags":{"types":"./dist/filter/filterByTags.d.ts","import":"./dist/filter/filterByTags.js"},"./filter/filterProduct":{"types":"./dist/filter/filterProduct.d.ts","import":"./dist/filter/filterProduct.js"},"./types/filterCriteria":{"types":"./dist/types/filterCriteria.d.ts","import":"./dist/types/filterCriteria.js"},"./filter/filterByOptions":{"types":"./dist/filter/filterByOptions.d.ts","import":"./dist/filter/filterByOptions.js"},"./price/getProductMinPrice":{"types":"./dist/price/getProductMinPrice.d.ts","import":"./dist/price/getProductMinPrice.js"},"./filter/filterByPriceRange":{"types":"./dist/filter/filterByPriceRange.d.ts","import":"./dist/filter/filterByPriceRange.js"},"./filter/filterByAvailability":{"types":"./dist/filter/filterByAvailability.d.ts","import":"./dist/filter/filterByAvailability.js"}},"gitHead":"c8d7b03c7ec07aca93250f377e5da0bbc4090d29","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","pack:check":"npm pack --dry-run --silent","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7de22c2-a50c-4782-becb-c2f8bc2c634c"}},"repository":{"url":"git+https://github.com/commerce-atoms/shoppy.git","type":"git","directory":"packages/filters"},"_npmVersion":"11.7.0","description":"Pure in-memory product filtering for Shopify storefronts","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filters_0.0.2_1766434568612_0.7792366359023624","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@commerce-atoms/filters","version":"0.0.3","description":"Pure in-memory product filtering for Shopify storefronts","type":"module","sideEffects":false,"keywords":["shopify","hydrogen","filters","products","ecommerce","utilities","search"],"author":{"name":"Commerce Atoms"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/commerce-atoms/shoppy.git","directory":"packages/filters"},"homepage":"https://github.com/commerce-atoms/shoppy/tree/main/packages/filters","bugs":{"url":"https://github.com/commerce-atoms/shoppy/issues"},"publishConfig":{"access":"public","provenance":true},"exports":{"./package.json":"./package.json","./apply/applyFilters":{"types":"./dist/apply/applyFilters.d.ts","import":"./dist/apply/applyFilters.js"},"./filter/filterByTags":{"types":"./dist/filter/filterByTags.d.ts","import":"./dist/filter/filterByTags.js"},"./filter/filterByPriceRange":{"types":"./dist/filter/filterByPriceRange.d.ts","import":"./dist/filter/filterByPriceRange.js"},"./filter/filterByAvailability":{"types":"./dist/filter/filterByAvailability.d.ts","import":"./dist/filter/filterByAvailability.js"},"./filter/filterByOptions":{"types":"./dist/filter/filterByOptions.d.ts","import":"./dist/filter/filterByOptions.js"},"./filter/filterProduct":{"types":"./dist/filter/filterProduct.d.ts","import":"./dist/filter/filterProduct.js"},"./price/getProductMinPrice":{"types":"./dist/price/getProductMinPrice.d.ts","import":"./dist/price/getProductMinPrice.js"},"./types/filterCriteria":{"types":"./dist/types/filterCriteria.d.ts","import":"./dist/types/filterCriteria.js"},"./types/product":{"types":"./dist/types/product.d.ts","import":"./dist/types/product.js"}},"dependencies":{},"engines":{"node":">=18.0.0"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run","pack:check":"npm pack --dry-run --silent","prepublishOnly":"npm run build"},"gitHead":"cb71c4946a520552b92a61c1cf54fe03eefdd1c6","_id":"@commerce-atoms/filters@0.0.3","_nodeVersion":"22.21.1","_npmVersion":"11.7.0","dist":{"integrity":"sha512-YSHFXMyOTXs/jLIvQd/Mf3pUkeWsuswZi7/9HOo0GIFfWti7yJwpgJ3kXjJNycDR2Lirk/GVYdlJblGKBvKx0A==","shasum":"e7393d290fca5c6f8821a8583aa327f78696a1af","tarball":"https://registry.npmjs.org/@commerce-atoms/filters/-/filters-0.0.3.tgz","fileCount":21,"unpackedSize":18796,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@commerce-atoms%2ffilters@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC0oUvReUiBMFNuhEbJjnXCGF9exXBwFjKlS/keApTz3wIgI4JVMonWEX8Mr923rWax55NAqObagqbzlOaq5fIsdw0="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7de22c2-a50c-4782-becb-c2f8bc2c634c"}},"directories":{},"maintainers":[{"name":"doctor.undefined","email":"contact@soundefined.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/filters_0.0.3_1766434702529_0.47759739883620056"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-22T19:25:25.063Z","modified":"2025-12-22T20:18:23.024Z","0.0.1":"2025-12-22T19:25:25.400Z","0.0.2":"2025-12-22T20:16:08.761Z","0.0.3":"2025-12-22T20:18:22.671Z"},"bugs":{"url":"https://github.com/commerce-atoms/shoppy/issues"},"author":{"name":"Commerce Atoms"},"license":"MIT","homepage":"https://github.com/commerce-atoms/shoppy/tree/main/packages/filters","keywords":["shopify","hydrogen","filters","products","ecommerce","utilities","search"],"repository":{"type":"git","url":"git+https://github.com/commerce-atoms/shoppy.git","directory":"packages/filters"},"description":"Pure in-memory product filtering for Shopify storefronts","maintainers":[{"name":"doctor.undefined","email":"contact@soundefined.com"}],"readme":"# @commerce-atoms/filters\n\n**Pure in-memory product filtering for Shopify storefronts.**\n\n## Purpose\n\nProvides utilities for filtering product arrays by various criteria without server-side logic:\n\n- Filter by tags\n- Filter by price range\n- Filter by availability\n- Filter by selected options\n- Compose multiple filters\n\n## Non-goals\n\nThis package explicitly does **NOT**:\n\n- ❌ Provide filter UI components\n- ❌ Fetch products from Shopify\n- ❌ Know about Search & Discovery configuration\n- ❌ Manage React state or context\n- ❌ Include routing logic\n\n**Note:** Complements `@commerce-atoms/urlstate` but shares no code. Use `@commerce-atoms/urlstate` for schema-driven URL parsing, use `@commerce-atoms/filters` for the actual filtering logic.\n\n## API\n\n### Core Functions\n\n```typescript\n// Filter products by tags\nimport { filterByTags } from \"@commerce-atoms/filters/filter/filterByTags\";\n\nconst filtered = filterByTags(products, [\"new\", \"sale\"]);\n\n// Filter products by price range\nimport { filterByPriceRange } from \"@commerce-atoms/filters/filter/filterByPriceRange\";\n\nconst filtered = filterByPriceRange(products, { min: 10, max: 100 });\n\n// Filter products by availability\nimport { filterByAvailability } from \"@commerce-atoms/filters/filter/filterByAvailability\";\n\nconst filtered = filterByAvailability(products, { inStock: true });\n\n// Filter products by selected options\nimport { filterByOptions } from \"@commerce-atoms/filters/filter/filterByOptions\";\n\nconst filtered = filterByOptions(products, { color: \"red\", size: \"large\" });\n\n// Apply multiple filters at once\nimport { applyFilters } from \"@commerce-atoms/filters/apply/applyFilters\";\n\nconst filtered = applyFilters(products, {\n  tags: [\"new\"],\n  priceRange: { min: 10, max: 100 },\n  availability: { inStock: true },\n});\n```\n\n## Types\n\n```typescript\nimport type { FilterCriteria } from \"@commerce-atoms/filters/types/filterCriteria\";\nimport type { Product } from \"@commerce-atoms/filters/types/product\";\n```\n","readmeFilename":"README.md"}