{"id":15770086,"url":"https://github.com/benbowes/get-or-else","last_synced_at":"2026-01-26T12:38:30.440Z","repository":{"id":10372877,"uuid":"65532006","full_name":"benbowes/get-or-else","owner":"benbowes","description":"A tiny npm module to test a namespace is valid with a backup value if not","archived":false,"fork":false,"pushed_at":"2022-12-30T20:25:39.000Z","size":116,"stargazers_count":2,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-14T05:59:08.551Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/get-or-else","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/benbowes.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":"2016-08-12T07:16:10.000Z","updated_at":"2021-04-03T00:08:48.000Z","dependencies_parsed_at":"2023-01-13T15:54:20.638Z","dependency_job_id":null,"html_url":"https://github.com/benbowes/get-or-else","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benbowes%2Fget-or-else","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benbowes%2Fget-or-else/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benbowes%2Fget-or-else/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benbowes%2Fget-or-else/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benbowes","download_url":"https://codeload.github.com/benbowes/get-or-else/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247623011,"owners_count":20968574,"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":[],"created_at":"2024-10-04T14:21:57.221Z","updated_at":"2026-01-26T12:38:30.412Z","avatar_url":"https://github.com/benbowes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# get-or-else\n\n![Build status](https://api.travis-ci.org/benbowes/get-or-else.svg)\n![dependencies](https://img.shields.io/badge/dependencies-none-brightgreen.svg)\n\nSimple Get Or Else module written in JavaScript ES5.\n\nRequest an object property at a given namespace with a backup value, incase the desired namespace does not yield a result.\n\nUseful if you have an untrustworthy or deeply nested data source. It will probably save you a bit of if, else-ery.\n\n### Example ES5\n```javascript\nvar get = require(\"get-or-else\");\n\nwindow.a = { x: 4 };\n\nget([ window, 'a.b.c' ], {});\n// returns {} as window.a.b.c does not exist, so `else` is used\n\nget([ window, 'a' ], {});\n// returns { x: 4 } as window.a does exist, so expected value is returned\n```\n\n### Example ES6 Redux\n```javascript\nimport get from 'get-or-else';\n\nexport const name = (state = {}, action = {}) =\u003e {\n  switch(action.type) {\n    case 'SET_FIRSTNAME':\n      return {\n        ...state,\n        firstName: get([ action, 'payload.name.first' ], undefined)\n      };\n    default:\n      return state;\n  }\n};\n```\n\n### Example ES6 React\nsee this repo [get-or-else-demo](https://github.com/benbowes/get-or-else-demo)\n```javascript\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport get from 'get-or-else';\n\nconst nameObj = {\n  details: {\n    salutation: undefined,\n    name: {\n      first: 'Margaret'\n    }\n  }\n};\n\nconst NameComponent = () =\u003e (\n  \u003ch1\u003e\n    Welcome {get([ nameObj, 'details.salutation' ], 'back')}\n    \u003cspan\u003e {get([ nameObj, 'details.name.first' ], '')}\u003c/span\u003e\n    \u003cspan\u003e {get([ nameObj, 'details.name.last' ], '')}\u003c/span\u003e\n  \u003c/h1\u003e\n);\n\nReactDOM.render(\n  \u003cNameComponent /\u003e,\n  document.getElementById('root')\n);\n\n/* NameComponent Renders `\n\u003ch1\u003e\n  Welcome back\u003cspan\u003e Margaret\u003c/span\u003e\u003cspan\u003e\u003c/span\u003e\n\u003c/h1\u003e`\n\nnameObj.details.salutation does not exist so the backup value is used\nnameObj.details.name.last does not exist so it does not display\n*/\n```\n\n### NPM Package\n[get-or-else](https://www.npmjs.com/package/get-or-else)\n\n### Browser compatibility\nIE 9 or greater - [Array.every on Mozilla's compatibility chart](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/every#Browser_compatibility)\n\n### Run the tests\nGiven you have [Node](https://nodejs.org/en/) installed, `cd` into this folder and:\n```\nnpm install\nnpm test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenbowes%2Fget-or-else","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenbowes%2Fget-or-else","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenbowes%2Fget-or-else/lists"}