{"_id":"@bernierllc/validators-mime-structure","_rev":"7-4fbcfb7c424a6f813bada6cb01b9d83b","name":"@bernierllc/validators-mime-structure","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.0":{"name":"@bernierllc/validators-mime-structure","version":"1.0.0","keywords":["validator","mime","validation","parsing","primitive","bernierllc","email","multipart"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-mime-structure@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"9a16f698a3ab0f03b4d24c068e7f112645c8c735","tarball":"https://registry.npmjs.org/@bernierllc/validators-mime-structure/-/validators-mime-structure-1.0.0.tgz","fileCount":16,"integrity":"sha512-BhZoLEg7PJoFlP7+kazL5+SOARCR385qVzJpCjJUVGRBRSrbdgwfZn3WfSSPmAlVA3WUQAu3ELL2vQJKTldznA==","signatures":[{"sig":"MEUCIQDZgIIwjl07VoLsODlG1jCIOIx5TBRr45SJMUGirp4MswIgH+G7Ma24HO2TDFIpVXhFnPp54kD5MD9evO9OnqRi/NE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62668},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"d4e97cb725960f741f8ae376640a63cf5521380c","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-mime-structure"},"_npmVersion":"11.4.2","description":"Primitive validator for MIME type structure validation - MIME parts, content-type correctness","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-mime-structure_1.0.0_1760037415332_0.24026130644646004","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/validators-mime-structure","version":"1.2.0","keywords":["validator","mime","validation","parsing","primitive","bernierllc","email","multipart"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-mime-structure@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"a1b8e3921c3453529c33f4a8ce2c2a65c5cd46e2","tarball":"https://registry.npmjs.org/@bernierllc/validators-mime-structure/-/validators-mime-structure-1.2.0.tgz","fileCount":16,"integrity":"sha512-w+a19gll/I937xbEw10jvjdTd1qTHFiI5fWNcQKQ/rT2jRdq9KCvSR7SfiPNIVXISdVLbfXEnl6EjWMGQS4dHA==","signatures":[{"sig":"MEUCIEyYu0VWYbnCWKlxVaS2yZTi2rwRl38oI4l1deTakR3bAiEAhE3JUWtDUny/Dj7rJAlEoqIZiv6LHhSzekGnDFxH20M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62771},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b43c392-9f7e-4e46-a406-a567b30676ce"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-mime-structure"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Primitive validator for MIME type structure validation - MIME parts, content-type correctness","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/validators-core":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-mime-structure_1.2.0_1767642370230_0.1995838848741185","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/validators-mime-structure","version":"1.2.1","keywords":["validator","mime","validation","parsing","primitive","bernierllc","email","multipart"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-mime-structure@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"6748aea4e4f7e42a147116a9f666d37bf4321295","tarball":"https://registry.npmjs.org/@bernierllc/validators-mime-structure/-/validators-mime-structure-1.2.1.tgz","fileCount":16,"integrity":"sha512-h73AISRg4l1MwpEa3g0yrdlmiFe/v53RLoc64N4nOkGsdV+FZs6dL5PLlUnNWvkQ/sYAZWw8hc/Pkm12+WIMbA==","signatures":[{"sig":"MEMCH2GDRYJvM3nxqFFugcqSuxr/Hj4zhUzIhPp97X4vEscCIA7EMRvbRQRfMCTyB2SguwPhwCp1tH65HrGPJBrZbSQ1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62713},"main":"./dist/index.js","type":"module","_from":"file:bernierllc-validators-mime-structure-1.2.1.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b43c392-9f7e-4e46-a406-a567b30676ce"}},"_resolved":"/tmp/438740c047fd3280cca5921d00f408b2/bernierllc-validators-mime-structure-1.2.1.tgz","_integrity":"sha512-h73AISRg4l1MwpEa3g0yrdlmiFe/v53RLoc64N4nOkGsdV+FZs6dL5PLlUnNWvkQ/sYAZWw8hc/Pkm12+WIMbA==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-mime-structure"},"_npmVersion":"11.11.0","description":"Primitive validator for MIME type structure validation - MIME parts, content-type correctness","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-mime-structure_1.2.1_1773078307697_0.10979781320411641","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/validators-mime-structure","version":"1.2.2","keywords":["validator","mime","validation","parsing","primitive","bernierllc","email","multipart"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-mime-structure@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"9ce34acd997a3fbc2098b4b272c6d5cca9c5fcb7","tarball":"https://registry.npmjs.org/@bernierllc/validators-mime-structure/-/validators-mime-structure-1.2.2.tgz","fileCount":16,"integrity":"sha512-2mIsUyUoE7Fks4k4szBE4i1vkpG/pYY3kxS7bnh8ezvfWfSVPebaN5AjmibHFhE7Xn+CgAAQw9Vwy1QJIqX/kw==","signatures":[{"sig":"MEUCIG5SVxMxl7aj7qyYanaf/pQI3YTjUUBO5KrrFTjM63KeAiEAyAVhfS+lcFyIGJD7OhHIU24g+CzHCxibwRgY2ZKrbV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62713},"main":"./dist/index.js","type":"module","_from":"file:bernierllc-validators-mime-structure-1.2.2.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b43c392-9f7e-4e46-a406-a567b30676ce"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-mime-structure/bernierllc-validators-mime-structure-1.2.2.tgz","_integrity":"sha512-2mIsUyUoE7Fks4k4szBE4i1vkpG/pYY3kxS7bnh8ezvfWfSVPebaN5AjmibHFhE7Xn+CgAAQw9Vwy1QJIqX/kw==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-mime-structure"},"_npmVersion":"11.11.0","description":"Primitive validator for MIME type structure validation - MIME parts, content-type correctness","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-mime-structure_1.2.2_1773163955711_0.625010258829394","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/validators-mime-structure","version":"1.3.0","keywords":["validator","mime","validation","parsing","primitive","bernierllc","email","multipart"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-mime-structure@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"cf3dc251ef7779a4933162e2141f0412c7619028","tarball":"https://registry.npmjs.org/@bernierllc/validators-mime-structure/-/validators-mime-structure-1.3.0.tgz","fileCount":16,"integrity":"sha512-cfUHFE1fKrgbGRFlLKWjI+Livef1WRuTfDhlQtBDQxl8fG456GlLu5sxQ8L4hzJQm/pgzknX1sqMKR6FlWK5xg==","signatures":[{"sig":"MEUCICA0gaLrpf1lC1wBuzsQjOt5h508Ybs0GrJ2Fot9JEc7AiEAxW9bHWHU+cotpqXTj7gZ4iLx9SQ2sgej8zkp4uzCpPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62713},"main":"./dist/index.js","type":"module","_from":"file:bernierllc-validators-mime-structure-1.3.0.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b43c392-9f7e-4e46-a406-a567b30676ce"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-mime-structure/bernierllc-validators-mime-structure-1.3.0.tgz","_integrity":"sha512-cfUHFE1fKrgbGRFlLKWjI+Livef1WRuTfDhlQtBDQxl8fG456GlLu5sxQ8L4hzJQm/pgzknX1sqMKR6FlWK5xg==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-mime-structure"},"_npmVersion":"11.14.1","description":"Primitive validator for MIME type structure validation - MIME parts, content-type correctness","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-mime-structure_1.3.0_1779242188144_0.44872574407079036","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/validators-mime-structure","version":"1.4.0","keywords":["validator","mime","validation","parsing","primitive","bernierllc","email","multipart"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-mime-structure@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"64e9cab0c7cc292331dc698e87f4d6a375404677","tarball":"https://registry.npmjs.org/@bernierllc/validators-mime-structure/-/validators-mime-structure-1.4.0.tgz","fileCount":16,"integrity":"sha512-MoO2hvt5vnvxEzm3jWA66z27HZYDhbFvKGV0UZBlTZnOg7nVeDT2kBYgttdHY1qMK7L7xkV4q7DqhuLi4n0Q1A==","signatures":[{"sig":"MEUCIAPvqCyTmyIHiabJSBncE3biAdCmTmdb+2gqwz2A7hLRAiEAs3kRDIE9WZ5DQU0iFAIyqIToPX2AWGTS70zgLNXg2PA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62713},"main":"./dist/index.js","type":"module","_from":"file:bernierllc-validators-mime-structure-1.4.0.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b43c392-9f7e-4e46-a406-a567b30676ce"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-mime-structure/bernierllc-validators-mime-structure-1.4.0.tgz","_integrity":"sha512-MoO2hvt5vnvxEzm3jWA66z27HZYDhbFvKGV0UZBlTZnOg7nVeDT2kBYgttdHY1qMK7L7xkV4q7DqhuLi4n0Q1A==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-mime-structure"},"_npmVersion":"11.14.1","description":"Primitive validator for MIME type structure validation - MIME parts, content-type correctness","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-mime-structure_1.4.0_1779250944436_0.5859791263167404","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/validators-mime-structure","version":"1.6.0","description":"Primitive validator for MIME type structure validation - MIME parts, content-type correctness","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","keywords":["validator","mime","validation","parsing","primitive","bernierllc","email","multipart"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","dependencies":{"@bernierllc/validators-core":"0.4.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.40.0","jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/BernierLLC/tools.git","directory":"packages/validators/validators-mime-structure"},"scripts":{"build":"tsc","clean":"rm -rf dist","test":"jest --watch","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src --ext .ts","typecheck":"tsc --noEmit"},"_id":"@bernierllc/validators-mime-structure@1.6.0","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"homepage":"https://github.com/BernierLLC/tools#readme","_integrity":"sha512-dQme3dhlnez5WU/o2mHsawvVtjx1b4UEKBj8+nmF18nDQKWsq+5YC3wLJmH0o7Q0+jz/NQUXrMaH3JO9f181rQ==","_resolved":"/home/runner/work/tools/tools/packages/validators/validators-mime-structure/bernierllc-validators-mime-structure-1.6.0.tgz","_from":"file:bernierllc-validators-mime-structure-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-dQme3dhlnez5WU/o2mHsawvVtjx1b4UEKBj8+nmF18nDQKWsq+5YC3wLJmH0o7Q0+jz/NQUXrMaH3JO9f181rQ==","shasum":"872ba3a599fb190f0a4c9c6816fbd92bb7aadf2d","tarball":"https://registry.npmjs.org/@bernierllc/validators-mime-structure/-/validators-mime-structure-1.6.0.tgz","fileCount":18,"unpackedSize":64149,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIF9vrk6NpH58lAfNhb0041Ef/rMLC4RtVLVqT6lDSSC3AiEA44QLlcIAqWHTIxzEoAbRNGiiAczDGdUrnwG8Ttb2vho="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7b43c392-9f7e-4e46-a406-a567b30676ce"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/validators-mime-structure_1.6.0_1779252231265_0.8827541874001095"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-09T19:16:55.143Z","modified":"2026-05-20T04:43:51.554Z","1.0.0":"2025-10-09T19:16:55.516Z","1.2.0":"2026-01-05T19:46:10.366Z","1.2.1":"2026-03-09T17:45:07.877Z","1.2.2":"2026-03-10T17:32:35.865Z","1.3.0":"2026-05-20T01:56:28.287Z","1.4.0":"2026-05-20T04:22:24.573Z","1.6.0":"2026-05-20T04:43:51.410Z"},"bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","homepage":"https://github.com/BernierLLC/tools#readme","keywords":["validator","mime","validation","parsing","primitive","bernierllc","email","multipart"],"repository":{"type":"git","url":"git+https://github.com/BernierLLC/tools.git","directory":"packages/validators/validators-mime-structure"},"description":"Primitive validator for MIME type structure validation - MIME parts, content-type correctness","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/validators-mime-structure\n\nPrimitive validator for MIME message structure validation - multipart boundaries, content-type correctness, transfer encoding, and MIME part structure.\n\n## Installation\n\n```bash\nnpm install @bernierllc/validators-mime-structure\n```\n\n## Usage\n\n### Basic Validation\n\n```typescript\nimport { validateMimeStructure, isValidMimeStructure } from '@bernierllc/validators-mime-structure';\n\nconst mimeMessage = `Content-Type: multipart/mixed; boundary=\"boundary123\"\n\n--boundary123\nContent-Type: text/plain\n\nHello World\n--boundary123--`;\n\n// Get detailed validation problems\nconst problems = await validateMimeStructure(mimeMessage);\n\nif (problems.length === 0) {\n  console.log('Valid MIME structure');\n} else {\n  problems.forEach(problem => {\n    console.log(`${problem.severity}: ${problem.message}`);\n  });\n}\n\n// Quick validation check\nconst isValid = await isValidMimeStructure(mimeMessage);\nconsole.log(isValid ? 'Valid' : 'Invalid');\n```\n\n### Configuration Options\n\n```typescript\nimport { validateMimeStructure } from '@bernierllc/validators-mime-structure';\n\nconst problems = await validateMimeStructure(content, {\n  // Enable/disable specific checks\n  checkBoundaries: true,            // Validate multipart boundaries\n  checkContentType: true,           // Validate Content-Type headers\n  checkTransferEncoding: true,      // Validate Content-Transfer-Encoding\n  checkPartStructure: true,         // Validate MIME part structure\n  checkBoundaryMismatch: true,      // Detect boundary mismatches\n\n  // Configuration\n  maxNestingDepth: 10              // Maximum multipart nesting depth\n});\n```\n\n### Helper Functions\n\n```typescript\nimport {\n  extractBoundary,\n  isMultipart,\n  parseMimeParts\n} from '@bernierllc/validators-mime-structure';\n\n// Extract boundary from Content-Type header\nconst boundary = extractBoundary('multipart/mixed; boundary=\"test\"');\nconsole.log(boundary); // \"test\"\n\n// Check if message is multipart\nconst isMultipartMsg = isMultipart(mimeMessage);\nconsole.log(isMultipartMsg); // true\n\n// Parse MIME message into parts\nconst parts = parseMimeParts(mimeMessage);\nparts.forEach(part => {\n  console.log('Headers:', part.headers);\n  console.log('Body:', part.body);\n});\n```\n\n## API Reference\n\n### validateMimeStructure(content, options?, utils?)\n\nValidates MIME message structure and returns an array of validation problems.\n\n**Parameters:**\n- `content: string` - MIME message content to validate\n- `options?: Partial<MimeStructureOptions>` - Validation options\n- `utils?: SharedUtils` - Shared utilities from validators-core\n\n**Returns:** `Promise<Problem[]>`\n\n**Example:**\n```typescript\nconst problems = await validateMimeStructure(mimeMessage, {\n  checkBoundaries: true,\n  maxNestingDepth: 5\n});\n```\n\n### isValidMimeStructure(content, options?)\n\nChecks if MIME message structure is valid (no errors).\n\n**Parameters:**\n- `content: string` - MIME message content to validate\n- `options?: Partial<MimeStructureOptions>` - Validation options\n\n**Returns:** `Promise<boolean>`\n\n**Example:**\n```typescript\nif (await isValidMimeStructure(mimeMessage)) {\n  console.log('Valid MIME structure');\n}\n```\n\n### extractBoundary(contentType)\n\nExtracts boundary string from Content-Type header value.\n\n**Parameters:**\n- `contentType: string` - Content-Type header value\n\n**Returns:** `string | null`\n\n**Example:**\n```typescript\nconst boundary = extractBoundary('multipart/mixed; boundary=\"abc123\"');\n// Returns: \"abc123\"\n```\n\n### isMultipart(content)\n\nChecks if content is a multipart MIME message.\n\n**Parameters:**\n- `content: string` - Content to check\n\n**Returns:** `boolean`\n\n**Example:**\n```typescript\nif (isMultipart(content)) {\n  console.log('This is a multipart message');\n}\n```\n\n### parseMimeParts(content)\n\nParses MIME message into individual parts with headers and body.\n\n**Parameters:**\n- `content: string` - MIME message content\n\n**Returns:** `Array<{ headers: string; body: string }>`\n\n**Example:**\n```typescript\nconst parts = parseMimeParts(mimeMessage);\nconsole.log(`Found ${parts.length} parts`);\n```\n\n## Validation Rules\n\n### Boundary Validation (`boundary-validator`)\n\nValidates multipart boundaries according to RFC 2046:\n- Boundary parameter presence in Content-Type\n- Boundary format and characters\n- Boundary length (max 70 characters)\n- Boundary markers in message body\n- Closing boundary marker presence\n\n### Content-Type Validation (`content-type-validator`)\n\nValidates Content-Type headers according to RFC 2045:\n- MIME type format (type/subtype)\n- Token validity for type and subtype\n- Parameter format and syntax\n- Required boundary for multipart types\n- Recommended charset for text types\n\n### Transfer Encoding Validation (`transfer-encoding-validator`)\n\nValidates Content-Transfer-Encoding according to RFC 2045:\n- Valid encoding values (7bit, 8bit, binary, quoted-printable, base64)\n- Base64 format and padding\n- Quoted-printable escape sequences\n- Line length requirements\n- Character restrictions for 7bit encoding\n\n### Part Structure Validation (`part-structure-validator`)\n\nValidates MIME message part structure:\n- Header-body separation (blank line)\n- Header format and continuation\n- Nested multipart messages\n- Maximum nesting depth\n- Empty body warnings\n\n### Boundary Mismatch Detection (`boundary-mismatch-validator`)\n\nDetects boundary mismatches and inconsistencies:\n- Declared boundaries used in body\n- Undeclared boundary markers\n- Multiple closing markers\n- Incorrect boundary marker format\n- Duplicate boundary declarations\n\n## Examples\n\n### Validating Email with Attachments\n\n```typescript\nconst email = `Content-Type: multipart/mixed; boundary=\"outer\"\n\n--outer\nContent-Type: multipart/alternative; boundary=\"inner\"\n\n--inner\nContent-Type: text/plain; charset=utf-8\n\nPlain text version\n--inner\nContent-Type: text/html; charset=utf-8\n\n<html><body>HTML version</body></html>\n--inner--\n--outer\nContent-Type: application/pdf; name=\"document.pdf\"\nContent-Transfer-Encoding: base64\n\nJVBERi0xLjQK\n--outer--`;\n\nconst problems = await validateMimeStructure(email);\nconsole.log(`Found ${problems.length} validation issues`);\n```\n\n### Selective Validation\n\n```typescript\n// Only validate boundaries and content-type\nconst problems = await validateMimeStructure(content, {\n  checkBoundaries: true,\n  checkContentType: true,\n  checkTransferEncoding: false,\n  checkPartStructure: false,\n  checkBoundaryMismatch: false\n});\n```\n\n### Custom Nesting Depth\n\n```typescript\n// Allow deeper nesting for complex email structures\nconst problems = await validateMimeStructure(content, {\n  maxNestingDepth: 15\n});\n```\n\n## Integration Status\n\n- **Logger**: not-applicable - Primitive validator with no internal logging\n- **Docs-Suite**: ready - Complete API documentation and examples\n- **NeverHub**: not-applicable - Stateless validation utility\n\n## See Also\n\n- [@bernierllc/validators-core](../validators-core) - Core validation framework\n- [@bernierllc/validators-runner](../validators-runner) - Validation orchestration\n- [@bernierllc/validators-html-syntax](../validators-html-syntax) - HTML validation\n- [@bernierllc/validators-json-structure](../validators-json-structure) - JSON validation\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n","readmeFilename":"README.md"}