{"_id":"@bekhruzbek/json-parser","_rev":"3-2d639126b608ec9c45b148bd1d1fcb1d","name":"@bekhruzbek/json-parser","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@bekhruzbek/json-parser","version":"1.0.0","keywords":["json","parser","lexer","cli","coding-challenges"],"author":{"name":"Bekhruzbek Mirzaliev"},"license":"MIT","_id":"@bekhruzbek/json-parser@1.0.0","maintainers":[{"name":"bekhruzbek","email":"bekhruzbekswe@gmail.com"}],"homepage":"https://github.com/bekhruzbekswe/coding-challenges/tree/main/json-parser#readme","bugs":{"url":"https://github.com/bekhruzbekswe/coding-challenges/tree/main/json-parser/issues"},"bin":{"parse":"bin/cli.js"},"dist":{"shasum":"b15b16965063ecfc119aa443fbde10f85284aacc","tarball":"https://registry.npmjs.org/@bekhruzbek/json-parser/-/json-parser-1.0.0.tgz","fileCount":18,"integrity":"sha512-q7RESTy6gEq1KjN0FlvtmjVDnIvKcxo2BB0MmXnYkmuDroXohDfATTEBOIfZNEGkMzD+3xLMlFyHOWJf6qxUhw==","signatures":[{"sig":"MEUCIGcMzQI+hFdTv9c+pw7viIHxe2uVQ6WWGDaLFkmmz7ONAiEAh2oZEUnAinFdoiaQJXqTQWvHk5UOQPJ9h4peYjunQkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9880},"main":"src/index.js","type":"module","_from":"file:bekhruzbek-json-parser-1.0.0.tgz","exports":{".":"./src/index.js"},"scripts":{"test":"node tests/run-tests.js"},"_npmUser":{"name":"bekhruzbek","email":"bekhruzbekswe@gmail.com"},"_resolved":"/private/var/folders/qg/_ms6431x3gj16sg461vn5_540000gn/T/1d27c6bc0916871221acf2f2d1a832ba/bekhruzbek-json-parser-1.0.0.tgz","_integrity":"sha512-q7RESTy6gEq1KjN0FlvtmjVDnIvKcxo2BB0MmXnYkmuDroXohDfATTEBOIfZNEGkMzD+3xLMlFyHOWJf6qxUhw==","repository":{"url":"git+https://github.com/bekhruzbekswe/coding-challenges.git#main","type":"git"},"_npmVersion":"11.5.2","description":"A JSON parser built from scratch in JavaScript with tokenizer, parser, and CLI tool.","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/json-parser_1.0.0_1759356048179_0.15315873009496261","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bekhruzbek/json-parser","version":"1.0.1","keywords":["json","parser","lexer","cli","coding-challenges"],"author":{"name":"Bekhruzbek Mirzaliev"},"license":"MIT","_id":"@bekhruzbek/json-parser@1.0.1","maintainers":[{"name":"bekhruzbek","email":"bekhruzbekswe@gmail.com"}],"homepage":"https://github.com/bekhruzbekswe/coding-challenges/tree/main/json-parser#readme","bugs":{"url":"https://github.com/bekhruzbekswe/coding-challenges/tree/main/json-parser/issues"},"bin":{"json-parse":"bin/cli.js"},"dist":{"shasum":"6567b2c9d1f079efa778a5ec87ab41b335e25990","tarball":"https://registry.npmjs.org/@bekhruzbek/json-parser/-/json-parser-1.0.1.tgz","fileCount":18,"integrity":"sha512-BrJc+47cZqoMz9xjYBS7VU3q96b0Koe/bYOYq4svlm7QrbXEY5Y73oJWeIVvvoOhciWJ6Hb28LbVugPVm+MUvA==","signatures":[{"sig":"MEYCIQCHl9hqsBfAyE/oPwo2znVcsh+a09eS1QcO2R9wibax1wIhAMKcDnj8YkyZFSKYkEgKnrLM306FbMcLrSO7EzCvSq7Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9885},"main":"src/index.js","type":"module","_from":"file:bekhruzbek-json-parser-1.0.1.tgz","exports":{".":"./src/index.js"},"scripts":{"test":"node tests/run-tests.js"},"_npmUser":{"name":"bekhruzbek","email":"bekhruzbekswe@gmail.com"},"_resolved":"/private/var/folders/qg/_ms6431x3gj16sg461vn5_540000gn/T/44205b3e6482ee053ea4b0ed81f4e013/bekhruzbek-json-parser-1.0.1.tgz","_integrity":"sha512-BrJc+47cZqoMz9xjYBS7VU3q96b0Koe/bYOYq4svlm7QrbXEY5Y73oJWeIVvvoOhciWJ6Hb28LbVugPVm+MUvA==","repository":{"url":"git+https://github.com/bekhruzbekswe/coding-challenges.git#main","type":"git"},"_npmVersion":"11.5.2","description":"A JSON parser built from scratch in JavaScript with tokenizer, parser, and CLI tool.","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/json-parser_1.0.1_1759356735440_0.5689568735046007","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bekhruzbek/json-parser","version":"1.0.2","description":"A JSON parser built from scratch in JavaScript with tokenizer, parser, and CLI tool.","type":"module","main":"src/index.js","exports":{".":"./src/index.js"},"bin":{"json-parser":"bin/cli.js","parse":"bin/cli.js"},"keywords":["json","parser","lexer","cli","coding-challenges"],"author":{"name":"Bekhruzbek Mirzaliev"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bekhruzbekswe/coding-challenges.git#main"},"bugs":{"url":"https://github.com/bekhruzbekswe/coding-challenges/tree/main/json-parser/issues"},"homepage":"https://github.com/bekhruzbekswe/coding-challenges/tree/main/json-parser#readme","scripts":{"test":"node tests/run-tests.js"},"_id":"@bekhruzbek/json-parser@1.0.2","_integrity":"sha512-olgZKaYplp3H8lNB2JQmDDjjRF2GBkD/cTsFP1QbA0aza8fiqicRdCt+xxu8MpkPipYilQA+GcdjVUfvAJxUbw==","_resolved":"/private/var/folders/qg/_ms6431x3gj16sg461vn5_540000gn/T/e7c1fc542f5ffd1999f9ca78672354cf/bekhruzbek-json-parser-1.0.2.tgz","_from":"file:bekhruzbek-json-parser-1.0.2.tgz","_nodeVersion":"23.11.0","_npmVersion":"11.5.2","dist":{"integrity":"sha512-olgZKaYplp3H8lNB2JQmDDjjRF2GBkD/cTsFP1QbA0aza8fiqicRdCt+xxu8MpkPipYilQA+GcdjVUfvAJxUbw==","shasum":"284c74c3ffdee26e133889616f9ca10fbb6190ab","tarball":"https://registry.npmjs.org/@bekhruzbek/json-parser/-/json-parser-1.0.2.tgz","fileCount":18,"unpackedSize":9915,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD0UC+/FSahrd8lQeo9EHUUo8j60eh/FsKgKP0cMbglPQIgBSdStnis8LjX7ZR+VJJ+4FWIsGvUkzSBVAPnltJgoCs="}]},"_npmUser":{"name":"bekhruzbek","email":"bekhruzbekswe@gmail.com"},"directories":{},"maintainers":[{"name":"bekhruzbek","email":"bekhruzbekswe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-parser_1.0.2_1759357095496_0.6389069367209548"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-01T22:00:47.967Z","modified":"2025-10-01T22:18:15.844Z","1.0.0":"2025-10-01T22:00:48.361Z","1.0.1":"2025-10-01T22:12:15.654Z","1.0.2":"2025-10-01T22:18:15.683Z"},"bugs":{"url":"https://github.com/bekhruzbekswe/coding-challenges/tree/main/json-parser/issues"},"author":{"name":"Bekhruzbek Mirzaliev"},"license":"MIT","homepage":"https://github.com/bekhruzbekswe/coding-challenges/tree/main/json-parser#readme","keywords":["json","parser","lexer","cli","coding-challenges"],"repository":{"type":"git","url":"git+https://github.com/bekhruzbekswe/coding-challenges.git#main"},"description":"A JSON parser built from scratch in JavaScript with tokenizer, parser, and CLI tool.","maintainers":[{"name":"bekhruzbek","email":"bekhruzbekswe@gmail.com"}],"readme":"# JSON Parser\n\nI rebuilt `JSON.parse()` from scratch to understand how text becomes structured data.\n\n## The Challenge\n\nParse JSON without using `JSON.parse()` or any shortcuts. Build a tokenizer and parser that can handle objects, arrays, strings, numbers, booleans, and null.\n\n## My Approach\n\nI split this into three parts:\n\n**Tokenizer (Lexer)**  \nReads raw text character by character and converts it into tokens like `STRING`, `NUMBER`, `LBRACE`, `COLON`, etc.\n\n**Parser**  \nConsumes those tokens and recursively builds JavaScript values—objects, arrays, primitives, and null.\n\n**CLI Tool**  \nA command-line validator that checks if JSON files are valid and reports errors.\n\n## Usage\n\n**Validate from the command line:**\n```bash\nparse tests/valid.json\n# ✅ tests/valid.json is valid JSON\n\nparse tests/invalid.json\n# ❌ tests/invalid.json → Unexpected token at line 3\n```\n\n**Use in code:**\n```javascript\nimport parseJSON from \"./parser.js\";\n\nconst data = parseJSON('{\"name\": \"Alice\", \"scores\": [95, 87, 92]}');\nconsole.log(data);\n// { name: \"Alice\", scores: [95, 87, 92] }\n```\n\n## Testing\n```bash\nnpm test\n# Runs all test cases organized by steps.\n```\n\n## What I Learned\n\nParsing is a two-phase process for good reason—tokenizing handles syntax, parsing handles structure. This challenge showed me how much complexity lives behind that simple one-liner we use every day. Understanding the layered design made me appreciate why parsers are built this way.","readmeFilename":"README.md"}