{"_id":"@amritk/lint","_rev":"21-d606d037ade3f254db3ae1b1a124ac56","name":"@amritk/lint","dist-tags":{"latest":"0.6.0"},"versions":{"0.0.0":{"name":"@amritk/lint","version":"0.0.0","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.0.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"2485fc12fa9c92f550d32ec06f4f072c1bf3c6dc","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.0.0.tgz","fileCount":2,"integrity":"sha512-mCaArmUcVFpVSj4UVVkrY01TVPOWkD3cJiSQlCJBxmSLrXSNww7yu0PwGpABpc1c5WROc44ubw3SySq8i82XwQ==","signatures":[{"sig":"MEUCIQDy1yVtZQgUgbe2qOzZzpmGT9Buejw1qA1LOBgs7sccPAIgYS428E9+3/4X5NR9SX0FfX1J/1T8zJlffsxRjZCis1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9283},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","development":"./src/index.ts"},"./package.json":"./package.json"},"gitHead":"1e606b1273ade804f5c79d14dc251afa8f1f0cb5","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"amritk","email":"amrit+spam@hockey-community.com"},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.16.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"@amritk/yaml":"workspace:*","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lint_0.0.0_1783467991732_0.6749196805132434","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@amritk/lint","version":"0.1.0","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.1.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"85c28ec19c5482275222a6c0c226ccc8ea8f29b8","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.1.0.tgz","fileCount":76,"integrity":"sha512-UUH1dKMQnHnQx3Ygo0dxvABjD1PCxfQb6XtzW3ifSpyXu1qdOcDDNCgX6LI3TQFUTP5NeOtYhKDU8OiJ50rKdQ==","signatures":[{"sig":"MEYCIQDtnsl08EFGfjZLoVuCqj8bIP9vlVy60X6FtqnlTZQ3gwIhAPJZM8VigXJlH4EHDW7saFztheoui2PrRv+mCj6iJ68i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":148489},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"78313fe8e04a42f45ee0c1f86e2b3a9c6aca1b31","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.18.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@amritk/yaml":"0.2.3","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.6.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lint_0.1.0_1783468292063_0.3672302188425711","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@amritk/lint","version":"0.2.0","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.2.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"2279063dcaf7fd973432a9af5b195b257e8d8a0f","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.2.0.tgz","fileCount":136,"integrity":"sha512-rHIeOEfqZjrRQju5WF2CQQk9h4CCgM2zSGaFLhG312JnEGp1kBstGdYqyRImAvUy4e+xkMJly+t0xGAHomNGOw==","signatures":[{"sig":"MEYCIQC9YO4I9Nr/IHQN2bXhffaCJbefGOmRMUIrrjC8ldJGjQIhANib1xQE1FDQqO/PcPJzFqKqjRuNxqHzZJ7MfNWVQMGq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":371841},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"dc9df6a12dbfd96fe15c653ad120a6ebd0b5ab90","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"12.0.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.2.3","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.6.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lint_0.2.0_1783712952023_0.47886367630174953","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amritk/lint","version":"0.3.0","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.3.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"7ebc521960d9bee3e1d348863caa65cb35fa7998","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.3.0.tgz","fileCount":142,"integrity":"sha512-orPbUatyCaN65jo8qil5uBwsjTzLUdhPFnBT9wbrNbotoulsvRpUCIuvl6dyF1ai9awlXOe0+dGfNIbHUJqZTg==","signatures":[{"sig":"MEQCIHx8bh79f/K8HnpFq8Fve6zm8eo69lrDjL+cBK+NNpKqAiB7UXD5MdUpE8ZLuwfjc/jYfJ/DdMxtj0RHNsEmAdkfbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":458363},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"109f93b803d420a3f33e8491f597f75db9bc9ece","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"12.0.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.3.0","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"0.4.0","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.3.0_1784012641259_0.054689500798431157","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@amritk/lint","version":"0.3.1","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.3.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"5bc793b06f2fe72bf417f7994bca9fe476f1bb76","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.3.1.tgz","fileCount":142,"integrity":"sha512-Sd+wTNAqWvHCZ3KaDRVB3CD0e3gz3uD9UOQk6AcAWdACFFyok7w/7wknz71kiWgWEGpPZnzydNWlNLyNNAx0bA==","signatures":[{"sig":"MEYCIQDDksaHNDfvLXDrJDxz8uNC4C0evI4p1+TQqwWdFrddDgIhAPA3PbJvhvAgsEG91kGWoTBVjD5xbrKx9Yij/QL1By9E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":458365},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"7a2e87cf653a9adf14d2f7c0aa19a366463ed6a8","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"12.0.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.3.1","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"0.4.1","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.3.1_1784255644471_0.16597819370727773","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@amritk/lint","version":"0.3.2","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.3.2","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"ac559def6527319b594f96820207fc4bc6c656b6","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.3.2.tgz","fileCount":143,"integrity":"sha512-cfKHyB1zcdNK8Kf6RCxAbTJLniomuxXf63PXs+liZILq+BlJROo0G/7UPTPFRBt57Dd8z86zO8QvERpX3Sm4GQ==","signatures":[{"sig":"MEUCICsppH3F68uZV1qqzMosrTRYwa4dsuzEmDYzLQgNKo8uAiEAvxeCjpZ98xTurw06xxzZTy3ZvEryHdp/3wZVODeemoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":459428},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"29a068e0d1778e8cc7d775b2829cccf572114aad","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"12.0.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.3.2","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"0.4.2","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.3.2_1784280006519_0.221035799919987","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@amritk/lint","version":"0.3.3","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.3.3","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"0a2aecaff230ad2d3d1aa4facb71d774d1e69c5e","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.3.3.tgz","fileCount":143,"integrity":"sha512-ja/43FyaW5I8lUEcJ4amPXUX2Ng0LDrwtAXrLLM4p7yQOVtahMi5TwS6OXYm7UPRCsDk9NOy2A3Wx6wtRDpkVA==","signatures":[{"sig":"MEQCIGz9Tz9QgQvqTIL7ixbdLI7fvyvk4Z5qVgxfMgogwE3lAiB49CYCtyyGjZZIWpr1rLzHCAB9gtWNvm5o7yXL+3Midw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":315244},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"b90fd1c8c047fc8481705018eddd577d19108c96","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"12.0.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.3.3","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.7.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"0.4.3","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.3.3_1784452128778_0.11270107507312854","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@amritk/lint","version":"0.4.0","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"fffa23fb2112839309d9cd89a5f0209595b9ba46","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.0.tgz","fileCount":144,"integrity":"sha512-cRbOMcSsewk/CH3/Q93+JJcjZD7ghsa6MWcpmN4+7mhvrfRe/6zP1VPDqWJiXTdYuyKKS8j95246ZDQipaU6GA==","signatures":[{"sig":"MEQCIEoXE54c4yRThNs1gxZBHi+QAET/iXlGxrRwGZJGzyFjAiBudiM6yaeaKZ+SR/ZYj0cQnm2NaxHcAXlW9kqF1gGwhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320632},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"30b4c324c09d2928d62084973cdde49d3356b4b4","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"12.0.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.3.4","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"0.4.4","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.0_1784702755994_0.034934779145800565","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@amritk/lint","version":"0.4.1","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"9017c75465e1f26c26e90490b4434c416a48f9f2","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.1.tgz","fileCount":144,"integrity":"sha512-+jXCR9V+UjUJukV4AW0InAvZ7y/hvcRKbsicW9gqyNgFIsqpgBlSpfFBOaeuO1g6XCTG1dk74EQgMlVZRCUszw==","signatures":[{"sig":"MEUCICOkT2e0t7vw7wkiH2XOi33mma73VOuWZWTbHiLBzAovAiEAqN6TPVFOmk3YxD+CCADFS2gFQ89bPWDQ+gLrb70gY6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320650},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"4008a1da41512933f7d05206b0d7bc6563cea4ce","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"12.0.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.3.4","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"0.4.4","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.1_1784875832929_0.21870197849941686","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@amritk/lint","version":"0.4.2","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.2","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"9e54a294503839ac9dc930f96052d0520aa56c33","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.2.tgz","fileCount":144,"integrity":"sha512-aZSXLeGQIRC4xBWs6NGHV7R+paAhE1lylAsKRHUQiSSQKFXuekPWe4l56LLueZnJUGsxubisW/8M4eaxjtxscg==","signatures":[{"sig":"MEUCIQCUYuTxYZT+mVggxDyHSQyVzbhPwiJJ0Mf0t3Oq8tbKvAIgaXz26HGXlwMIpLKRMyC4FUPFET0XBeee5NBma87OxkE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320719},"type":"module","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"3630667665a873c96f071e3b8d12f538e751d4f0","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.18.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.3.5","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.9.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"0.4.5","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.2_1785262238386_0.23717687413283883","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@amritk/lint","version":"0.4.3","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.3","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"2e1a590e40f7417c497f714552743ffd45aec39a","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.3.tgz","fileCount":144,"integrity":"sha512-hhSl+ZHuHq1EkpYxhQTCLT66b+4BxlyiMNuYSOghyFRACzmKGxJhjb6mcJZJJNEpvbW6gUV5HRiKYdhsOff9qw==","signatures":[{"sig":"MEYCIQCbFRJFnZh1rcdTW2qvyGG8FDqxcUIVZAYkdZp+Pgn0ZQIhAJPGHjI/lmCC7q7BOMXDmFt86gnzlRc+7MRGo3VeN6tv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320967},"type":"module","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"a847520955a31ba4dfcac8948dfd5d964cf0bb40","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"0.4.0","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"0.9.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"0.4.5","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.3_1785453364988_0.5038863960301372","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@amritk/lint","version":"0.4.4","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.4","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"441bede52f768905116c025f197e329ea5de8afd","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.4.tgz","fileCount":156,"integrity":"sha512-DZNSjgZc4CqGvppeB2g6OLJLkACmTjHa/PPK5DFW2USiQ9q6fvnCQfdAKZqxGS6g6uv/17IFXdvojwYB+i8Bag==","signatures":[{"sig":"MEYCIQCYmmUHgU9W+PvHrmv0XTvGniE2Rj9SbTyDMjxXoekHFwIhAOCgraFH0SNy5GTjjHoKYvLplEQqY1uxlpbsSNQ6jYmx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":441973},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"846ea8bfd0ad501a9f7a6d6fa21258b558ac5e4a","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"^0.5.0","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.5.0","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.4_1785867565405_0.5699920787102233","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@amritk/lint","version":"0.4.5","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.5","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"e21db2f3a92c95a51b6195909e0e61e3b7c4e89b","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.5.tgz","fileCount":156,"integrity":"sha512-lsW6CN9CP+Dzvn15JgG6woiye6AnN4b9xOwpncYcwnKhGhqPqTimcXicEZSBE2AW+HbdsJ6MCXTNK6MWblEVbw==","signatures":[{"sig":"MEUCIQDSAbpJsLKdUxSATsVQ4MPnVXM9nD2zb1QVUayJhK8tFQIgZss4qclChb8qIwzTCL4OTdGJLFjXmaOS/2WaMK8AF+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":441973},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"c3863a9e7f666be6f4b800b2800b59d13097c368","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"^0.6.0","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.5.0","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.5_1785899946956_0.40747774276632076","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@amritk/lint","version":"0.4.6","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.6","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"021c5ddb8f52423037f1a6e85f0cc303c1ced9c8","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.6.tgz","fileCount":156,"integrity":"sha512-jBsqoMNDPXi4zlLpmfRzA8gQWlrxc5kaoYJrVaiKve5uGw0WN1yKJHhg4wQbttIT+QbhW8ExUVLNmboRuSvn7g==","signatures":[{"sig":"MEYCIQCB2lIM6S1E9xXb8LFMB+ji4HBtl1Glm1NK9BflC40tMgIhAN74T4hcuIYnMuh/5aphLnCeiDy32a6zeU00cK3TIiAg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":442039},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"bca90d95d94dfbe78cabd0d47214d245ff56e987","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"^0.7.0","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.5.0","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.6_1786003977295_0.5796562394672922","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@amritk/lint","version":"0.4.7","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.7","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"36d47e7644d0f00501594917bd44d4fa4f45efcb","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.7.tgz","fileCount":156,"integrity":"sha512-Uc5ihJGlNnTX6+nd/rKT38Gu/vTDFLyHDbxqodHSeUFEcYM4jZeaPqouwpi6Ya3xvQlhdxPIRuVzZ4sWD4HxYw==","signatures":[{"sig":"MEUCIQCz1UkGkoqzMCAVfrcd12KXEA2fFgELmeuu6yLQFtUNXgIgT4tjD9wuJE3xPLQJcCCy9AAI15tCiO0N4qNQOiRmZxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":442039},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"a4683ed81fdf8c600c59b7b2589c019a1615b972","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"^0.7.1","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.5.1","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.6"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.7_1786173893879_0.8468653838964026","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@amritk/lint","version":"0.4.8","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.4.8","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"fc9d19b847da478a77bd63009e9806bf0efada75","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.4.8.tgz","fileCount":158,"integrity":"sha512-66vGb/WqSNHuW0ZwNUBqmfoIhzNmHT2pl0dMlLo+30Nkg7cJ7mk6V5SCzX9Mcd+6Tr805OsQ3sDbtlHglT+dfg==","signatures":[{"sig":"MEYCIQDCnTG1swD9IIcnGcixC/zq4IY2wC1GOE5Dh+WPYPp2uwIhANQl8j5X+8rZQ6KkOmHBG9BeLlh47VReLpciEJLWhryO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.4.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":445062},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"}},"gitHead":"605071c88c9f2416d455c091e1c662e17bf104db","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.0","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@amritk/yaml":"^0.7.1","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.7.0","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.7"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.4.8_1786479964240_0.5236147604557517","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@amritk/lint","version":"0.5.0","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.5.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"08d02e4cbc281c9484dfacb2b4cd1f7def3022dc","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.5.0.tgz","fileCount":228,"integrity":"sha512-MUmXNTxV2yO6w9Y8lh+s7kprg50aDFkytxqog9i+BTp4drbaGkPYWmTpH4t0TjbzZbF0m4tgrZffaPr00d4yFg==","signatures":[{"sig":"MEQCIAffwAn/D/oM4LR9cbbi71lY9EEZ5cJyPKu2sMN2eHT2AiBFVoKqSBxBghYKCtc+kEyPZnGDkxWXdifmnCbIzgl6hQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA60gKwpQ+s5cAu3bgan4UP4+GKeKb0h6sZa7u7zV98OAiEA0Jj9kqVdHMW/gOMycLWGmufMRReeCnSxi9N91Il9ZrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1548325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"},"./rules/asyncapi":{"types":"./dist/rules/asyncapi/index.d.ts","default":"./dist/rules/asyncapi/index.js"}},"gitHead":"3078ec8c5b266082c862fecd86f122d21c591270","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@amritk/yaml":"^0.7.2","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.7.1","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.7"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.5.0_1788224707850_0.2751807222783349","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@amritk/lint","version":"0.5.1","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.5.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"698c69bfad6cb0689c06a152ecb33a3c31e595c7","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.5.1.tgz","fileCount":228,"integrity":"sha512-P1nlc4RcjUwSOHklicPFD25nF7YakzCPItMflAc9zjbSfh7ThFEAW+Pw7Yv/c5/OKw0VVywh8yYimHp/BFv3oA==","signatures":[{"sig":"MEUCIGANBmtehmU0SWBdBM3uzEp5N1ADQh/2dFDQ/OnsAn5DAiEA2+pXXKvetvgt3IMZIe2oD8rhCN9jDpiJIxkZos7HXL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA3Bmoy/Jxyg8LkyHMQ/ohCHtVoAUbPak7xWEJ8QbiFIAiAtwqg8NkgYucCrP3ApK8fPLwMW8An6deh5sZojD4cP0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1548325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"},"./rules/asyncapi":{"types":"./dist/rules/asyncapi/index.d.ts","default":"./dist/rules/asyncapi/index.js"}},"gitHead":"86e0964f0c805ea2381abadc17285dfe3efad57f","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@amritk/yaml":"^0.7.2","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.7.1","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.7"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.5.1_1788332486600_0.1856755451282277","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@amritk/lint","version":"0.5.2","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.5.2","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"5b650c2e0e6838d1a2b246c6b631caf5605f5785","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.5.2.tgz","fileCount":228,"integrity":"sha512-2jv2Zm7SsPoGP1pjHm5mCXoEfcMVThfCOFgYBJh1QOVyuU+O9V/fckRj3xHBLgfVNWpIC+OhEtj1ejGj9VWlZg==","signatures":[{"sig":"MEQCIB2+b+kqDGXiPPFqgNA5ZpMEeJxR+bkRVIl5dCCh4p9mAiAlVLOLtTku/gspsuFPvol8E07+TjY3KNR0ErmszNAbyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD2ye2+7UyTWNPSERopH8kmJB0u2EvB2XknsbEDN/jf7wIhAPj4cjlmdtoTgqzdwL+s5rMR19QDDlj8FRrUjuYEo5Qp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1548325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"},"./rules/asyncapi":{"types":"./dist/rules/asyncapi/index.d.ts","default":"./dist/rules/asyncapi/index.js"}},"gitHead":"16855e54c4663acf512473d2387d3a1adba4ce48","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@amritk/yaml":"^0.7.2","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.7.1","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.7"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.5.2_1788381991130_0.3403635916098575","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@amritk/lint","version":"0.5.3","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/lint@0.5.3","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"f9349f5dcefcbf4492e7f66cbc1e06fb02aa59e2","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.5.3.tgz","fileCount":228,"integrity":"sha512-+rfisV7KqVBTzHcJUUjPSoo2BquTQcoK6px4gwj/ANpObXJygkfsmAD6f22zCJrctftds5JaM1SpIbrLQ3JMgA==","signatures":[{"sig":"MEYCIQD/jppnugvxxIFfqk5ry9gdUTmdI68Nvb66MbaA3DqPcQIhAJ2u00YtTnksRVMmB39sacXpOZ9J7NgYDrPlpicmr3Zk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDm/59TKyHozSZ9yY2jBlaUoVkisEGqNQ98onJKohiP9QIgNbcJt48pj6bZMCWYtxlo9srvFymoc05pXVAUQMYhwao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1549531},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"},"./rules/asyncapi":{"types":"./dist/rules/asyncapi/index.d.ts","default":"./dist/rules/asyncapi/index.js"}},"gitHead":"1f4bf1313967417d33eef93e6a6c553e12d218c6","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run build && bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","bench:node":"node ./bench/run.ts","types:check":"tsgo -p . --noEmit","prebench:node":"bun run build && bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@amritk/yaml":"^0.7.2","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.7.1","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.7"},"_npmOperationalInternal":{"tmp":"tmp/lint_0.5.3_1788568597370_0.2987520417913716","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"_id":"@amritk/lint@0.6.0","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"960eb1990aa0cdd29f3730979e154181d5618075","tarball":"https://registry.npmjs.org/@amritk/lint/-/lint-0.6.0.tgz","fileCount":230,"integrity":"sha512-k/uiul9q4GCMS79oA8aj0RYdNCzLmhR2GxqT5PUoSILB158ODn71dskmBliaLyPAQkhMvvlPVRCocoX7SOKsZA==","signatures":[{"sig":"MEUCIQC7L8yZsfDqjX5NxO2sQlxXfl0cLVSjMcJKSDoX7U7qlgIgKM2CgVqUr7QOqyMCaNh2NHrX31QJ6pjW3WijVj8OMAs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD8wSuuiCQqXejSKWdPh/ijBOE0FteELXhRRbBip6JoMAIgFKuNDyKWIO5FitroGCS3aEQyY9M/qHJ2aNNvSeRKCQg="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2flint@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1556882},"main":"./dist/index.js","name":"@amritk/lint","type":"module","types":"./dist/index.d.ts","author":{"name":"amritk"},"module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/core/types.d.ts","default":"./dist/core/types.js"},"./package.json":"./package.json","./rules/openapi":{"types":"./dist/rules/openapi/index.d.ts","default":"./dist/rules/openapi/index.js"},"./rules/asyncapi":{"types":"./dist/rules/asyncapi/index.d.ts","default":"./dist/rules/asyncapi/index.js"}},"gitHead":"43832d7a66b87b09af416dc3d38ee65e54bc4797","license":"MIT","scripts":{"test":"NODE_ENV=production vitest run --root ../.. packages/lint/","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node scripts/copy-schema-json.mjs && node ../../scripts/strip-comments.mjs","prebench":"bun run build && bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","bench:node":"node ./bench/run.ts","types:check":"tsgo -p . --noEmit","prebench:node":"bun run build && bun run --filter='@amritk/runtime-validators' --filter='@amritk/yaml' --filter='@amritk/resolve-refs' build","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"version":"0.6.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9919fb6-75dd-4be1-9e8d-a6fb7f05ed8f"}},"homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"_npmVersion":"11.19.1","description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","directories":{},"maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@amritk/yaml":"^0.7.2","jsonc-parser":"^3.3.1","@amritk/runtime-validators":"^0.14.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@amritk/resolve-refs":"^0.7.1","@stoplight/spectral-core":"^1.23.1","@stoplight/spectral-parsers":"^1.0.5","@stoplight/spectral-rulesets":"^1.22.7"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lint_0.6.0_1789154192211_0.29520297060312717"}}},"time":{"created":"2026-07-07T23:46:31.538Z","modified":"2026-09-11T19:16:32.634Z","0.0.0":"2026-07-07T23:46:31.920Z","0.1.0":"2026-07-07T23:51:32.190Z","0.2.0":"2026-07-10T19:49:12.154Z","0.3.0":"2026-07-14T07:04:01.425Z","0.3.1":"2026-07-17T02:34:04.613Z","0.3.2":"2026-07-17T09:20:06.664Z","0.3.3":"2026-07-19T09:08:48.921Z","0.4.0":"2026-07-22T06:45:56.142Z","0.4.1":"2026-07-24T06:50:33.070Z","0.4.2":"2026-07-28T18:10:38.563Z","0.4.3":"2026-07-30T23:16:05.146Z","0.4.4":"2026-08-04T18:19:25.593Z","0.4.5":"2026-08-05T03:19:07.079Z","0.4.6":"2026-08-06T08:12:57.439Z","0.4.7":"2026-08-08T07:24:54.019Z","0.4.8":"2026-08-11T20:26:04.389Z","0.5.0":"2026-09-01T01:05:07.971Z","0.5.1":"2026-09-02T07:01:26.696Z","0.5.2":"2026-09-02T20:46:31.251Z","0.5.3":"2026-09-05T00:36:37.449Z","0.6.0":"2026-09-11T19:16:32.300Z"},"bugs":{"url":"https://github.com/amritk/mjst/issues"},"author":{"name":"amritk"},"license":"MIT","homepage":"https://github.com/amritk/mjst/tree/main/packages/lint#readme","keywords":["lint","linter","json","yaml","json-schema","style-guide","ruleset","typescript","mjst"],"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/lint"},"description":"A fast, format-agnostic JSON/YAML style-guide linter with JSON Schema and custom rules.","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"readme":"<div align=\"center\">\n\n# @amritk/lint\n\n**A fast, format-agnostic JSON/YAML style-guide linter — JSON Schema validation and custom rules, with exact `line:column` findings.**\n\n![status](https://img.shields.io/badge/status-pre--alpha-ef4444?style=flat-square)&nbsp;\n![version](https://img.shields.io/npm/v/@amritk/lint?style=flat-square&logo=npm&logoColor=white&label=version&color=6366f1)&nbsp;\n![license](https://img.shields.io/badge/license-MIT-22c55e?style=flat-square)&nbsp;\n![JSON Schema](https://img.shields.io/badge/JSON%20Schema-2020--12-f97316?style=flat-square)&nbsp;\n![node](https://img.shields.io/badge/node-%E2%89%A520-339933?style=flat-square&logo=node.js&logoColor=white)&nbsp;\n![vibe coded](https://img.shields.io/badge/vibe-coded-a855f7?style=flat-square)\n\n</div>\n\n---\n\n## Overview\n\n`@amritk/lint` lints **any** JSON or YAML document against a ruleset you define. A rule matches nodes with a **JSONPath** (`given`) and runs a **function** (`then`) over each match — structural validation against a **JSON Schema**, style checks (`casing`, `pattern`, `alphabetical`, `length`, …), or your own custom function. Every finding carries an exact `line:column` range, because the parser keeps source positions on every node.\n\nIt is **format-agnostic**: the core engine ships no built-in ruleset and knows nothing about OpenAPI or any other schema — you bring the rules. This is JSON/YAML style-guide linting with JSON Schema and custom rules at its core.\n\nFor OpenAPI and AsyncAPI specifically, the `@amritk/lint/rules/openapi` and `@amritk/lint/rules/asyncapi` subpaths ship ready-made presets on top of that engine — see [OpenAPI ruleset](#openapi-ruleset) and [AsyncAPI ruleset](#asyncapi-ruleset) below.\n\nThe CLI lives in the [`mjst`](../cli) binary as `mjst lint`; this package is the programmatic library behind it.\n\n---\n\n## Installation\n\n```bash\nnpm install @amritk/lint\n# or\npnpm add @amritk/lint\n# or\nbun add @amritk/lint\n```\n\nFor the command line, install [`@amritk/mjst`](../cli) and run `mjst lint` (see [CLI](#cli) below).\n\n---\n\n## Usage\n\n### Lint a document\n\n```ts\nimport { lintDocument } from '@amritk/lint'\n\nconst ruleset = {\n  rules: {\n    'require-name': { given: '$', severity: 'error', then: { field: 'name', function: 'truthy' } },\n    'name-kebab': { given: '$.name', severity: 'warn', then: { function: 'casing', functionOptions: { type: 'kebab' } } },\n  },\n}\n\nconst findings = await lintDocument('version: 1\\n', { ruleset, source: 'service.yaml' })\n// → [{ code: 'require-name', message: 'The value must be truthy', path: ['name'],\n//      severity: 0, source: 'service.yaml', range: { start: { line: 0, character: 0 }, … } }]\n```\n\n`severity` is a `DiagnosticSeverity` — `0` error, `1` warning, `2` info, `3` hint — and `range` is a zero-based `{ line, character }` span you can render a squiggle from.\n\n### Validate against a JSON Schema\n\nThe built-in `schema` function runs an arbitrary JSON Schema (Draft 2020-12) over the matched node, via [`@amritk/runtime-validators`](../runtime-validators):\n\n```ts\nconst ruleset = {\n  rules: {\n    'config-schema': {\n      given: '$',\n      severity: 'error',\n      then: { function: 'schema', functionOptions: { schema: { type: 'object', required: ['port'], properties: { port: { type: 'integer' } } } } },\n    },\n  },\n}\n\nawait lintDocument('port: not-a-number\\n', { ruleset })\n// → a `config-schema` finding pointing at `port`\n```\n\n### Custom functions and `extends`\n\nA ruleset can pull in rules from another file and load custom functions by name (resolved relative to the ruleset that declares them):\n\n```yaml\n# .lint.yaml\nextends:\n  - ./base.yaml            # a file path or an npm package\nfunctions: [no-secrets]    # loaded from ./functions/no-secrets.{js,cjs,mjs}\nrules:\n  no-secrets:\n    given: $..*\n    severity: error\n    then: { function: no-secrets }\n```\n\n```ts\nimport { lintDocument } from '@amritk/lint'\n\nawait lintDocument(source, { ruleset: definition, rulesetBasePath: '/path/to/config/dir', source: 'doc.yaml' })\n```\n\nA custom function has the signature `(value, options, context) => { message: string, path?: JsonPath }[]`.\n\n### Trust boundary — who may write a ruleset\n\nA **document** being linted is untrusted input: it is parsed, walked, and matched, and nothing in it can execute code. A **ruleset** is not input — it is configuration, and it is as privileged as the process running the linter:\n\n- `extends` accepts **any** path. `rulesetBasePath` is where resolution *starts*, not a fence: `../../../elsewhere/rules.yaml` and `/etc/rules.yaml` both resolve and load.\n- `extends` of a `.js` / `.cjs` / `.mjs` file, and every custom function named in `functions`, is `require`d — **that is code execution, by design**. This is how custom functions work.\n- YAML/JSON rulesets are *data*: their `given` filter expressions (`[?(...)]`) are parsed and interpreted, never evaluated as JavaScript, so a data-only ruleset cannot run code. A ruleset that names a `.js` file still can.\n\nSo: load rulesets from sources you would trust to run a script. If you accept a ruleset from somewhere less trusted (a multi-tenant service, a PR from a fork), pass **`restrictTo`** — an optional root that every `extends` target and custom function must resolve under:\n\n```ts\nawait lintDocument(source, {\n  ruleset: definition,\n  rulesetBasePath: '/srv/rulesets/tenant-42',\n  restrictTo: '/srv/rulesets/tenant-42', // refuse anything resolving outside this tree\n})\n```\n\n`restrictTo` is off by default and narrows *which* files a ruleset can name. It is not a sandbox: a `.js` file inside the permitted root still runs with full privileges. The OpenAPI preset takes the same option — `createOpenApiRuleset(definition, basePath, { restrictTo })`.\n\nOne thing `restrictTo` does not cover: a regular expression a ruleset writes — in `pattern`'s `match`/`notMatch`, or as a literal inside a `[?(...)]` filter — is compiled and run against text from the document. An ambiguous pattern (nested quantifiers over overlapping character classes) can backtrack catastrophically on an input crafted to trigger it, so a hostile *document* can hang the linter through a regex the *ruleset* provided. The built-in rules avoid such patterns deliberately (see the note in `casing`); keep the same discipline in rules you write, and prefer anchored patterns with unambiguous alternatives.\n\n### Auto-fix\n\n`fixDocument` runs the linter and applies a `FixerRegistry` — fixers keyed by rule `code` that map a finding to a formatting-preserving text edit — to a fixpoint, then re-lints:\n\n```ts\nimport { fixDocument, type FixerRegistry } from '@amritk/lint'\n\nconst fixers: FixerRegistry = {\n  'no-trailing-slash': {\n    fix: ({ diagnostic, data }) => {\n      const value = (data as Record<string, unknown>)[diagnostic.path[0] as string]\n      return typeof value === 'string' ? { op: 'setValue', path: diagnostic.path, value: value.replace(/\\/$/, '') } : undefined\n    },\n  },\n}\n\nconst { output, applied, remaining } = await fixDocument('host: api.example.com/\\n', { ruleset, fixers })\n// output === 'host: api.example.com\\n'\n```\n\nThe engine ships no built-in fixers (rule codes are yours to define), so the default registry is empty and `fixDocument` is a no-op until you supply one.\n\n`options.ruleset` takes either a definition (built here with the built-in functions) or a `Ruleset` you built yourself. Pass a built one whenever the rules need functions or format detectors the package root does not have — an OpenAPI preset, for instance, whose rules would otherwise all be skipped as unknown-function/unmatched-format:\n\n```ts\nimport { fixDocument } from '@amritk/lint'\nimport { createOpenApiRuleset, oasFixers } from '@amritk/lint/rules/openapi'\n\nconst { output, applied } = await fixDocument(source, {\n  ruleset: createOpenApiRuleset(),\n  fixers: oasFixers,\n})\n```\n\nFixing runs to a fixpoint, capped at 10 passes. The result reports how that ended: **`converged`** is `false` when the cap was hit while the document was still changing (usually two fixers undoing each other), and **`passes`** counts the passes that changed something. `applied` is de-duplicated by rule code and path, so a report can safely say \"fixed N problems\".\n\n### Rendering findings\n\n`lintDocument` returns structured `IDiagnostic[]` — each with a `code`, `message`, `path`, `severity`, `source`, and a zero-based `range`. `source`, `path` and `range` all describe the same node in the same document: the one the author wrote. A rule that runs against the dereferenced tree matches inside an inlined `$ref` target, and its finding is reported at the declaration that target came from, not at the `$ref` site. Two `$ref`s to the same mistake therefore produce one finding, not two. **Rendering is the caller's job**: print them, serialize them to JSON, or map them to whatever your editor or CI consumes. The linter deliberately ships no output \"formatter\" layer (that is not the same thing as `prettier`/`biome format`, which reformat source).\n\n```ts\nconst findings = await lintDocument(source, { ruleset, source: 'doc.yaml' })\nfor (const f of findings) {\n  const { line, character } = f.range.start\n  console.log(`${f.source}:${line + 1}:${character + 1}  ${f.code}  ${f.message}`)\n}\n```\n\n### CLI\n\nThe [`mjst`](../cli) binary exposes the linter as a subcommand, which prints a compact `file:line:col` report:\n\n```bash\nmjst lint \"**/*.{yaml,json}\" -r .lint.yaml\n```\n\nWith no `-r`, it discovers a `.lint.{yaml,yml,json,js,mjs}` ruleset by walking up from each file. The exit code is derived from `--fail-severity` (default `error`). See the [CLI README](../cli/README.md#linting) for the full flag reference.\n\n---\n\n## Ruleset format\n\nA ruleset is a plain object (authored as YAML, JSON, or a JS module):\n\n| Field | Description |\n| --- | --- |\n| `rules` | Map of `name → rule`. A rule has `given` (one or more JSONPath expressions), `then` (a function to run, or a list), `severity` (`error`/`warn`/`info`/`hint`/`off`), and optional `message`, `description`, `formats`, `recommended`, `resolved` (default `true`; `false` runs the rule against the document as written, before `$ref` dereferencing), and `documentationUrl`. |\n| `then` | `{ function, field?, functionOptions? }` — `field` narrows the match to a child (`@key` targets the property name). |\n| `extends` | A ruleset (or list) to inherit rules from: a file path or npm package. `[target, 'recommended' \\| 'all' \\| 'off']` controls what it contributes. |\n| `functions` / `functionsDir` | Custom functions to load by name (default dir `functions/`). |\n| `overrides` | Per-file-glob rule tweaks. |\n| `aliases` | Reusable `given` fragments referenced as `#alias`. |\n\nBuilt-in functions: `alphabetical`, `casing`, `defined`, `enumeration`, `falsy`, `length`, `or`, `pattern`, `schema`, `truthy`, `undefined`, `unreferencedReusableObject`, `xor`, `typedEnum`.\n\n### `given` — the JSONPath subset\n\n`$`, child and `['child']` access, `..` recursive descent, `[*]` / `.*` wildcards, `[a,b]` unions, `[n]` indices (negative counts from the end), `[start:end:step]` slices, `[(@.length-1)]`, `^` (parent) and `~` (property name), and `[?(...)]` filters.\n\nFilters are **parsed and interpreted, not evaluated as JavaScript** — a ruleset is data and cannot execute code. The supported grammar:\n\n| | |\n| --- | --- |\n| Context | `@`, `@.name`, `@['name']`, `@[0]`, `@property`, `@parentProperty`, `@parent`, `@path`, `@root`, `$` |\n| Operators | `===` `!==` `==` `!=` `<` `<=` `>` `>=` `&&` `\\|\\|` `!` `-` (negation), parentheses |\n| Literals | strings, numbers, `true`, `false`, `null`, `undefined`, `void 0`, `/regex/flags` |\n| Members & calls | `.length`, `.indexOf(…)`, `.lastIndexOf(…)`, `.includes(…)`, `.startsWith(…)`, `.endsWith(…)`, `.match(/re/)`, `/re/.test(…)`, `.toLowerCase()`, `.toUpperCase()`, `.trim()` |\n\nAnything outside that grammar is a ruleset error (`createRuleset` throws and names the rule) rather than a filter that quietly matches nothing. Member reads see **own properties only**, so `@.constructor` and `@['__proto__']` are plain `undefined`.\n\n---\n\n## API\n\n| Export | What it does |\n| --- | --- |\n| `lintDocument(input, options?)` | Parse `input` and lint it against `options.ruleset` — a definition, or a `Ruleset` you already built; returns `IDiagnostic[]`. |\n| `lintDocumentWithResult(input, options?)` | Like `lintDocument`, but returns `{ diagnostics, output?, pluginData }` (including any plugin's rewritten `output`). |\n| `fixDocument(input, options?)` | Lint and apply `options.fixers` to a fixpoint; returns `{ output, fixed, applied, remaining, converged, passes }`. |\n| `createRuleset(definition?, basePath?, options?)` | Normalize a ruleset definition into a runnable `Ruleset`, layering the built-in functions and resolving `extends`. Memoized per `(definition object, basePath, restrictTo)` — treat a definition you have passed in as frozen. |\n| `resolveNamedRuleset(name, basePath?, options?)` | Resolve an `extends` reference (file path or npm package) to its definition. |\n| `builtinFunctions` | The registry of built-in rule functions. |\n\nThe engine internals (`createDocument`, `lint`, `lintWithResult`, `query`, `validateRuleset`, `parseWithPointers`, `createFixPlugin`, …) are re-exported from the package root for advanced use; `DiagnosticSeverity` and the rule/diagnostic types (`IDiagnostic`, `RulesetDefinition`, `IRuleDefinition`, …) live on the `@amritk/lint/types` subpath.\n\n---\n\n## OpenAPI ruleset\n\nThe core package is format-agnostic, but OpenAPI is common enough to ship a ready-made preset. It lives at the **`@amritk/lint/rules/openapi`** subpath — a self-contained layer on top of the engine that adds **no dependencies** beyond what `@amritk/lint` already uses.\n\n```ts\nimport { lint } from '@amritk/lint'\nimport { createOpenApiRuleset } from '@amritk/lint/rules/openapi'\n\n// Defaults to `extends: [oas]` (recommended rules only, like `spectral:oas`).\nconst ruleset = createOpenApiRuleset()\nconst findings = await lint(spec, { ruleset })\n```\n\n`createOpenApiRuleset(definition?, basePath?, options?)` builds a runnable `Ruleset` with the OpenAPI functions and format detectors layered over the built-ins, and with `extends` resolution that understands the `oas` / `loupe:oas` / `spectral:oas` names (the last two accepted so existing Spectral-style rulesets extend unchanged). Enable every rule with `createOpenApiRuleset({ extends: [['oas', 'all']] })`, or pass your own definition to override severities, add rules, or point `extends` at a file/npm package. `options.restrictTo` applies the same [trust boundary](#trust-boundary--who-may-write-a-ruleset) the package root's `restrictTo` does.\n\n| Export | What it does |\n| --- | --- |\n| `createOpenApiRuleset(definition?, basePath?, options?)` | Build a runnable OpenAPI `Ruleset` (functions + formats + `extends` resolution). |\n| `resolveOpenApiRuleset(name, basePath?, options?)` | Resolve an `extends` reference, including the `oas` / `loupe:oas` / `spectral:oas` names. |\n| `oas` | The built-in OpenAPI ruleset definition. |\n| `oasFunctions` / `allFunctions` | The OpenAPI-specific functions; `allFunctions` = built-ins + OpenAPI. |\n| `oasFormats` | OpenAPI version detectors (`oas2`, `oas3`, `oas3.0`, `oas3.1`, `oas3.2`). |\n| `oasFixers` | Auto-fixers for the mechanically-repairable OpenAPI rules (pass to `fixDocument` alongside a built OpenAPI ruleset). |\n| `loadOasSchema(version)` | Lazily load one OpenAPI version's official structural meta-schema (`'2.0'` / `'3.0'` / `'3.1'` / `'3.2'`), vendored as raw `.json` from `spec.openapis.org` (3.0/3.1/3.2 verbatim; 2.0 with its external draft-04 metaschema refs inlined). See [`schemas/README.md`](./src/rules/openapi/schemas/README.md). |\n\nThe structural rules validate against the **official `spec.openapis.org` meta-schemas, vendored as raw `.json`** ([`schemas/`](./src/rules/openapi/schemas/)). 3.0/3.1/3.2 are byte-for-byte verbatim; only 2.0 differs (its external draft-04 metaschema refs are inlined, since the offline interpreter never fetches remote refs, and its top-level `id`/`$schema` keys are dropped). OpenAPI 3.1/3.2 express Schema Objects as JSON Schema 2020-12 via a local `$dynamicRef`/`$dynamicAnchor`, which `@amritk/runtime-validators` resolves natively — so the whole document envelope is validated against the official schema with no bundling or dialect engine, while Schema Object internals stay permissive.\n\n`$ref` resolution stays the caller's job: the preset doesn't pull in a resolver, so for rules that need the dereferenced document (`resolved: true`) pass a `resolve` function to the core `lintWithResult` (for example wrapping [`@amritk/resolve-refs`](../resolve-refs)). The `mjst lint` CLI already wires one up.\n\n---\n\n## AsyncAPI ruleset\n\nThe same treatment for event-driven APIs. The **`@amritk/lint/rules/asyncapi`** subpath ships a preset covering **AsyncAPI 2.0–2.6 and 3.0**, layered on the same engine and adding **no dependencies**.\n\n```ts\nimport { lint } from '@amritk/lint'\nimport { createAsyncApiRuleset } from '@amritk/lint/rules/asyncapi'\n\n// Defaults to `extends: [asyncapi]` (recommended rules only, like `spectral:asyncapi`).\nconst ruleset = createAsyncApiRuleset()\nconst findings = await lint(document, { ruleset })\n```\n\n`createAsyncApiRuleset(definition?, basePath?, options?)` mirrors its OpenAPI counterpart: functions and format detectors layered over the built-ins, and `extends` resolution that understands the `asyncapi` / `loupe:asyncapi` / `spectral:asyncapi` names (the last two so existing Spectral-style rulesets extend unchanged). Enable every rule with `createAsyncApiRuleset({ extends: [['asyncapi', 'all']] })`. `options.restrictTo` applies the same [trust boundary](#trust-boundary--who-may-write-a-ruleset).\n\n| Export | What it does |\n| --- | --- |\n| `createAsyncApiRuleset(definition?, basePath?, options?)` | Build a runnable AsyncAPI `Ruleset` (functions + formats + `extends` resolution). |\n| `resolveAsyncApiRuleset(name, basePath?, options?)` | Resolve an `extends` reference, including the `asyncapi` / `loupe:asyncapi` / `spectral:asyncapi` names. |\n| `asyncapi` | The built-in AsyncAPI ruleset definition. |\n| `aasFunctions` / `allFunctions` | The AsyncAPI-specific functions; `allFunctions` = built-ins + AsyncAPI. |\n| `aasFormats` | AsyncAPI version detectors (`aas2`, `aas2.0`–`aas2.6`, `aas3`, `aas3.0`). |\n| `loadAsyncApiSchema(version)` | Lazily load one version's official structural meta-schema (`'2.0'`–`'2.6'`, `'3.0'`). See [`schemas/README.md`](./src/rules/asyncapi/schemas/README.md). |\n| `ASYNCAPI_VERSIONS` / `LATEST_ASYNCAPI_VERSION` / `asyncApiSchemaVersion(declared)` | The bundled versions, the newest one, and the mapping from a document's `asyncapi` field to the minor whose schema covers it (`'2.6.4'` → `'2.6'`; an unbundled minor → `undefined`). |\n\nBoth majors are covered, and the rules are gated by format so a 2.x document never picks up a 3.x rule. The 3.0-specific ones carry an `asyncapi-3-` prefix, matching Spectral's names so a `.spectral.yml` that re-severities individual rules keeps working.\n\nThe structural rules validate against the **official [`asyncapi/spec-json-schemas`](https://github.com/asyncapi/spec-json-schemas) meta-schemas, vendored as raw `.json`** ([`schemas/`](./src/rules/asyncapi/schemas/)). These are draft-07 documents that reference their own subschemas by absolute `$id` URI rather than by JSON Pointer — nothing is fetched, because every target is declared inside the same document. Each file is byte-for-byte upstream apart from **three regular expressions**, one of which is genuinely exponential on a failing input; each is replaced by a provably equivalent pattern with a single unambiguous quantifier, and the test suite asserts the equivalence over a generated corpus. See the [schemas README](./src/rules/asyncapi/schemas/README.md).\n\nStructural validation runs **once per document, against the document as written** (`resolved: false`), matching the `oas*-schema` rules above. That is a deliberate choice rather than an oversight: validating the dereferenced tree instead re-checks every `components` entry once per `$ref` that reaches it, so a single mistake in a reusable message reported three times in a document that used it twice. The trade-off is what a `$ref` hides: content pulled in from another file is not structurally checked, and neither is a same-file reference that points at the wrong kind of object (a `messages` entry aimed at `components.schemas`, say) — the reference itself is well-formed, and only the dereferenced tree would show the mismatch. That is the same gap the OpenAPI preset has. Everything written in the document itself, `components` included, is validated exactly once.\n\n---\n\n## Benchmarks\n\nThe `bench/` suite pits `@amritk/lint` head-to-head against **[Spectral](https://github.com/stoplightio/spectral)** — the OpenAPI linter this package is modelled on (hence the `spectral:oas` alias) — over the real-world specs the test suite lints: Swagger's petstore, the DigitalOcean API, and the OpenAI API (~17 KB to ~2.8 MB, spanning a small config and a genuinely large document). Both do the same job: **parse → dereference internal `$ref`s → run their recommended OpenAPI ruleset** (mjst dereferences in memory with [`@amritk/resolve-refs`](../resolve-refs), exactly as the CLI does; Spectral uses its own default resolver). Medians of three runs on each runtime, one machine (Linux x64, a 4-vCPU cloud box, Bun 1.4.0 and Node 26.8.1 — your hardware will differ, run `bun run bench` or `bun run bench:node` yourself):\n\n| document | size | runtime | mjst | Spectral | speedup | findings (mjst / Spectral) |\n| --- | ---: | --- | ---: | ---: | ---: | ---: |\n| petstore (Swagger) | 17 KB | Bun | ~4 ms | ~87 ms | **~21×** | 2 / 2 |\n| petstore (Swagger) | 17 KB | Node | ~5 ms | ~50 ms | **~9.5×** | 2 / 2 |\n| digitalocean | 105 KB | Bun | ~25 ms | ~318 ms | **~13×** | 2411 / 4319 |\n| digitalocean | 105 KB | Node | ~23 ms | ~276 ms | **~12×** | 2411 / 4319 |\n| openai | 2.8 MB | Bun | ~0.65 s | ~7.9 s | **~12×** | 587 / 474 |\n| openai | 2.8 MB | Node | ~0.75 s | ~5.5 s | **~7.3×** | 587 / 474 |\n\nThe lead is smaller on Node throughout, and for the same reason in every row:\nSpectral runs materially faster on V8 than on JavaScriptCore — a third quicker\non the OpenAI spec — while this linter is close to even between the two. The\nratio is the thing that moves, not our side of it.\n\nAn earlier revision of this table reported the OpenAI row as mjst-only, because\nSpectral's JSONPath engine (`nimma`) threw on that spec under Bun. It no longer\ndoes, so the row is a real comparison now. The bench still guards the Spectral\nside and reports `errored` rather than aborting the run, since that failure was\nruntime-specific and may come back.\n\nEach `lint` figure is the mean wall time of one whole pass — **every rule, not a subset** — dominated by real work: JSONPath matching, the rule functions, and the dereference pass. A fresh document is parsed on every iteration on both sides, matching how the tools are actually called. The finding counts differ because the two rulesets are not byte-identical (different rule implementations and `$ref` resolution), so this is a **throughput** comparison rather than a correctness parity check — but on petstore both land on the same two findings.\n\n**Assembling the ruleset** is timed separately, because a process pays it once and then lints many documents: `createOpenApiRuleset` (compiling every rule's JSONPath and wiring up functions and format detectors) measures **~0.07 ms** on Bun and **~0.06 ms** on Node, versus **~0.26 ms** and **~0.24 ms** for `new Spectral()` + `setRuleset(oas)`. The benchmark warms up before timing and reports the mean over a fixed time budget; micro-benchmark figures vary by machine and runtime.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}