{"id":32486252,"url":"https://github.com/raiseandfall/hash.subscribe","last_synced_at":"2026-05-15T08:33:50.064Z","repository":{"id":36746419,"uuid":"41053032","full_name":"raiseandfall/hash.subscribe","owner":"raiseandfall","description":"Subscribe anything to the browser Hash location changes.","archived":false,"fork":false,"pushed_at":"2017-07-10T12:45:06.000Z","size":38,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-19T11:34:11.775Z","etag":null,"topics":["hash","npm","npm-package","url-hash"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/hash.subscribe","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/raiseandfall.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-19T18:40:00.000Z","updated_at":"2017-07-10T12:45:07.000Z","dependencies_parsed_at":"2022-09-07T09:00:59.601Z","dependency_job_id":null,"html_url":"https://github.com/raiseandfall/hash.subscribe","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/raiseandfall/hash.subscribe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiseandfall%2Fhash.subscribe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiseandfall%2Fhash.subscribe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiseandfall%2Fhash.subscribe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiseandfall%2Fhash.subscribe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raiseandfall","download_url":"https://codeload.github.com/raiseandfall/hash.subscribe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raiseandfall%2Fhash.subscribe/sbom","scorecard":{"id":759636,"data":{"date":"2022-08-15","repo":{"name":"github.com/raiseandfall/hash.subscribe","commit":"6cd52633858c7365f1af8944db31958c55d5b5f7"},"scorecard":{"version":"v4.5.0-26-g10b6052","commit":"10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93"},"score":4.8,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) out of 30 and 0 issue activity out of 2 found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"no reviews found","details":["Warn: no reviews found for commit: 6cd52633858c7365f1af8944db31958c55d5b5f7","Warn: no reviews found for commit: db0f37eb140cceba9f8b004609d1d974a51a1bb2","Warn: no reviews found for commit: f711920be34f0dd5ad12086dd7981eb44a8a770c","Warn: no reviews found for commit: 93979ee2121433a6f06633f2547e5a34b517339a","Warn: no reviews found for commit: 4bab4f8a1840a6db2565a128e527f71d2d57cdea","Warn: no reviews found for commit: bbb9ddfd2446d3b4e0a427112c87a398d84ee767","Warn: no reviews found for commit: 4af1fa7cc11726558b3486d3d596a123fc321d0f","Warn: no reviews found for commit: 5d2cef02f4e53aa806f8232efeee7e0415cfd4b0","Warn: no reviews found for commit: 77908be43068ebed27460137cf1eb6851db73788","Warn: no reviews found for commit: 3c388e22d9c770469e4ff1c427a0c120a0f5154f","Warn: no reviews found for commit: c1a4f0466722e2f414c4f41e8b3e21fc4d9f58c3","Warn: no reviews found for commit: 03115bd144958e27c0012cd25e1a3a22d88cdb7b","Warn: no reviews found for commit: cef6ba74b693d60fae7d81f0889ee99ac60a197b","Warn: no reviews found for commit: 015639f03d608e7c9c04a778e99f025116fcb409","Warn: no reviews found for commit: c22ecf329935c62bc35ab4247a7324099aad0a0f","Warn: no reviews found for commit: 641fddaa08a7a389fb192b43ab5a193ba5de52a9","Warn: no reviews found for commit: 44f66b8a07b0e8573bafab69403173117b90210f","Warn: no reviews found for commit: 3d1dbd2a6de955fc180a6e1e018aab07f3de4480","Warn: no reviews found for commit: a3e9be9a2a2a97e48860c71a84be96e79ac6d6ec","Warn: no reviews found for commit: fed90d7334acada63ef524c7134c0044cf03d4f4","Warn: no reviews found for commit: 28b1a110aac28ecd6a77f2e869d1ba737a812d6c","Warn: no reviews found for commit: 1000eeb38384fe95cf5c85660ed8a0e2baa9cd14","Warn: no reviews found for commit: 5dfae727c48cb5c57bd806ae1c07ffd68d22018e","Warn: no reviews found for commit: a5f0fc64a220268488edbc209c4f0a8a33351451","Warn: no reviews found for commit: 454cc49aac09965b7842dcf4127e4e38aaa68ad1","Warn: no reviews found for commit: c8072edc50565750b99f95b210b018064e403db6","Warn: no reviews found for commit: 4b5d331afcf86298ab6f675654395cb30bf5fb0b","Warn: no reviews found for commit: d781949784d96604329dc08804efc5db455c06f0","Warn: no reviews found for commit: c9ecd5d6a4c3038ba1cbd9e4d94c23c3357f8c41","Warn: no reviews found for commit: 505d0093409381030bbe98b58a1e7948a8469100"],"documentation":{"short":"Determines if the project requires code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no badge detected","details":null,"documentation":{"short":"Determines if the project has a CII Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":10,"reason":"tokens are read-only in GitHub workflows","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"no published package detected","details":["Warn: no GitHub publishing workflow detected"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#packaging"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: : LICENSE:1"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":10,"reason":"all dependencies are pinned","details":["Info: GitHub-owned GitHubActions are pinned","Info: Third-party GitHubActions are pinned","Info: Dockerfile dependencies are pinned","Info: no insecure (not pinned by hash) dependency downloads found in Dockerfiles","Info: no insecure (not pinned by hash) dependency downloads found in shell scripts"],"documentation":{"short":"Determines if the project has declared and pinned its dependencies.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#binary-artifacts"}},{"name":"Vulnerabilities","score":10,"reason":"no vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":["Warn: no GitHub releases found"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":null,"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#security-policy"}},{"name":"Dependency-Update-Tool","score":0,"reason":"no update tool detected","details":["Warn: dependabot config file not detected in source location.\n\t\t\tWe recommend setting this configuration in code so it can be easily verified by others.","Warn: renovatebot config file not detected in source location.\n\t\t\tWe recommend setting this configuration in code so it can be easily verified by others."],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#dependency-update-tool"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":null,"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/10b6052acfb4f0b8136bc4876cb6f5b6f26bfe93/docs/checks.md#fuzzing"}}]},"last_synced_at":"2025-08-22T22:56:44.302Z","repository_id":36746419,"created_at":"2025-08-22T22:56:44.303Z","updated_at":"2025-08-22T22:56:44.303Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281222541,"owners_count":26464000,"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","status":"online","status_checked_at":"2025-10-27T02:00:05.855Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["hash","npm","npm-package","url-hash"],"created_at":"2025-10-27T05:40:41.340Z","updated_at":"2025-10-27T05:40:42.818Z","avatar_url":"https://github.com/raiseandfall.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hash.subscribe \n\n[![Build\nStatus](https://travis-ci.org/raiseandfall/hash.subscribe.svg)](https://travis-ci.org/raiseandfall/hash.subscribe)\n[![js-semistandard-style](https://img.shields.io/badge/code%20style-semistandard-brightgreen.svg?style=flat-square)](https://github.com/Flet/semistandard) [![Downloads](https://img.shields.io/npm/dt/hash.subscribe.svg)](https://www.npmjs.com/package/hash.subscribe)\n\nA browser hash listener system using query string style parameters ( `#foo=bar\u0026baz=qux` ), based on the subscribe design pattern.  \n\nFeatures:  \n- Browser Hash initialization\n- Subscribe to Hash specific parameters\n- Set specific Hash parameter\n- Mute / Unmute subscription\n\n## [CHANGELOG](./CHANGELOG.md)\n\n## INSTALL\n```shell\n$ npm install hash.subscribe\n```\n\n## USAGE\n```javascript\nvar Hash = require('hash.subscribe');\n\n// Init browser hash\nHash.init('foo=bar');\n\n// Set parameters (object)\nHash.setHash({\n  foo: ['bar'],\n  baz: ['qux']\n});\n\n// Set hash (string)\nHash.setHash('foo=bar\u0026baz=qux');\n\n// Update one key value\nHash.updateHashKeyValue('foo', ['bar1', 'bar2']);\n\n// Delete one param\nHash.deleteParam('baz');\n\n// Subscribe to parameter(s)\nHash.subscribe(['foo', 'baz'], function(params) {\n  if (params.foo.changed) {\n    console.log('Param Foo has changed : ' + params.foo.values);\n  }\n});\n\n// More examples in the test file...\n```\n\n## API\n\n### `init(hash)`\nParameter:  \n- `hash` - String | Object - default hash to initialize the page with\n\n### `getHash(keepHash)`\nGet current hash  \nParameter:  \n- `keepHash` - Boolean - whether or not to keep the hash character in the return string  \nReturns: String\n\n### `getParams`\nGet current hash parameters  \nReturns: Object\n\n### `getParam(key)`\nGet values of one hash parameter  \nParameter:  \n- `key` - string - parameter name  \nReturns: Array\n\n### `setHash(hash)`\nUpdates current hash  \nParameter:  \n- `hash` - String | Object - new hash\n\n### `updateHashKeyValue(key, value)`\nUpdates one hash key  \nParameters:  \n- `key` - String - hash key to update  \n- `value` - Array - new value(s) for key  \n\n### `deleteParam(params)`\nDeletes hash param(s)  \nParameter:  \n- `params` - String | Array - param(s) name(s) to delete\n\n### `subscribe([hashParameters], callback)`\nSubscribe to specific parameters  \nParameters:  \n- `hashParameters` - Array - Array of parameters names you want to subscribe to\n- `callback` - Function - Callback function called when a parameter has changed\n\n### `mute()`\nMutes subscription to Hash\n\n### `unmute()`\nResume subscription to Hash  \n\n### `destroy()` \nDestroys current hash value\n\n## CONTRIBUTE\n\n### Development task\n```shell\n$ git clone git@github.com:raiseandfall/Hash.subscribe.git \u0026\u0026 cd Hash.subscribe\n$ npm run dev\n```\n\n### Run tests independently\n```shell\n$ npm run test\n```\n\n## LICENSE\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraiseandfall%2Fhash.subscribe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraiseandfall%2Fhash.subscribe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraiseandfall%2Fhash.subscribe/lists"}