{"_id":"@asymmetric-effort/jsonlint","_rev":"5-ec31780bb2640f85386b94bab7a81ce5","name":"@asymmetric-effort/jsonlint","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"@asymmetric-effort/jsonlint","version":"0.0.1","keywords":["json","lint","linter","parser","validator","jsonlint","zero-dependency"],"author":{"name":"Asymmetric Effort, LLC"},"license":"MIT","_id":"@asymmetric-effort/jsonlint@0.0.1","maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"homepage":"https://jsonlint.asymmetric-effort.com","bugs":{"url":"https://github.com/asymmetric-effort/jsonlint/issues"},"bin":{"jsonlint":"bin/jsonlint"},"dist":{"shasum":"9a9a44a83bb6794b856050ec6b1b8278639dbdd9","tarball":"https://registry.npmjs.org/@asymmetric-effort/jsonlint/-/jsonlint-0.0.1.tgz","fileCount":3,"integrity":"sha512-JRgoi1yRrZeakLttX1vJ3MUDP1zicj11llKHu0apDaH8drlFBo15qg4DB8LK4IwGHvn8ZD4m1anpVRMCe0KZoA==","signatures":[{"sig":"MEYCIQCvp2WabURs2zTQo+IqvaIhxbj5RPOmQstxTQDjKi4WzgIhAOZmgxWRmmbr95403mTgyeshjXmwRB8c1qw+qwMN8TVx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6122},"main":"build/index.js","type":"module","types":"build/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"946428d09870834252069c968a88cc83c295d0c9","scripts":{"lint":"make lint","test":"make test","build":"make build","clean":"make clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"},"repository":{"url":"git+https://github.com/asymmetric-effort/jsonlint.git","type":"git"},"_npmVersion":"11.6.2","description":"A pure JavaScript/TypeScript JSON parser and validator with detailed error reporting — zero dependencies","directories":{},"_nodeVersion":"24.5.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","prettier":"^3.0.0","bun-types":"latest","yaml-lint":"^1.7.0","typescript":"^5.5.0","markdownlint-cli":"^0.48.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jsonlint_0.0.1_1778944017508_0.40539978443697255","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@asymmetric-effort/jsonlint","version":"0.0.2","keywords":["json","lint","linter","parser","validator","jsonlint","zero-dependency"],"author":{"name":"Asymmetric Effort, LLC"},"license":"MIT","_id":"@asymmetric-effort/jsonlint@0.0.2","maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"homepage":"https://jsonlint.asymmetric-effort.com","bugs":{"url":"https://github.com/asymmetric-effort/jsonlint/issues"},"bin":{"jsonlint":"bin/jsonlint"},"dist":{"shasum":"c6c82645867f8de8cf485b22ef983eb244525f5b","tarball":"https://registry.npmjs.org/@asymmetric-effort/jsonlint/-/jsonlint-0.0.2.tgz","fileCount":13,"integrity":"sha512-jinCNq+n4swQ9S4piAUwUK1gKBCoTj1VeAK2eO+rXbV14WoFUdrGp/Q0JFpSGSTYgSQnl1+4fYUN1XPySpkAkw==","signatures":[{"sig":"MEQCID/5/bDHMWdUElTA6BMqqxxt/ohXOb1uPCqXalF/bS3RAiBoOrq0QL3t2E705iZZC//SM+sJp+14jf9xHM0leszXhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asymmetric-effort%2fjsonlint@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94648297},"main":"build/index.js","type":"module","types":"build/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"485e74874ef3b856359627c12c3e022cf5dc3331","scripts":{"lint":"make lint","test":"make test","build":"make build","clean":"make clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:721be3a9-6d13-440f-87fd-d66083be2225"}},"repository":{"url":"git+https://github.com/asymmetric-effort/jsonlint.git","type":"git"},"_npmVersion":"11.14.1","description":"A pure JavaScript/TypeScript JSON parser and validator with detailed error reporting — zero dependencies","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","prettier":"^3.0.0","bun-types":"latest","yaml-lint":"^1.7.0","typescript":"^5.5.0","markdownlint-cli":"^0.48.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jsonlint_0.0.2_1778947497198_0.5679461590004369","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@asymmetric-effort/jsonlint","version":"0.0.3","keywords":["json","lint","linter","parser","validator","jsonlint","zero-dependency"],"author":{"name":"Asymmetric Effort, LLC"},"license":"MIT","_id":"@asymmetric-effort/jsonlint@0.0.3","maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"homepage":"https://jsonlint.asymmetric-effort.com","bugs":{"url":"https://github.com/asymmetric-effort/jsonlint/issues"},"bin":{"jsonlint":"bin/jsonlint"},"dist":{"shasum":"72d48fb6667959d7e20443318e61c20889592026","tarball":"https://registry.npmjs.org/@asymmetric-effort/jsonlint/-/jsonlint-0.0.3.tgz","fileCount":13,"integrity":"sha512-HGLD90SRbSk/SRJD+H/oZWNPBJUCzSQAnZIALzi3Zh/qDGbx1My/vy/Rx5pogi4/CGmp1ToMvwoo4Lh95pWIcA==","signatures":[{"sig":"MEYCIQCecLF8BhOmolzdlkcOIFXKDgAjU9SC9df7GZqL8NHxrgIhANtFByecVcL1YPhXh3J8ei6v6TExj31T0Jy+Y5suLsdQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asymmetric-effort%2fjsonlint@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94654194},"main":"build/index.js","type":"module","types":"build/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"5996df05c18e0ba82df0643403ad083c9e5943b3","scripts":{"lint":"make lint","test":"make test","build":"make build","clean":"make clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:721be3a9-6d13-440f-87fd-d66083be2225"}},"repository":{"url":"git+https://github.com/asymmetric-effort/jsonlint.git","type":"git"},"_npmVersion":"11.14.1","description":"A pure JavaScript/TypeScript JSON parser and validator with detailed error reporting — zero dependencies","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","prettier":"^3.0.0","bun-types":"latest","yaml-lint":"^1.7.0","typescript":"^5.5.0","markdownlint-cli":"^0.48.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jsonlint_0.0.3_1778953703286_0.31097562686300195","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@asymmetric-effort/jsonlint","version":"0.0.4","keywords":["json","lint","linter","parser","validator","jsonlint","zero-dependency"],"author":{"name":"Asymmetric Effort, LLC"},"license":"MIT","_id":"@asymmetric-effort/jsonlint@0.0.4","maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"homepage":"https://jsonlint.asymmetric-effort.com","bugs":{"url":"https://github.com/asymmetric-effort/jsonlint/issues"},"bin":{"jsonlint":"bin/jsonlint"},"dist":{"shasum":"4d9553e9e6b06d51a8cfaf7619122c1300c49c23","tarball":"https://registry.npmjs.org/@asymmetric-effort/jsonlint/-/jsonlint-0.0.4.tgz","fileCount":13,"integrity":"sha512-y+m/uGSULXyEnCDIvObF+HJL6kPCjG8QkRJRvpP372Jl3cnnZfIe9/Rkc19JwKEV7GzTxLRhgV/SzOi47phvpg==","signatures":[{"sig":"MEUCIQDBIO67LstUQcBQX/J9MHu3nKjCrJ8GWKFP+EEWCMuuQQIgX7j8NSOFigNEOkmoM2oagohtLL/qdUIvCNQ2RMff5xE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asymmetric-effort%2fjsonlint@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94654194},"main":"build/index.js","type":"module","types":"build/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./build/index.d.ts","import":"./build/index.js"}},"gitHead":"4d5eed0a7816f821dc21458fe040816291129cad","scripts":{"lint":"make lint","test":"make test","build":"make build","clean":"make clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:721be3a9-6d13-440f-87fd-d66083be2225"}},"repository":{"url":"git+https://github.com/asymmetric-effort/jsonlint.git","type":"git"},"_npmVersion":"11.14.1","description":"A pure JavaScript/TypeScript JSON parser and validator with detailed error reporting — zero dependencies","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","prettier":"^3.0.0","bun-types":"latest","yaml-lint":"^1.7.0","typescript":"^5.5.0","markdownlint-cli":"^0.48.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jsonlint_0.0.4_1778954611584_0.9282050777369644","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@asymmetric-effort/jsonlint","version":"0.0.5","description":"A pure JavaScript/TypeScript JSON parser and validator with detailed error reporting — zero dependencies","type":"module","main":"build/index.js","types":"build/index.d.ts","bin":{"jsonlint":"bin/jsonlint"},"exports":{".":{"import":"./build/index.js","types":"./build/index.d.ts"}},"publishConfig":{"access":"public"},"scripts":{"clean":"make clean","lint":"make lint","test":"make test","build":"make build","typecheck":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/asymmetric-effort/jsonlint.git"},"keywords":["json","lint","linter","parser","validator","jsonlint","zero-dependency"],"author":{"name":"Asymmetric Effort, LLC"},"license":"MIT","bugs":{"url":"https://github.com/asymmetric-effort/jsonlint/issues"},"homepage":"https://jsonlint.asymmetric-effort.com","engines":{"node":">=20.0.0"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","bun-types":"latest","eslint":"^9.0.0","markdownlint-cli":"^0.48.0","prettier":"^3.0.0","typescript":"^5.5.0","yaml-lint":"^1.7.0"},"dependencies":{},"gitHead":"660afc22ee0d79d8145b82abfb9dbfea4616bfc1","_id":"@asymmetric-effort/jsonlint@0.0.5","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-5eWXcGc6K4H4yO3Qq7+1wFvOH79Kkg5sO+VGZW2qKp91qe6s5E8+nUiXYfg07tIHSOtbaUpaf3XslNIwuXm0OQ==","shasum":"212bc0d4c8755d4fba4d628dc836afaeda3b23ca","tarball":"https://registry.npmjs.org/@asymmetric-effort/jsonlint/-/jsonlint-0.0.5.tgz","fileCount":13,"unpackedSize":94654421,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asymmetric-effort%2fjsonlint@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD1X9aRmUmKBN9uwNituu1fJWjfP8fO6JvHeuhn7FbgFwIhAKOisQI7eyOKU+xE+Zntv5Aqr60wjkWOp44o0M9ke1wx"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:721be3a9-6d13-440f-87fd-d66083be2225"}},"directories":{},"maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jsonlint_0.0.5_1778961666722_0.2660345495698879"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-16T15:06:57.370Z","modified":"2026-05-16T20:01:08.156Z","0.0.1":"2026-05-16T15:06:57.641Z","0.0.2":"2026-05-16T16:04:58.282Z","0.0.3":"2026-05-16T17:48:24.319Z","0.0.4":"2026-05-16T18:03:32.601Z","0.0.5":"2026-05-16T20:01:07.753Z"},"bugs":{"url":"https://github.com/asymmetric-effort/jsonlint/issues"},"author":{"name":"Asymmetric Effort, LLC"},"license":"MIT","homepage":"https://jsonlint.asymmetric-effort.com","keywords":["json","lint","linter","parser","validator","jsonlint","zero-dependency"],"repository":{"type":"git","url":"git+https://github.com/asymmetric-effort/jsonlint.git"},"description":"A pure JavaScript/TypeScript JSON parser and validator with detailed error reporting — zero dependencies","maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"readme":"<p align=\"center\">\n  <img src=\"logo.png\" alt=\"jsonlint\" width=\"128\" height=\"128\" />\n</p>\n\n# @asymmetric-effort/jsonlint\n\nA pure TypeScript JSON parser, linter, and validator with detailed error reporting. Zero runtime dependencies.\n\nFeature-compatible with [zaach/jsonlint](https://github.com/zaach/jsonlint).\n\n## Installation\n\n### NPM Package\n\n```bash\nnpm install @asymmetric-effort/jsonlint\n```\n\n### Global CLI\n\n```bash\nnpm install -g @asymmetric-effort/jsonlint\n```\n\n### Standalone Binary\n\nPre-compiled standalone binaries are produced via `make build`. The binary requires no runtime dependencies.\n\n## CLI Usage\n\n```bash\njsonlint myfile.json\n```\n\nOr pipe JSON via stdin:\n\n```bash\necho '{\"key\": \"value\"}' | jsonlint\n```\n\n### Options\n\n| Flag | Long Form | Description | Default |\n|------|-----------|-------------|---------|\n| `-v` | `--version` | Print version and exit | |\n| `-s` | `--sort-keys` | Sort object keys in output | `false` |\n| `-i` | `--in-place` | Overwrite the input file with formatted output | `false` |\n| `-t CHAR` | `--indent CHAR` | Character(s) to use for indentation | `\"  \"` (2 spaces) |\n| `-c` | `--compact` | Compact error display | `false` |\n| `-V FILE` | `--validate FILE` | Validate against a JSON Schema (Draft-03) file | |\n| `-e ENV` | `--environment ENV` | JSON Schema spec version | `json-schema-draft-03` |\n| `-q` | `--quiet` | Do not print parsed JSON to stdout | `false` |\n| `-p` | `--pretty-print` | Force pretty printing even if invalid | `false` |\n| `-h` | `--help` | Show help message | |\n\n### Examples\n\nValidate and pretty-print:\n\n```bash\njsonlint data.json\n```\n\nSort keys:\n\n```bash\njsonlint -s data.json\n```\n\nFormat in place:\n\n```bash\njsonlint -i data.json\n```\n\nValidate against a schema:\n\n```bash\njsonlint -V schema.json data.json\n```\n\nCompact errors (useful for editor integrations):\n\n```bash\njsonlint -c data.json\n```\n\n## Module API\n\n```typescript\nimport { parse } from \"@asymmetric-effort/jsonlint\";\n\n// Returns parsed value or throws ParseError\nconst result = parse('{\"key\": \"value\"}');\n```\n\n### Advanced Usage\n\n```typescript\nimport { JsonParser, ParseError, LexerError } from \"@asymmetric-effort/jsonlint\";\n\nconst parser = new JsonParser();\n\n// Custom error handler\nparser.parseError = (message, hash) => {\n  console.error(`Error at line ${hash.line}: ${message}`);\n  throw new ParseError(message, hash);\n};\n\ntry {\n  parser.parse(input);\n} catch (e) {\n  if (e instanceof ParseError) {\n    console.error(\"Parse error:\", e.hash);\n  } else if (e instanceof LexerError) {\n    console.error(\"Lexer error:\", e.message);\n  }\n}\n```\n\n### Formatter\n\n```typescript\nimport { formatJson } from \"@asymmetric-effort/jsonlint\";\n\n// Best-effort formatting (works even on invalid JSON)\nconst formatted = formatJson('{\"a\":1,\"b\":2}', \"  \");\n```\n\n### Schema Validator\n\n```typescript\nimport { SchemaValidator } from \"@asymmetric-effort/jsonlint\";\nimport type { JsonSchema } from \"@asymmetric-effort/jsonlint\";\n\nconst schema: JsonSchema = {\n  type: \"object\",\n  properties: {\n    name: { type: \"string\", required: true },\n    age: { type: \"integer\", minimum: 0 },\n  },\n};\n\nconst validator = new SchemaValidator();\nconst errors = validator.validate({ name: \"Alice\", age: 30 }, schema);\n\nif (errors.length > 0) {\n  errors.forEach((e) => console.error(`${e.property}: ${e.message}`));\n}\n```\n\n## Building\n\n```bash\nmake setup    # Install dependencies\nmake build    # Build library and standalone binary\nmake test     # Run all tests\nmake lint     # Run type checker\nmake help     # Show all targets\n```\n\n## License\n\nMIT License. Copyright (c) 2026 Asymmetric Effort, LLC.\n","readmeFilename":"README.md"}