{"_id":"partial-json","_rev":"4204325","name":"partial-json","description":"Parse partial JSON generated by LLM","dist-tags":{"latest":"0.1.7"},"maintainers":[{"name":"muspi-merol","email":""}],"time":{"modified":"2026-03-04T17:02:57.000Z","created":"2023-10-18T20:17:36.893Z","0.1.7":"2024-05-14T12:18:04.850Z","0.1.6":"2024-02-10T00:03:45.678Z","0.1.5":"2024-02-07T10:38:52.549Z","0.1.4":"2024-01-30T06:37:51.960Z","0.1.3":"2023-10-19T11:45:31.252Z","0.1.2":"2023-10-18T23:01:18.129Z","0.1.1":"2023-10-18T21:54:14.261Z","0.0.4":"2023-10-18T20:17:36.893Z"},"users":{},"author":{"name":"Muspi Merol","email":"me@promplate.dev"},"repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"versions":{"0.1.7":{"name":"partial-json","version":"0.1.7","description":"Parse partial JSON generated by LLM","keywords":["JSON","parser","LLM","nlp"],"homepage":"https://promplate.dev/partial-json-parser","repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"license":"MIT","author":{"name":"Muspi Merol","email":"me@promplate.dev"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./options":{"types":"./dist/options.d.ts","default":"./dist/options.js"}},"main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","coverage":"vitest run --coverage","test":"vitest","test:ui":"vitest --ui"},"devDependencies":{"@vitest/coverage-istanbul":"^1.2.2","@vitest/ui":"^1.2.2","typescript":"^5.3.3","vitest":"^1.2.2"},"_id":"partial-json@0.1.7","gitHead":"b65f82c541f5dd7dc17e0764db78fca6a8d2a159","bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"_nodeVersion":"22.1.0","_npmVersion":"10.7.0","dist":{"shasum":"b735a89edb3e25f231a3c4caeaae71dc9f578605","size":6304,"noattachment":false,"key":"/partial-json/-/partial-json-0.1.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/partial-json/download/partial-json-0.1.7.tgz"},"_npmUser":{"name":"muspi-merol","email":"admin@muspimerol.site"},"directories":{},"maintainers":[{"name":"muspi-merol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-json_0.1.7_1715689084691_0.030576249642107145"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-05-14T12:18:04.850Z","publish_time":1715689084850,"_source_registry_name":"default","_cnpm_publish_time":1715689084850},"0.1.6":{"name":"partial-json","version":"0.1.6","description":"Parse partial JSON generated by LLM","keywords":["JSON","parser","LLM","nlp"],"homepage":"https://promplate.dev/partial-json-parser","repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"license":"MIT","author":{"name":"Muspi Merol","email":"me@promplate.dev"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./options":{"types":"./dist/options.d.ts","default":"./dist/options.js"}},"main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"@vitest/coverage-istanbul":"^1.2.2","@vitest/ui":"^1.2.2","typescript":"^5.3.3","vitest":"^1.2.2"},"scripts":{"build":"tsc","coverage":"vitest run --coverage","test":"vitest","test:ui":"vitest --ui"},"bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"_id":"partial-json@0.1.6","_integrity":"sha512-pvJPiUMwQ0eWGpxVNJecOVV2eFYlMEKCfo+FXtEjN9Xfw5aIQ2q0dmKpqszw7QA86lMV6oIFxsmxeVHDlL4p6Q==","_resolved":"C:\\Users\\17979\\AppData\\Local\\Temp\\5977faa8e5bf41997dd0afa17ff4ab7d\\partial-json-0.1.6.tgz","_from":"file:partial-json-0.1.6.tgz","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"shasum":"6b950195352f166842c7a21c09aa577f9887c5de","size":5712,"noattachment":false,"key":"/partial-json/-/partial-json-0.1.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/partial-json/download/partial-json-0.1.6.tgz"},"_npmUser":{"name":"muspi-merol","email":"admin@muspimerol.site"},"directories":{},"maintainers":[{"name":"muspi-merol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-json_0.1.6_1707523425453_0.9938015741552257"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-02-10T00:03:45.678Z","publish_time":1707523425678,"_source_registry_name":"default","_cnpm_publish_time":1707523425678},"0.1.5":{"name":"partial-json","version":"0.1.5","description":"Parse partial JSON generated by LLM","keywords":["JSON","parser","LLM","nlp"],"homepage":"https://promplate.dev/partial-json-parser","repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"license":"MIT","author":{"name":"Muspi Merol","email":"me@promplate.dev"},"exports":{".":{"default":"./dist/index.js","types":"./dist/index.d.ts"},"./options":{"default":"./dist/options.js","types":"./dist/options.d.ts"}},"main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"@vitest/coverage-istanbul":"^1.2.2","@vitest/ui":"^1.2.2","typescript":"^5.3.3","vitest":"^1.2.2"},"scripts":{"build":"tsc","coverage":"vitest run --coverage","test":"vitest","test:ui":"vitest --ui"},"bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"_id":"partial-json@0.1.5","_integrity":"sha512-WhOTXTAWXiHJXnWV1m+goIDHSEy9ybu2SP++6vrRxtrvg+SLP3qC0AeMYdCrP7jHQLyvkCdVN5iNNNUypdSMbw==","_resolved":"C:\\Users\\17979\\AppData\\Local\\Temp\\6d766d621df58c0c04c902e5ab41503a\\partial-json-0.1.5.tgz","_from":"file:partial-json-0.1.5.tgz","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"shasum":"741a8db1016d1a848663a4940f1461cc8c38cb51","size":5711,"noattachment":false,"key":"/partial-json/-/partial-json-0.1.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/partial-json/download/partial-json-0.1.5.tgz"},"_npmUser":{"name":"muspi-merol","email":"admin@muspimerol.site"},"directories":{},"maintainers":[{"name":"muspi-merol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-json_0.1.5_1707302332391_0.8550366159989431"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-02-07T10:38:52.549Z","publish_time":1707302332549,"_source_registry_name":"default","_cnpm_publish_time":1707302332549},"0.1.4":{"name":"partial-json","version":"0.1.4","description":"Parse partial JSON generated by LLM","keywords":["JSON","parser","LLM","nlp"],"homepage":"https://promplate.dev/partial-json-parser","repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"license":"MIT","author":{"name":"Muspi Merol","email":"me@promplate.dev"},"exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.cjs","types":"./dist/index.d.ts"}},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"dist/index.d.ts","devDependencies":{"@vitest/coverage-v8":"^0.34.6","@vitest/ui":"^0.34.6","esbuild":"^0.19.5","typescript":"^5.2.2","vitest":"^0.34.6"},"scripts":{"build":"tsc && (npm run build:cjs & npm run build:esm)","build:cjs":"esbuild src/index.ts --sourcemap=external --minify --keep-names --bundle --format=cjs --outfile=dist/index.cjs","build:esm":"esbuild src/index.ts --sourcemap=external --minify --keep-names --bundle --format=esm --outfile=dist/index.mjs","coverage":"vitest run --coverage","test":"vitest","test:ui":"vitest --ui"},"bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"_id":"partial-json@0.1.4","_integrity":"sha512-UxDJGsUwQvrgzoI5cu8tu1UuCGVgr60UgEdnW2cF64LoUPXCQx2YhO02Busb2POnOTehaQ5QJfhQjHd46KSVHA==","_resolved":"C:\\Users\\17979\\AppData\\Local\\Temp\\14f85aca03d0bcc349b7d56111aecc27\\partial-json-0.1.4.tgz","_from":"file:partial-json-0.1.4.tgz","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"shasum":"9777b621cff47e29eaae5eb22021cb492c46e57b","size":8983,"noattachment":false,"key":"/partial-json/-/partial-json-0.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/partial-json/download/partial-json-0.1.4.tgz"},"_npmUser":{"name":"muspi-merol","email":"admin@muspimerol.site"},"directories":{},"maintainers":[{"name":"muspi-merol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-json_0.1.4_1706596671784_0.015154320326050685"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-01-30T06:37:51.960Z","publish_time":1706596671960,"_source_registry_name":"default","_cnpm_publish_time":1706596671960},"0.1.3":{"name":"partial-json","version":"0.1.3","description":"Parse partial JSON generated by LLM","keywords":["JSON","parser","LLM","nlp"],"homepage":"https://promplate.dev/partial-json-parser","repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"license":"MIT","author":{"name":"Muspi Merol","email":"me@promplate.dev"},"exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.cjs","types":"./dist/index.d.ts"}},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"dist/index.d.ts","scripts":{"build":"tsc && (npm run build:cjs & npm run build:esm)","build:cjs":"esbuild src/index.ts --sourcemap=external --minify --keep-names --bundle --format=cjs --outfile=dist/index.cjs","build:esm":"esbuild src/index.ts --sourcemap=external --minify --keep-names --bundle --format=esm --outfile=dist/index.mjs","coverage":"vitest run --coverage","test":"vitest","test:ui":"vitest --ui"},"devDependencies":{"@vitest/coverage-v8":"^0.34.6","@vitest/ui":"^0.34.6","esbuild":"^0.19.5","typescript":"^5.2.2","vitest":"^0.34.6"},"_id":"partial-json@0.1.3","gitHead":"af8b5884e1a5dc6b825351559ae71e822371a18c","bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"_nodeVersion":"20.6.1","_npmVersion":"10.2.0","dist":{"shasum":"d817b0444bd37158e07192b49fe0e0b9e34f9c7c","size":11025,"noattachment":false,"key":"/partial-json/-/partial-json-0.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/partial-json/download/partial-json-0.1.3.tgz"},"_npmUser":{"name":"muspi-merol","email":"admin@muspimerol.site"},"directories":{},"maintainers":[{"name":"muspi-merol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-json_0.1.3_1697715930986_0.2176288759271805"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-19T11:45:31.252Z","publish_time":1697715931252,"_source_registry_name":"default","_cnpm_publish_time":1697715931252},"0.1.2":{"name":"partial-json","version":"0.1.2","description":"Parse partial JSON generated by LLM","keywords":["JSON","parser","LLM","nlp"],"homepage":"https://promplate.dev","repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"license":"MIT","author":{"name":"Muspi Merol","email":"me@promplate.dev"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"dist/index.d.ts","devDependencies":{"@vitest/coverage-v8":"^0.34.6","@vitest/ui":"^0.34.6","esbuild":"^0.19.5","typescript":"^5.2.2","vitest":"^0.34.6"},"scripts":{"build":"tsc && (npm run build:cjs & npm run build:esm)","build:cjs":"esbuild src/index.ts --sourcemap=external --minify --bundle --format=cjs --outfile=dist/index.cjs","build:esm":"esbuild src/index.ts --sourcemap=external --minify --bundle --format=esm --outfile=dist/index.mjs","coverage":"vitest run --coverage","test":"vitest","test:ui":"vitest --ui"},"bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"_id":"partial-json@0.1.2","_integrity":"sha512-pqpvheQZcGniB0m4VTlLritHTetL4N710Ze726N0cePluOjbbnZDQleSrz+/pO3jgUlOz3I8djz2wJD5V8caOA==","_resolved":"C:\\Users\\17979\\AppData\\Local\\Temp\\b4462b929aab1241f02e1f28b07cb994\\partial-json-0.1.2.tgz","_from":"file:partial-json-0.1.2.tgz","_nodeVersion":"20.6.1","_npmVersion":"10.2.0","dist":{"shasum":"0abfe4cdfa00be071ce635279517cb3233108145","size":10829,"noattachment":false,"key":"/partial-json/-/partial-json-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/partial-json/download/partial-json-0.1.2.tgz"},"_npmUser":{"name":"muspi-merol","email":"admin@muspimerol.site"},"directories":{},"maintainers":[{"name":"muspi-merol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-json_0.1.2_1697670077801_0.5996764853461345"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-18T23:01:18.129Z","publish_time":1697670078129,"_source_registry_name":"default","_cnpm_publish_time":1697670078129},"0.1.1":{"name":"partial-json","version":"0.1.1","description":"Parse partial JSON generated by LLM","keywords":["JSON","parser","LLM","nlp"],"homepage":"https://promplate.dev","repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"license":"MIT","author":{"name":"Muspi Merol","email":"me@promplate.dev"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","devDependencies":{"@vitest/coverage-v8":"^0.34.6","@vitest/ui":"^0.34.6","esbuild":"^0.19.5","vitest":"^0.34.6"},"scripts":{"build":"npm run build:cjs & npm run build:esm","build:cjs":"esbuild src/index.js --sourcemap=external --minify --bundle --format=cjs --outfile=dist/index.cjs","build:esm":"esbuild src/index.js --sourcemap=external --minify --bundle --format=esm --outfile=dist/index.mjs","coverage":"vitest run --coverage","test":"vitest","test:ui":"vitest --ui"},"bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"_id":"partial-json@0.1.1","_integrity":"sha512-R2ehZsQXOCwHIdRciNdZ+8aREOd2JY7k5UEYO5CtuxFUAd2HNLQljooadl0NTWNPldl55Bz0Evw9nA11zzW+SQ==","_resolved":"C:\\Users\\17979\\AppData\\Local\\Temp\\717a7ed2e9942d9dec0665dfdbc82405\\partial-json-0.1.1.tgz","_from":"file:partial-json-0.1.1.tgz","_nodeVersion":"20.6.1","_npmVersion":"10.2.0","dist":{"shasum":"77ed7a05e1a7617b307a55011b74224b84f21b28","size":9524,"noattachment":false,"key":"/partial-json/-/partial-json-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/partial-json/download/partial-json-0.1.1.tgz"},"_npmUser":{"name":"muspi-merol","email":"admin@muspimerol.site"},"directories":{},"maintainers":[{"name":"muspi-merol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-json_0.1.1_1697666053994_0.12991744850504583"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-18T21:54:14.261Z","publish_time":1697666054261,"_source_registry_name":"default","_cnpm_publish_time":1697666054261},"0.0.4":{"name":"partial-json","version":"0.0.4","description":"Parse partial JSON generated by LLM","keywords":["JSON","parser","LLM","nlp"],"homepage":"https://promplate.dev","repository":{"type":"git","url":"git+https://github.com/promplate/partial-json-parser-js.git"},"license":"MIT","author":{"name":"Muspi Merol","email":"me@promplate.dev"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","scripts":{"build":"npm run build:cjs & npm run build:esm","build:cjs":"esbuild src/index.js --sourcemap=external --bundle --format=cjs --outfile=dist/index.cjs","build:esm":"esbuild src/index.js --sourcemap=external --bundle --format=esm --outfile=dist/index.mjs","coverage":"vitest run --coverage","test":"vitest","test:ui":"vitest --ui"},"devDependencies":{"@vitest/coverage-v8":"^0.34.6","@vitest/ui":"^0.34.6","esbuild":"^0.19.5","vitest":"^0.34.6"},"_id":"partial-json@0.0.4","gitHead":"0d5c50fb3f8497f61af19fec19ace67207ec11b6","bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"_nodeVersion":"20.6.1","_npmVersion":"10.2.0","dist":{"shasum":"9733d5e4c60092c758264ccdf202322d23316c26","size":6450,"noattachment":false,"key":"/partial-json/-/partial-json-0.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/partial-json/download/partial-json-0.0.4.tgz"},"_npmUser":{"name":"muspi-merol","email":"admin@muspimerol.site"},"directories":{},"maintainers":[{"name":"muspi-merol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-json_0.0.4_1697660256681_0.35085667707336876"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-18T20:17:36.893Z","publish_time":1697660256893,"_source_registry_name":"default","_cnpm_publish_time":1697660256893}},"readme":"# Partial JSON Parser\n\nSometimes we need **LLM (Large Language Models)** to produce **structural information** instead of natural language. The easiest way is to use JSON.\n\nBut before receiving the last token of response, the JSON is broken, which means you can't use `JSON.parse` to decode it. But we still want to stream the data to the user.\n\nHere comes `partial-json`, a lightweight and customizable library for parsing partial JSON strings. Here is a [demo](https://promplate.dev/partial-json-parser).\n\n(Note that there is [a Python implementation](https://github.com/promplate/partial-json-parser) too)\n\n## Installation\n\n```sh\nnpm i partial-json # or pnpm / bun / yarn\n```\n\n`partial-json` is implemented purely in JavaScript, and have both `commonjs` and `esm` builds.\n\n## Usage\n\n### Importing the library\n\nYou can import the `parse` function and the `Allow` object from the library like this:\n\n```js\nimport { parse, Allow } from \"partial-json\";\n```\n\nThe `Allow` object is just an Enum for options. It determines what types can be partial. types not included in `allow` only appears after its completion can be ensured.\n\n### Parsing complete / partial JSON strings\n\nThe `parse` function works just like the built-in `JSON.parse` when parsing a complete JSON string:\n\n```js\nlet result = parse('{\"key\":\"value\"}');\nconsole.log(result); // Outputs: { key: 'value' }\n```\n\nYou can parse a partial JSON string by passing an additional parameter to the `parse` function. This parameter is a **bitwise OR** of the constants from the `Allow` object:\n\n(Note that you can directly import the constants you need from `partial-json`)\n\n```js\nimport { parse, STR, OBJ } from \"partial-json\";\n\nresult = parse('{\"key\": \"v', STR | OBJ);\nconsole.log(result); // Outputs: { key: 'v' }\n```\n\nIn this example, `Allow.STR` tells the parser that it's okay if a string is incomplete, and `Allow.OBJ` tells the parser so as an object. The parser then try to return as much data as it can.\n\nIf you don't allow partial strings, then it will not add `\"key\"` to the object because `\"v` is not close:\n\n```js\nresult = parse('{\"key\": \"v', OBJ);\nconsole.log(result); // Outputs: {}\n\nresult = parse('{\"key\": \"value\"', OBJ);\nconsole.log(result); // Outputs: { key: 'value' }\n```\n\nSimilarity, you can parse partial arrays or even partial special values if you allow it:\n\n(Note that `allow` defaults to `Allow.ALL`)\n\n```js\nresult = parse('[ {\"key1\": \"value1\", \"key2\": [ \"value2');\nconsole.log(result); // Outputs: [ { key1: 'value1', key2: [ 'value2' ] } ]\n\nresult = parse(\"-Inf\");\nconsole.log(result); // Outputs: -Infinity\n```\n\n### Handling malformed JSON\n\nIf the JSON string is malformed, the `parse` function will throw an error:\n\n```js\nparse(\"wrong\"); // MalformedJSON [Error]: SyntaxError: Unexpected token 'w', \"wrong\" is not valid JSON at position 0\n```\n\n## API Reference\n\n### parse(jsonString, [allowPartial])\n\n- `jsonString` `<string>`: The JSON string to parse.\n- `allowPartial` `<number>`: Specify what kind of partialness is allowed during JSON parsing (default: `Allow.ALL`).\n\nReturns the parsed JavaScript value.\n\n### Allow\n\nAn object that specifies what kind of partialness is allowed during JSON parsing. It has the following properties:\n\n- `STR`: Allow partial string.\n- `NUM`: Allow partial number.\n- `ARR`: Allow partial array.\n- `OBJ`: Allow partial object.\n- `NULL`: Allow partial null.\n- `BOOL`: Allow partial boolean.\n- `NAN`: Allow partial NaN.\n- `INFINITY`: Allow partial Infinity.\n- `_INFINITY`: Allow partial -Infinity.\n- `INF`: Allow both partial Infinity and -Infinity.\n- `SPECIAL`: Allow all special values.\n- `ATOM`: Allow all atomic values.\n- `COLLECTION`: Allow all collection values.\n- `ALL`: Allow all values.\n\n## Testing\n\nTo run the tests for this library, you should clone the repository and install the dependencies:\n\n```sh\ngit clone https://github.com/promplate/partial-json-parser-js.git\ncd partial-json-parser-js\nnpm i\n```\n\nThen, you can run the tests using [Vitest](https://vitest.dev/):\n\n```sh\nnpm run test\n```\n\nPlease note that while we strive to cover as many edge cases as possible, it's always possible that some cases might not be covered.\n\n## License\n\nThis project is licensed under the MIT License.\n","_attachments":{},"homepage":"https://promplate.dev/partial-json-parser","bugs":{"url":"https://github.com/promplate/partial-json-parser-js/issues"},"license":"MIT"}