{"_id":"@amazon/vinyl-xml","_rev":"11-0187637c62f5968476b98db72e105c4c","name":"@amazon/vinyl-xml","dist-tags":{"hotfix-chromos":"1.2.1","latest":"3.2.0"},"versions":{"1.0.0":{"name":"@amazon/vinyl-xml","version":"1.0.0","license":"UNLICENSED","_id":"@amazon/vinyl-xml@1.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"d67675f598e49d2d292cf289d3e6155f51095ae5","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-1.0.0.tgz","fileCount":85,"integrity":"sha512-/aJCKvKAvrgid1C3c2e4x5dapHpYpHaDJCuaQwNhwUaRXKoD7b8cYMWaScO6Vo2mZYDqf9+VQuiSpcdZXcuqFg==","signatures":[{"sig":"MEUCIGKQwfvsr5EGP6nz1LVgSbVcnjv42xZrU8wmPHSeC84RAiEAx0SxjYUHi35X044J+bUiiYMUeVZiycN4ALI+8fmBqvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":447718},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"899b0a1f00cde05a1cc83870e04e3e75a023f8df","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"11.16.0","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.12.0","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.0.0","@amazon/vinyl-validation":"^1.0.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.0.0","@amazon/vinyl-jasmine-wrapper":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_1.0.0_1779924446587_0.4681626935993155","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@amazon/vinyl-xml","version":"1.1.0","license":"Apache-2.0","_id":"@amazon/vinyl-xml@1.1.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"929f19d66746550b42e174478a279a69556910d7","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-1.1.0.tgz","fileCount":86,"integrity":"sha512-3K1V9F1HxJDmfCYHtRKQjY6Uya/YuDAS4G3PoE9PBs+kMOHqXvZYnRws2+mHOpmD0NNJkCP9wfX5Gv2cPJXCpw==","signatures":[{"sig":"MEQCIH0NvodyhTJ59KrhjfaEWGS6DHSWa8NUjsBH9bD8DzT7AiAmLzTrvEy2VVvIRhfhf1pkuguXjgxH1YjvpQGT58357g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":457919},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"ea13070fb52c1903723f08f31c356465d2f3279e","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v22.22.3+x64 (linux)","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"22.22.3","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.1.0","@amazon/vinyl-validation":"^1.1.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.1.0","@amazon/vinyl-jasmine-wrapper":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_1.1.0_1779979879491_0.21733368820886478","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@amazon/vinyl-xml","version":"1.1.1","license":"Apache-2.0","_id":"@amazon/vinyl-xml@1.1.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"50c5de30454b8ad258d805947e9ddafaa70bcc64","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-1.1.1.tgz","fileCount":86,"integrity":"sha512-DhsoJ90SqNXw8nI2jxGNOfMf1b61urVXd6kIMV/RX4friKG4Q1UK5VhBhiulSR5Zy7FNpTvzlKC5/c6RP/31yA==","signatures":[{"sig":"MEQCIB2sGMJPOeFUBcCsJvSFLOGkqjq8GsIvmRuTOuK2Uw1RAiBX2n4dxrXRL9eLoRkhAq242bFqM/BoHN8pK25Cu5sVmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":458230},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"e5a3429d802564132b16808a5b8a8e15a023a548","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v22.22.3+x64 (linux)","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"22.22.3","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.1.1","@amazon/vinyl-validation":"^1.1.1"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.1.1","@amazon/vinyl-jasmine-wrapper":"^1.1.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_1.1.1_1779992636234_0.4417635616481923","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@amazon/vinyl-xml","version":"1.2.0","license":"Apache-2.0","_id":"@amazon/vinyl-xml@1.2.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"5cf90015415a5d1f18c70e782746108160c6edbd","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-1.2.0.tgz","fileCount":87,"integrity":"sha512-kQDzYRs9Jh/69rJ1vQwlVgkGEjzUo9doLwTlUJqJUrY0nekrKOWRRDPWptkAg5iDMNuqU7jeAP9hwmfNcUqL1A==","signatures":[{"sig":"MEQCIBLN7gBvmb6JXIqjd4iNJmKgmkhuGTNqzUnPIhtQsMFvAiBd5i9dhNgb42hhBUT34vsjwT2i0FVdwHRvdkZYulIeeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":516859},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"fbb8f1c60c5ada4a11f13954bb6bcb52f3cb0c5a","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.18.0","dependencies":{"@amazon/vinyl-util":"^1.2.0","@amazon/vinyl-validation":"^1.2.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.2.0","@amazon/vinyl-jasmine-wrapper":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_1.2.0_1783026539673_0.9552359208007521","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@amazon/vinyl-xml","version":"2.0.0","license":"Apache-2.0","_id":"@amazon/vinyl-xml@2.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"4c5e6b4f997e0c1e8edfb319f4e377c8cbb67a37","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-2.0.0.tgz","fileCount":87,"integrity":"sha512-ZFGbhBbjhDiWOFRvjtnRG8VM8+8uVSSoCwt+PbE/GVhW35khPA1JPV4Dym4q89vaT/Xp9lhxxg1z4J5nsnXVkg==","signatures":[{"sig":"MEQCIGuDlfJClrfFjShaP2t7EyX9AOEk+jWB3j7+/IsEL6t6AiAUXZLoXI3SGTn+DktHPMa0kKDOxy/WNhvE4WM33Z0r4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":527072},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"88ece0504b080347bbea6f240cf587ee863b7ff3","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v24.19.0+x64 (linux)","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^2.0.0","@amazon/vinyl-validation":"^2.0.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^2.0.0","@amazon/vinyl-jasmine-wrapper":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_2.0.0_1787786889323_0.8937271999199228","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@amazon/vinyl-xml","version":"2.0.4","license":"Apache-2.0","_id":"@amazon/vinyl-xml@2.0.4","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"c827f06d2804ad8b55281f2f4e0cebab23a35de3","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-2.0.4.tgz","fileCount":87,"integrity":"sha512-fbFlhl0QhGPfAGskwzw2m3+DpFSxhn/CwZ4k+EqF48ilADQxYMV3S4n6T3O9VBmzVAmK6tSGn4ZkP01gW+/jJQ==","signatures":[{"sig":"MEUCIQCocCltDlEH+rVaQWK6ENoz+yoVqbZARTyiYn/DlQs46AIgSof3+2dqobjm55PbbBCa2Q/zL4aw64wsmLQkHobrcK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":527025},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"32017124d52ad4afe1f3d22569f13c5536db7799","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^2.0.4","@amazon/vinyl-validation":"^2.0.4"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^2.0.4","@amazon/vinyl-jasmine-wrapper":"^2.0.4"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_2.0.4_1787815920097_0.07102068309768472","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@amazon/vinyl-xml","version":"3.0.0","license":"Apache-2.0","_id":"@amazon/vinyl-xml@3.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"a7255686940f092a09a5b5c41cbdbf969bdf938d","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-3.0.0.tgz","fileCount":87,"integrity":"sha512-1g8TOami+v+MZldhnQijDKM9+7V0LD5nsZ3repyjaZBAfqH2kmz1Y2tch8WBOEzVO0pviFhpLCY2nJ/4Rx6kdA==","signatures":[{"sig":"MEQCIBzkl2/rpeIL31KuDiAHcXbvuKCPZpEEBO5y+SfZek5aAiAMmrQJr6DTYoF/qGHsn9teUaqz/NcUUFrdqpZ5nRdnWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":527025},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"972f64a1f8c67bd131ce66000bcfed4f6ddce214","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^3.0.0","@amazon/vinyl-validation":"^3.0.0"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.0.0","@amazon/vinyl-jasmine-wrapper":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_3.0.0_1787938317255_0.6121698073597972","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@amazon/vinyl-xml","version":"3.0.1","license":"Apache-2.0","_id":"@amazon/vinyl-xml@3.0.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"74645d6f9e49a2e22275a2791e544a1787165e97","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-3.0.1.tgz","fileCount":87,"integrity":"sha512-GmazJzSqsZMTNMOXaKMf/w6bwDD/+UAgcwHRlE0G+PpPnu86cP8zxEYq0bs1d4AcM94RIzTINBh810LBJxmiUg==","signatures":[{"sig":"MEQCIEA2Ii4WS8HGpO8eZmE1yHrHiIhQ4/ylRo3KYClJk/4+AiAPdgGvKuKFhGwLNSUJvtcK46kNS6Vo/XIoOa+UyNFlPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":527025},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"e92800262ee42893adbc6f7e3a5a7391b54859d2","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^3.0.1","@amazon/vinyl-validation":"^3.0.1"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.0.1","@amazon/vinyl-jasmine-wrapper":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_3.0.1_1787964013527_0.46944035115447513","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@amazon/vinyl-xml","version":"1.2.1","license":"Apache-2.0","_id":"@amazon/vinyl-xml@1.2.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"261e714b5c41e9afa498657d16c204a087b55c41","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-1.2.1.tgz","fileCount":87,"integrity":"sha512-Cc+yCxPpAKNhFRllrXz8YkJd0jjeFl8UuoJ8dBSBRZfWxG20ogvL8nxmvimED7SIehbS+m4ADn3xY9l4CS9GKQ==","signatures":[{"sig":"MEUCIQCr5mPV1QJMHP8ZqDR3YxkZH6ZCNYvOnjcg3/T5tj077wIgen3UMDdbiTd/Jd7ByI/dukDjhtlfWzBFNn/e7GJGNss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":517710},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"7991713ee8da012613849053b979cd2517f1336c","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"11.16.0","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.12.0","dependencies":{"@amazon/vinyl-util":"^1.2.1","@amazon/vinyl-validation":"^1.2.1"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@amazon/vinyl-build-utils":"^1.2.1","@amazon/vinyl-jasmine-wrapper":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_1.2.1_1788370022229_0.4574851667622326","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@amazon/vinyl-xml","version":"3.1.0","license":"Apache-2.0","_id":"@amazon/vinyl-xml@3.1.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"2eea6ede6079520d22fa50985a5b34abada74ccc","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-3.1.0.tgz","fileCount":87,"integrity":"sha512-jnL0yAjdoGt5me14JKisFerTgiOznAAncU4rfCCTnG+f9vhTb+spMN/zp1wJLivWxtWoJUBMTx00xHJSxDpmVA==","signatures":[{"sig":"MEUCIQClBRV/jz3LUivufJKQ301GToYrmPfPn7XJmEm+reG/MAIgZjGtLoDnOo35uuD+SBos3QY8bel6/SW6vG0VTXnxC9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":527185},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"9e3200fa30db5543427e4618e8e2f0a20cf57996","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"A SAX XML parser","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.20.0","dependencies":{"@amazon/vinyl-util":"^3.1.0","@amazon/vinyl-validation":"^3.1.0"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.1.0","@amazon/vinyl-jasmine-wrapper":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-xml_3.1.0_1788627347110_0.4714313681082154","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@amazon/vinyl-xml","version":"3.2.0","description":"A SAX XML parser","repository":{"type":"git","url":"git+https://github.com/amazonmusic/vinyl.git"},"license":"Apache-2.0","module":"./dist/index.js","main":"./dist/index.cjs","types":"./dist/types/ts3.7/index.d.ts","type":"module","sideEffects":["test/**/*"],"typesVersions":{">=5.4":{"*":["./dist/types/current/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]}},"exports":{".":{"types@>=5.4":"./dist/types/current/index.d.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.js"}},"scripts":{"analyzeExports":"tsx buildSrc/analyzeExports.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","build":"tsx buildSrc/build.ts","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","test:coverage":"c8 npm run test","watch":"tsx buildSrc/build.ts --watch","watch:release":"tsx buildSrc/build.ts --watch --release","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix"},"devDependencies":{"@amazon/vinyl-build-utils":"^3.2.0","@amazon/vinyl-jasmine-wrapper":"^3.2.0"},"dependencies":{"@amazon/vinyl-util":"^3.2.0","@amazon/vinyl-validation":"^3.2.0"},"publishConfig":{"access":"public"},"gitHead":"9b169bdcf10b790dc725df50f1bb6f175fc9a351","_id":"@amazon/vinyl-xml@3.2.0","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"homepage":"https://github.com/amazonmusic/vinyl#readme","_nodeVersion":"24.20.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-f3rQF2C6MwPCCqMZ8q4XfAldSGRHbQrSnAkTS+gGKr94ee0tuoXuAdJk6cHOvrRBQka/KmN1pyVe8OO2aD+ptg==","shasum":"c8ddb0007e0de7f1c2bd961f1de5b61fb36ee7a7","tarball":"https://registry.npmjs.org/@amazon/vinyl-xml/-/vinyl-xml-3.2.0.tgz","fileCount":87,"unpackedSize":527185,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-xml@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICBuqC1N0kObbQGShCcbFi3udDsc/5wM6H22MdtzrQxGAiBtlZTSWLwhxWEBAHqZacTScOJEzerbXnUz/ROnAAZgdw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e8f6f8cf-f7cf-4dfb-89cc-7d4530360c49"}},"directories":{},"maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vinyl-xml_3.2.0_1788999373612_0.5107995845109159"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-27T23:27:26.400Z","modified":"2026-09-10T00:16:14.107Z","1.0.0":"2026-05-27T23:27:26.729Z","1.1.0":"2026-05-28T14:51:19.646Z","1.1.1":"2026-05-28T18:23:56.386Z","1.2.0":"2026-07-02T21:08:59.803Z","2.0.0":"2026-08-26T23:28:09.458Z","2.0.4":"2026-08-27T07:32:00.225Z","3.0.0":"2026-08-28T17:31:57.401Z","3.0.1":"2026-08-29T00:40:13.660Z","1.2.1":"2026-09-02T17:27:02.377Z","3.1.0":"2026-09-05T16:55:47.379Z","3.2.0":"2026-09-10T00:16:13.744Z"},"bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"license":"Apache-2.0","homepage":"https://github.com/amazonmusic/vinyl#readme","repository":{"type":"git","url":"git+https://github.com/amazonmusic/vinyl.git"},"description":"A SAX XML parser","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"readme":"# @amazon/vinyl-xml\n\n[![Website](https://img.shields.io/badge/website-amazonmusic.github.io%2Fvinyl-blue)](https://amazonmusic.github.io/vinyl)\n[![npm](https://img.shields.io/npm/v/@amazon/vinyl-xml.svg)](https://www.npmjs.com/package/@amazon/vinyl-xml)\n[![size](https://img.shields.io/bundlejs/size/@amazon/vinyl-xml.svg?label=size)](https://bundlejs.com/?q=@amazon/vinyl-xml)\n\nA fast SAX XML parser that produces a type-safe object validated against an\nXSD-derived rule set. Designed for parsing large schema-heavy documents like\nDASH manifests with strong static typing and exact-source error reporting.\n\n## Install\n\n```shell\nnpm install @amazon/vinyl-xml\n```\n\n## Overview\n\nTo create a parser for a schema, first create the type definitions for the shape\nof the document.\n\nThere are many ways to do this. For the DASH 2011 schema we used\n[CXSD](https://github.com/charto/cxsd) (MIT Licensed); take the type definitions\nand discard the generated parser.\n\nUsing the type definitions we build a rule set that follows the XSD. This is a\nmanual process; follow the XSD closely to match `min`/`max` occurrences,\ndefaults, and required attributes.\n\n`MPDType` example, following the\n[MPDType definition](https://github.com/Dash-Industry-Forum/MPEG-Conformance-and-reference-source/blob/master/conformance/MPDValidator/schemas/DASH-MPD.xsd):\n\n```typescript\nconst mpdType: XmlRules<MPDtype> = {\n    ProgramInformation: elements(programInformationType),\n    BaseURL: elements(baseURLType),\n    Location: elements({ _content: charactersString }),\n    Period: elements(periodType, { minOccurs: 1 }),\n    Metrics: elements(metricsType),\n    EssentialProperty: elements(descriptorType),\n    SupplementalProperty: elements(descriptorType),\n    UTCTiming: elements(descriptorType),\n    availabilityEndTime: attrDateTime,\n    availabilityStartTime: attrDateTime,\n    id: attrString,\n    maxSegmentDuration: attr(parseDuration, stringifyDuration),\n    maxSubsegmentDuration: attr(parseDuration, stringifyDuration),\n    mediaPresentationDuration: attr(parseDuration, stringifyDuration),\n    minBufferTime: attr(parseDuration, stringifyDuration, { required: true }),\n    minimumUpdatePeriod: attr(parseDuration, stringifyDuration),\n    profiles: attr(parseProfiles, stringifyProfiles, { required: true }),\n    publishTime: attrDateTime,\n    suggestedPresentationDelay: attr(parseDuration, stringifyDuration),\n    timeShiftBufferDepth: attr(parseDuration, stringifyDuration),\n    type: attr(parsePresentationTypeType, stringify, {\n        default: 'static',\n    } as const),\n} as const\n```\n\n_Style note — abbreviations should be cased as they are in the XSD; this follows\nthe exception noted in the\n[TS style guide](https://google.github.io/styleguide/tsguide.html#identifiers-abbreviations)\nwe follow._\n\n`XmlRules` definitions are meant to be human-readable and easy for the\nTypeScript compiler to validate that the rule matches the type definition.\nBefore this rule set can be used by the parser or stringifier, it must be mapped\nto a more performant machine-friendly version.\n\nMap the rules using `mapXmlRules`:\n\n```typescript\nconst dashDrmRulesMapped = mapXmlRules(dashDrmRules)\n```\n\n`XmlRules` maps XML content to a typed object using four rule types:\n\n- `attr` — attributes\n- `element` — elements with a max occurrence of 1\n- `elements` — elements as an array\n- `characters` — text nodes (concatenated)\n\nAttribute and characters handlers provide parse and stringify functions to\nserialize/deserialize the value from the XML.\n\nFrom the rule set, create an XML handler for the SAX parser:\n\n```typescript\nconst dashManifestHandler = new ParseXmlHandlerImpl(dashDrmRulesMapped)\n```\n\nWith the handler we can parse XML into a validated, type-safe object that\nmatches our type definition:\n\n```typescript\nexport function parseDashManifest(manifest: string): DashDrmManifest {\n    return parseXml(manifest, dashManifestHandler)\n}\n```\n\n> **Concurrency note:** A handler is stateful while parsing a document, so if\n> multiple workers parse documents simultaneously, create one handler per worker\n> thread.\n\nThe overall process is as follows: `parseXml` is given an XML string and a\ncontent handler. A content handler abstractly provides methods for opening and\nclosing XML nodes. Based on an XSD schema, we can build a content handler\n`XmlRules` that knows how each node should be processed.\n\nAt a low level, `parseXml` uses `StringParser` to read XML content. As elements\nare opened and closed and attributes or text nodes are read, the corresponding\ncontent handler method is invoked. Validating against the schema rules as the\ndocument is read gives the added benefit of knowing the exact XML source\nlocation of an invalid document.\n\n## Namespaces\n\nNamespaces are not optional; if an XSD schema uses a namespace, the namespace\nmust be defined in the rules.\n\n```typescript\nexport const dashNamespaceUri = 'urn:mpeg:dash:schema:mpd:2011'\n\nexport const dashManifestXmlRules: XmlRules<DashManifest> = {\n    MPD: element(mpdType, {\n        required: true,\n        namespaceUri: dashNamespaceUri,\n    }),\n} as const\n```\n\nNamespaces follow correct scoping and defaulting rules — see the\n[W3C spec](https://www.w3.org/TR/REC-xml-names/).\n\nFor `XmlRules`, namespaces inherit the parent rule's namespace unless\noverridden. When using `stringifyXml`, defining namespace prefixes is supported\nbut optional. If a prefix isn't specified, one is generated when the default\nnamespace isn't used.\n\n## Merging Schemas\n\nIn many cases, an XML document has multiple XSD definitions. These can be merged\nusing `mergeXmlRules`:\n\n```typescript\nconst dashDrmRules = mergeXmlRules(\n    dashManifestXmlRules,\n    createDashProtectionXmlRules(cencXmlRules),\n    createDashProtectionXmlRules(playreadyXmlRules)\n)\n```\n\n`mergeXmlRules` ensures the combined schema definitions are compatible. When the\nrules represent separate XSD schemas with different namespace URIs, there\ngenerally isn't overlap.\n\n## Stringify\n\n`XmlRules` provides both deserializers and serializers, so the same mapped rule\nset can be used in both the content handler for `parseXml` and `stringifyXml`:\n\n```typescript\nstringifyXml(xmlString, dashDrmRulesMapped)\n```\n\n### Element Ordering\n\nIn an XML schema, order matters for `xs:sequence` definitions. Amazon Vinyl\n`XmlRules` maps define properties in this order. Order doesn't matter for\nparsing, but it does for serialization to pass schema validation. This means\nserialization relies on the ES6 requirement that object keys are ordered by\ninsertion. Many ES5 browsers also follow this rule, but `stringifyXml` will not\nbe to spec for browsers that don't. XML serialization is not required for\nplayback — only deserialization.\n\n## Limitations\n\nThe parser currently ignores processing instructions and supports only the\ndefault standard XML entities.\n\n## Parent References\n\nParsed XML nodes have a reference to their parent elements in the non-enumerable\n`parent` attribute. References are correctly reassigned when using the `clone`\nutility and are not included by `JSON.stringify`. Type definitions may include a\n`parent` property; the type isn't enforced by the rule sets and is expected to\ncorrespond to the type of parent element, or simply `any`.\n\n## Name Conflicts\n\nIn certain edge cases, an XSD may describe element or attribute rules that\ncannot be mapped 1:1 with property names. Cases include:\n\n- The child element or attribute name is an ES6 reserved word such as `public`,\n  `private`, `get`, `set`, etc.\n- The name is an internally reserved word: `parent` or `clone`.\n- A child element local name matches an attribute name. In these cases, choose a\n  different property name and provide a `localPart` value to the rule\n  configuration.\n\n```typescript\nimport { attrString } from '@amazon/vinyl-xml'\n\ntype MyType = { _parent: string }\n\nexport const myXmlRules: XmlRules<MyType> = {\n    _parent: attrString({ localPart: 'parent' }),\n} as const\n```\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}