{"id":20614846,"url":"https://github.com/dashed/probe","last_synced_at":"2026-07-13T05:03:00.813Z","repository":{"id":32384921,"uuid":"35961325","full_name":"dashed/probe","owner":"dashed","description":"Observable Providence cursors  (DEPRECATED/UNMAINTAINED)","archived":false,"fork":false,"pushed_at":"2017-02-02T03:21:11.000Z","size":25,"stargazers_count":2,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-21T14:54:05.357Z","etag":null,"topics":[],"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/dashed.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}},"created_at":"2015-05-20T16:51:12.000Z","updated_at":"2017-02-02T03:20:29.000Z","dependencies_parsed_at":"2022-09-12T01:40:50.816Z","dependency_job_id":null,"html_url":"https://github.com/dashed/probe","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/dashed/probe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashed%2Fprobe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashed%2Fprobe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashed%2Fprobe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashed%2Fprobe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dashed","download_url":"https://codeload.github.com/dashed/probe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashed%2Fprobe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280987573,"owners_count":26425351,"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-25T02:00:06.499Z","response_time":81,"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":[],"created_at":"2024-11-16T11:13:43.873Z","updated_at":"2025-10-25T17:05:54.935Z","avatar_url":"https://github.com/dashed.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# probe [![Build Status](https://travis-ci.org/Dashed/probe.svg)](https://travis-ci.org/Dashed/probe)\n\n#  (DEPRECATED/UNMAINTAINED)\n\n\u003e `Probe` extends [Providence](https://github.com/dashed/providence) to add observation capabilities.\n\n## Usage\n\n```\n$ npm install --save probe\n```\n\n## Why?\n\nIt's usually useful to attach an observer to a `path`, and call it whenever a change at the subset or superset of `path` occurs.\n\n### API\n\n### `Probe`\n\n`Probe` extends [`Providence`](https://github.com/dashed/providence) constructor, and will have `Providence` API. See relevant `Providence` API docs: https://github.com/dashed/providence\n\n### `Probe.prototype.observe(listener)`\n\n- Add the function `listener` to listen for any changes at this Probe object's path (e.g. `probe.path()`).\n\n- Be aware that observation isn't scoped to the root data; only at path.\n\n- The `listener` function would be added to an internal lookup table that is shared among all Probe objects that inherit it.\n\n- The `listener` function will be invoked with three arguments: `(newValue, oldValue, pathOriginChange)`\n\n- Adding the same `listener` two or more times doesn't do anything.\n\n- Returns `unsubcribe` function that may be called at most once.\n\n**NOTE:** Shorthand for `Probe.prototype.on('any', listener)`\n\n### `Probe.prototype.unobserve(listener)`\n\n- Removes observer, `listener`, if it exists, at this Probe object's path.\n\n- Returns `this` for chaining.\n\n**NOTE:** Shorthand for `Probe.prototype.removeListener('any', listener)`\n\n\n### `Probe.prototype.on(event, listener)`\n\n- Add `listener` that'll be called whenever relevant `event` occurs at path  (e.g. `probe.path()`)..\n\n- `event` may be one of: `any`, `update`, `add`, `remove`, or `delete`\n\n- The `listener` function will be invoked with at most three arguments depending on the `event` subscribed:\n    - `any` event: `(newValue, oldValue, pathOriginChange)`\n    - `add` event: `(newValue, pathOriginChange)`\n    - `remove` event: `(oldValue, pathOriginChange)`\n    - `delete` event is alias of `remove` event\n\n- `pathOriginChange` is the path of the origin probe object that made the change. This is always relative to root.\n\n- `listener` function would be added to a lookup table that is shared among all Probe objects that inherit it.\n\n- Adding the same `listener` two or more times doesn't do anything.\n\n- Returns `unsubcribe` function that may be called at most once;\nsince it's associated with `.on()`, which was called.\n\n\n### `Probe.prototype.once(event, listener)`\n\n- Same semantics as `Probe.prototype.on(event, listener)`, except `listener` is only called at most once when `event` occurs at path  (e.g. `probe.path()`).\n\n- Returns `unsubcribe` function that may be called at most once;\nsince it's associated with `.once()`, which was called. Once listener has been called, calling the `unsubcribe` function has no effect.\n\n\n### `Probe.prototype.removeListener(event, listener)`\n\n- Removes `listener`, if it exists, from `event`.\n\n- If the same `listener` is observing another `event` at the same keypath, that listener will not be removed.\n\n- `event` may be one of: `any`, `update`, `add`, `remove`, or `delete`\n\n- Returns `this` for chaining.\n\n### `Probe.prototype.removeListeners()`\n\n- Remove any and all listeners from `event`.\n\n- `event` may be one of: `any`, `update`, `add`, `remove`, or `delete`\n\n- Returns `this` for chaining.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdashed%2Fprobe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdashed%2Fprobe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdashed%2Fprobe/lists"}