{"id":15785280,"url":"https://github.com/chimurai/json-fingerprint","last_synced_at":"2026-01-02T14:36:51.524Z","repository":{"id":247235688,"uuid":"712607932","full_name":"chimurai/json-fingerprint","owner":"chimurai","description":"Fingerprint JSON","archived":false,"fork":false,"pushed_at":"2024-09-15T11:45:18.000Z","size":36,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-11T20:44:16.982Z","etag":null,"topics":["fingerprint","hash","json"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chimurai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-31T20:09:51.000Z","updated_at":"2024-09-15T11:45:21.000Z","dependencies_parsed_at":"2024-10-04T20:21:57.500Z","dependency_job_id":null,"html_url":"https://github.com/chimurai/json-fingerprint","commit_stats":null,"previous_names":["chimurai/json-fingerprint"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chimurai%2Fjson-fingerprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chimurai%2Fjson-fingerprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chimurai%2Fjson-fingerprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chimurai%2Fjson-fingerprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chimurai","download_url":"https://codeload.github.com/chimurai/json-fingerprint/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221460466,"owners_count":16825739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fingerprint","hash","json"],"created_at":"2024-10-04T20:21:52.828Z","updated_at":"2026-01-02T14:36:51.449Z","avatar_url":"https://github.com/chimurai.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# json-fingerprint\n\nFingerprint JSON by calculating the **hash** (default: sha256) based on the **shape** of the JSON and its **value types**.\n\n- [Install](#install)\n- [Usage](#usage)\n- [Options](#options)\n- [Result](#result)\n- [Custom hash function](#custom-hash-function)\n- [CLI](#cli)\n  - [hash a JSON file](#hash-a-json-file)\n  - [pipe to json-fingerprint](#pipe-to-json-fingerprint)\n- [CLI options](#cli-options)\n  - [`--file`](#--file)\n  - [`--hash` (default: `sha256`)](#--hash-default-sha256)\n  - [`--help`](#--help)\n  - [`--version`](#--version)\n\n## Install\n\n```shell\nnpm install json-fingerprint\n```\n\n## Usage\n\n```mjs\nimport {fingerprintJSON} from 'json-fingerprint';\n```\n\n```mjs\nconst {hash, jsonPaths} = fingerprintJSON(`{\"foo\":\"bar\"}`)\n// hash = 3e61d854042bcd6273a8e18589eb53a37e4cdc111bd2dc717413951637c11e2d\n// jsonPaths = ['$:object', '$.foo:string']\n\nconst {hash, jsonPaths} = fingerprintJSON(`{\"foo\":\"some string\"}`)\n// hash = 3e61d854042bcd6273a8e18589eb53a37e4cdc111bd2dc717413951637c11e2d\n// jsonPaths = ['$:object', '$.foo:string']\n```\n\n## Options\n\n```mjs\n// JSON input\nfingerprintJSON(`{\"foo\":\"bar\"}`)\n\n// object input\nfingerprintJSON({\"foo\":\"bar\"})\n\n// custom hash function\nfingerprintJSON(`{\"foo\":\"bar\"}`, myCustomHashFn)\n```\n\n## Result\n\n```mjs\nconst {hash, jsonPaths, source} = fingerprintJSON(`{\"foo\":\"bar\"}`)\n```\n\n- `hash`: fingerprint hash of the JSON\n- `jsonPaths`: internal JSON meta data (hash is calculated based on stringified jsonPaths)\n- `source`: original JSON provided as input\n\n## Custom hash function\n\n```mjs\nimport { createHash } from 'node:crypto';\n\nfunction sha512(data) {\n  /**\n   * https://nodejs.org/api/crypto.html#cryptocreatehashalgorithm-options\n   * `openssl list -digest-algorithms` to display the available digest algorithms\n   */\n  return createHash('sha512').update(data).digest('hex');\n}\n\nfingerprintJSON(`{\"foo\":\"bar\"}`, sha512);\n```\n\n## CLI\n\n### hash a JSON file\n\n```shell\nnpx json-fingerprint --file=package.json\n$ 8d04433255d9cd89eb54dcb09b43d0be92ca5b5f5ba9dffee274869f6b9a9158\n```\n\n### pipe to json-fingerprint\n\n```shell\ncat package.json | npx json-fingerprint\n$ 8d04433255d9cd89eb54dcb09b43d0be92ca5b5f5ba9dffee274869f6b9a9158\n```\n\n```shell\ncurl -sL https://github.com/chimurai/json-fingerprint/raw/main/package.json | npx json-fingerprint\n$ 8d04433255d9cd89eb54dcb09b43d0be92ca5b5f5ba9dffee274869f6b9a9158\n```\n\n```shell\nwget -qO - https://github.com/chimurai/json-fingerprint/raw/main/package.json | npx json-fingerprint\n$ 8d04433255d9cd89eb54dcb09b43d0be92ca5b5f5ba9dffee274869f6b9a9158\n```\n\n## CLI options\n\n### `--file`\n\n### `--hash` (default: `sha256`)\n\n```shell\ncat package.json | npx json-fingerprint --hash=md5\n$ 4c86eaaa836218a1d5e6673e7f89303e\n```\n\n```shell\ncurl -sL https://github.com/chimurai/json-fingerprint/raw/main/package.json | npx json-fingerprint --hash=md5\n$ 4c86eaaa836218a1d5e6673e7f89303e\n```\n\n### `--help`\n\n### `--version`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchimurai%2Fjson-fingerprint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchimurai%2Fjson-fingerprint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchimurai%2Fjson-fingerprint/lists"}