arrangekeys
Advanced tools
Comparing version 1.2.0 to 1.4.0-next.1573618275.5c67d0be192f3f405dedf0812ad3e0020ae83784
# History | ||
## v1.4.0 2019 November 13 | ||
- Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) | ||
## v1.3.0 2019 January 1 | ||
- Added JSDoc documentation | ||
- Updated [base files](https://github.com/bevry/base) and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) | ||
## v1.2.0 2016 May 27 | ||
- Updated internal conventions | ||
- Moved from [ESNextGuardian](https://github.com/bevry/esnextguardian) to [Editions](https://github.com/bevry/editions) | ||
- Moved from [ESNextGuardian](https://github.com/bevry/esnextguardian) to [Editions](https://github.com/bevry/editions) | ||
## v1.1.0 2015 December 12 | ||
- Updated internal conventions | ||
- Updated minimum supported node version from 0.4 to 0.12 | ||
- Added abilities to alphabetically sort keys, see README for details | ||
- Updated internal conventions | ||
- Updated minimum supported node version from 0.4 to 0.12 | ||
- Added abilities to alphabetically sort keys, see README for details | ||
## v1.0.0 2014 July 27 | ||
- Initial working release | ||
- Initial working release |
@@ -1,3 +0,4 @@ | ||
// 2016 March 8 | ||
// https://github.com/bevry/editions | ||
'use strict' | ||
/** @type {typeof import("./source/index.js") } */ | ||
module.exports = require('editions').requirePackage(__dirname, require) |
@@ -18,3 +18,3 @@ <!-- LICENSEFILE/ --> | ||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. | ||
@@ -21,0 +21,0 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
182
package.json
{ | ||
"title": "Arrange Keys", | ||
"name": "arrangekeys", | ||
"version": "1.2.0", | ||
"version": "1.4.0-next.1573618275.5c67d0be192f3f405dedf0812ad3e0020ae83784", | ||
"description": "Returns a copy of a JavaScript object with the keys arranged in a specified order. Useful for formatting JSON files.", | ||
@@ -21,27 +21,30 @@ "homepage": "https://github.com/bevry/arrangekeys", | ||
"---", | ||
"slackin", | ||
"patreon", | ||
"gratipay", | ||
"flattr", | ||
"liberapay", | ||
"buymeacoffee", | ||
"opencollective", | ||
"crypto", | ||
"paypal", | ||
"bitcoin", | ||
"wishlist" | ||
], | ||
"config": { | ||
"buymeacoffeeUsername": "balupton", | ||
"cryptoURL": "https://bevry.me/crypto", | ||
"flattrUsername": "balupton", | ||
"liberapayUsername": "bevry", | ||
"opencollectiveUsername": "bevry", | ||
"patreonUsername": "bevry", | ||
"gratipayUsername": "bevry", | ||
"flattrUsername": "balupton", | ||
"paypalURL": "https://bevry.me/paypal", | ||
"bitcoinURL": "https://bevry.me/bitcoin", | ||
"wishlistURL": "https://bevry.me/wishlist", | ||
"slackinURL": "https://slack.bevry.me" | ||
"travisTLD": "com" | ||
} | ||
}, | ||
"funding": "https://bevry.me/fund", | ||
"author": "2014+ Bevry Pty Ltd <us@bevry.me> (http://bevry.me)", | ||
"maintainers": [ | ||
"Benjamin Lupton <b@lupton.cc> (https://balupton.com)" | ||
"Benjamin Lupton <b@lupton.cc> (http://balupton.com)" | ||
], | ||
"contributors": [ | ||
"Benjamin Lupton (http://balupton.com)", | ||
"Benjamin Lupton <b@lupton.cc> (https://balupton.com)" | ||
"Benjamin Lupton <b@lupton.cc> (http://balupton.com)" | ||
], | ||
@@ -53,3 +56,3 @@ "bugs": { | ||
"type": "git", | ||
"url": "http://github.com/bevry/arrangekeys.git" | ||
"url": "https://github.com/bevry/arrangekeys.git" | ||
}, | ||
@@ -61,55 +64,136 @@ "engines": { | ||
{ | ||
"description": "Source + ESNext + Require", | ||
"entry": "source/index.js", | ||
"description": "esnext source code with require for modules", | ||
"directory": "source", | ||
"syntaxes": [ | ||
"entry": "index.js", | ||
"tags": [ | ||
"javascript", | ||
"esnext", | ||
"require", | ||
"const", | ||
"defaults" | ||
] | ||
"require" | ||
], | ||
"engines": { | ||
"node": "6 || 8 || 10 || 12 || 13", | ||
"browsers": false | ||
} | ||
}, | ||
{ | ||
"description": "Babel Compiled + ES2015 + Require", | ||
"entry": "es2015/index.js", | ||
"directory": "es2015", | ||
"syntaxes": [ | ||
"description": "esnext compiled for browsers with require for modules", | ||
"directory": "edition-browsers", | ||
"entry": "index.js", | ||
"tags": [ | ||
"javascript", | ||
"es2015", | ||
"require" | ||
] | ||
], | ||
"engines": { | ||
"node": false, | ||
"browsers": "defaults" | ||
} | ||
}, | ||
{ | ||
"description": "esnext compiled for node.js 0.12 with require for modules", | ||
"directory": "edition-node-0.12", | ||
"entry": "index.js", | ||
"tags": [ | ||
"javascript", | ||
"require" | ||
], | ||
"engines": { | ||
"node": "0.12 || 4 || 6 || 8 || 10 || 12 || 13", | ||
"browsers": false | ||
} | ||
} | ||
], | ||
"main": "index.js", | ||
"browser": "es2015/index.js", | ||
"browser": "edition-browsers/index.js", | ||
"dependencies": { | ||
"editions": "^1.1.1" | ||
"editions": "^2.2.0" | ||
}, | ||
"devDependencies": { | ||
"assert-helpers": "^4.2.0", | ||
"babel-cli": "^6.9.0", | ||
"babel-preset-es2015": "^6.9.0", | ||
"eslint": "^2.10.2", | ||
"eslint-plugin-babel": "^3.2.0", | ||
"joe": "^1.6.0", | ||
"joe-reporter-console": "^1.2.1", | ||
"projectz": "^1.1.5" | ||
"@babel/cli": "^7.7.0", | ||
"@babel/core": "^7.7.2", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.6.2", | ||
"@babel/preset-env": "^7.7.1", | ||
"assert-helpers": "4.10.0", | ||
"eslint": "^6.6.0", | ||
"eslint-config-bevry": "^1.2.1", | ||
"eslint-config-prettier": "^6.5.0", | ||
"eslint-plugin-babel": "^5.3.0", | ||
"eslint-plugin-prettier": "^3.1.1", | ||
"jsdoc": "^3.6.3", | ||
"kava": "^3.2.0", | ||
"minami": "^1.2.3", | ||
"prettier": "^1.19.1", | ||
"projectz": "^1.10.0", | ||
"surge": "^0.21.3", | ||
"valid-directory": "^1.0.0" | ||
}, | ||
"scripts": { | ||
"setup": "npm install", | ||
"clean": "rm -Rf ./docs ./es2015", | ||
"compile": "npm run compile:es2015", | ||
"compile:es2015": "babel ./source --out-dir ./es2015 --presets es2015", | ||
"meta": "npm run meta:projectz", | ||
"meta:projectz": "projectz compile", | ||
"prepare": "npm run compile && npm run test && npm run meta", | ||
"release": "npm run prepare && npm run release:publish && npm run release:tag && npm run release:push", | ||
"release:publish": "npm publish", | ||
"release:tag": "git tag v$npm_package_version -a", | ||
"release:push": "git push origin master && git push origin --tags", | ||
"pretest": "npm run test:eslint", | ||
"test:eslint": "eslint ./source", | ||
"test": "node --harmony -e \"require('editions').requirePackage(process.cwd(), require, 'test.js')\"" | ||
"our:clean": "rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next", | ||
"our:compile": "npm run our:compile:edition-browsers && npm run our:compile:edition-node-0.12", | ||
"our:compile:edition-browsers": "env BABEL_ENV=edition-browsers babel --out-dir ./edition-browsers ./source", | ||
"our:compile:edition-node-0.12": "env BABEL_ENV=edition-node-0.12 babel --out-dir ./edition-node-0.12 ./source", | ||
"our:deploy": "echo no need for this project", | ||
"our:meta": "npm run our:meta:docs && npm run our:meta:projectz", | ||
"our:meta:docs": "npm run our:meta:docs:jsdoc", | ||
"our:meta:docs:jsdoc": "rm -Rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md --template ./node_modules/minami ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -Rf ./docs/$npm_package_name/$npm_package_version", | ||
"our:meta:projectz": "projectz compile", | ||
"our:release": "npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push", | ||
"our:release:check-changelog": "cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)", | ||
"our:release:check-dirty": "git diff --exit-code", | ||
"our:release:prepare": "npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta", | ||
"our:release:push": "git push origin master && git push origin --tags", | ||
"our:release:tag": "export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"", | ||
"our:setup": "npm run our:setup:install", | ||
"our:setup:install": "npm install", | ||
"our:test": "npm run our:verify && npm test", | ||
"our:verify": "npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier", | ||
"our:verify:directory": "npx valid-directory", | ||
"our:verify:eslint": "eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source", | ||
"our:verify:prettier": "prettier --write ./source/**", | ||
"test": "node ./test.js" | ||
}, | ||
"eslintConfig": { | ||
"extends": [ | ||
"bevry" | ||
] | ||
}, | ||
"prettier": { | ||
"semi": false, | ||
"singleQuote": true | ||
}, | ||
"babel": { | ||
"env": { | ||
"edition-browsers": { | ||
"sourceType": "script", | ||
"presets": [ | ||
[ | ||
"@babel/preset-env", | ||
{ | ||
"targets": "defaults", | ||
"modules": "commonjs" | ||
} | ||
] | ||
], | ||
"plugins": [ | ||
"@babel/proposal-object-rest-spread" | ||
] | ||
}, | ||
"edition-node-0.12": { | ||
"sourceType": "script", | ||
"presets": [ | ||
[ | ||
"@babel/preset-env", | ||
{ | ||
"targets": { | ||
"node": "0.12" | ||
}, | ||
"modules": "commonjs" | ||
} | ||
] | ||
], | ||
"plugins": [ | ||
"@babel/proposal-object-rest-spread" | ||
] | ||
} | ||
} | ||
} | ||
} |
112
README.md
@@ -10,3 +10,3 @@ <!-- TITLE/ --> | ||
<span class="badge-travisci"><a href="http://travis-ci.org/bevry/arrangekeys" title="Check this project's build status on TravisCI"><img src="https://img.shields.io/travis/bevry/arrangekeys/master.svg" alt="Travis CI Build Status" /></a></span> | ||
<span class="badge-travisci"><a href="http://travis-ci.com/bevry/arrangekeys" title="Check this project's build status on TravisCI"><img src="https://img.shields.io/travis/com/bevry/arrangekeys/master.svg" alt="Travis CI Build Status" /></a></span> | ||
<span class="badge-npmversion"><a href="https://npmjs.org/package/arrangekeys" title="View this project on NPM"><img src="https://img.shields.io/npm/v/arrangekeys.svg" alt="NPM version" /></a></span> | ||
@@ -17,8 +17,9 @@ <span class="badge-npmdownloads"><a href="https://npmjs.org/package/arrangekeys" title="View this project on NPM"><img src="https://img.shields.io/npm/dm/arrangekeys.svg" alt="NPM downloads" /></a></span> | ||
<br class="badge-separator" /> | ||
<span class="badge-slackin"><a href="https://slack.bevry.me" title="Join this project's slack community"><img src="https://slack.bevry.me/badge.svg" alt="Slack community badge" /></a></span> | ||
<span class="badge-patreon"><a href="http://patreon.com/bevry" title="Donate to this project using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a></span> | ||
<span class="badge-gratipay"><a href="https://www.gratipay.com/bevry" title="Donate weekly to this project using Gratipay"><img src="https://img.shields.io/badge/gratipay-donate-yellow.svg" alt="Gratipay donate button" /></a></span> | ||
<span class="badge-patreon"><a href="https://patreon.com/bevry" title="Donate to this project using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a></span> | ||
<span class="badge-flattr"><a href="https://flattr.com/profile/balupton" title="Donate to this project using Flattr"><img src="https://img.shields.io/badge/flattr-donate-yellow.svg" alt="Flattr donate button" /></a></span> | ||
<span class="badge-liberapay"><a href="https://liberapay.com/bevry" title="Donate to this project using Liberapay"><img src="https://img.shields.io/badge/liberapay-donate-yellow.svg" alt="Liberapay donate button" /></a></span> | ||
<span class="badge-buymeacoffee"><a href="https://buymeacoffee.com/balupton" title="Donate to this project using Buy Me A Coffee"><img src="https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg" alt="Buy Me A Coffee donate button" /></a></span> | ||
<span class="badge-opencollective"><a href="https://opencollective.com/bevry" title="Donate to this project using Open Collective"><img src="https://img.shields.io/badge/open%20collective-donate-yellow.svg" alt="Open Collective donate button" /></a></span> | ||
<span class="badge-crypto"><a href="https://bevry.me/crypto" title="Donate to this project using Cryptocurrency"><img src="https://img.shields.io/badge/crypto-donate-yellow.svg" alt="crypto donate button" /></a></span> | ||
<span class="badge-paypal"><a href="https://bevry.me/paypal" title="Donate to this project using Paypal"><img src="https://img.shields.io/badge/paypal-donate-yellow.svg" alt="PayPal donate button" /></a></span> | ||
<span class="badge-bitcoin"><a href="https://bevry.me/bitcoin" title="Donate once-off to this project using Bitcoin"><img src="https://img.shields.io/badge/bitcoin-donate-yellow.svg" alt="Bitcoin donate button" /></a></span> | ||
<span class="badge-wishlist"><a href="https://bevry.me/wishlist" title="Buy an item on our wishlist for us"><img src="https://img.shields.io/badge/wishlist-donate-yellow.svg" alt="Wishlist browse button" /></a></span> | ||
@@ -40,25 +41,37 @@ | ||
<a href="https://npmjs.com" title="npm is a package manager for javascript"><h3>NPM</h3></a><ul> | ||
<a href="https://npmjs.com" title="npm is a package manager for javascript"><h3>npm</h3></a> | ||
<ul> | ||
<li>Install: <code>npm install --save arrangekeys</code></li> | ||
<li>Module: <code>require('arrangekeys')</code></li></ul> | ||
<li>Require: <code>require('arrangekeys')</code></li> | ||
</ul> | ||
<a href="http://browserify.org" title="Browserify lets you require('modules') in the browser by bundling up all of your dependencies"><h3>Browserify</h3></a><ul> | ||
<li>Install: <code>npm install --save arrangekeys</code></li> | ||
<li>Module: <code>require('arrangekeys')</code></li> | ||
<li>CDN URL: <code>//wzrd.in/bundle/arrangekeys@1.2.0</code></li></ul> | ||
<a href="https://jspm.io" title="Native ES Modules CDN"><h3>jspm</h3></a> | ||
<a href="http://enderjs.com" title="Ender is a full featured package manager for your browser"><h3>Ender</h3></a><ul> | ||
<li>Install: <code>ender add arrangekeys</code></li> | ||
<li>Module: <code>require('arrangekeys')</code></li></ul> | ||
``` html | ||
<script type="module"> | ||
import * as pkg from '//dev.jspm.io/arrangekeys' | ||
</script> | ||
``` | ||
<h3><a href="https://github.com/bevry/editions" title="Editions are the best way to produce and consume packages you care about.">Editions</a></h3> | ||
<h3><a href="https://editions.bevry.me" title="Editions are the best way to produce and consume packages you care about.">Editions</a></h3> | ||
<p>This package is published with the following editions:</p> | ||
<ul><li><code>arrangekeys</code> aliases <code>arrangekeys/index.js</code> which uses <a href="https://github.com/bevry/editions" title="Editions are the best way to produce and consume packages you care about.">Editions</a> to automatically select the correct edition for the consumers environment</li> | ||
<li><code>arrangekeys/source/index.js</code> is Source + <a href="https://babeljs.io/docs/learn-es2015/" title="ECMAScript Next">ESNext</a> + <a href="https://nodejs.org/dist/latest-v5.x/docs/api/modules.html" title="Node/CJS Modules">Require</a></li> | ||
<li><code>arrangekeys/es2015/index.js</code> is <a href="https://babeljs.io" title="The compiler for writing next generation JavaScript">Babel</a> Compiled + <a href="http://babeljs.io/docs/plugins/preset-es2015/" title="ECMAScript 2015">ES2015</a> + <a href="https://nodejs.org/dist/latest-v5.x/docs/api/modules.html" title="Node/CJS Modules">Require</a></li></ul> | ||
<ul><li><code>arrangekeys</code> aliases <code>arrangekeys/index.js</code> which uses <a href="https://editions.bevry.me" title="Editions are the best way to produce and consume packages you care about.">Editions</a> to automatically select the correct edition for the consumers environment</li> | ||
<li><code>arrangekeys/source/index.js</code> is esnext source code with require for modules</li> | ||
<li><code>arrangekeys/edition-browsers/index.js</code> is esnext compiled for browsers with require for modules</li> | ||
<li><code>arrangekeys/edition-node-0.12/index.js</code> is esnext compiled for node.js 0.12 with require for modules</li></ul> | ||
<p>Older environments may need <a href="https://babeljs.io/docs/usage/polyfill/" title="A polyfill that emulates missing ECMAScript environment features">Babel's Polyfill</a> or something similar.</p> | ||
<h3><a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a></h3> | ||
This project provides its type information via inline <a href="http://usejsdoc.org" title="JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor">JSDoc Comments</a>. To make use of this in <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so: | ||
``` json | ||
{ | ||
"compilerOptions": { | ||
"maxNodeModuleJsDepth": 5 | ||
} | ||
} | ||
``` | ||
<!-- /INSTALL --> | ||
@@ -69,11 +82,16 @@ | ||
``` javascript | ||
[API Documentation.](http://master.arrangekeys.bevry.surge.sh/docs/) | ||
```javascript | ||
// Arrange the keys of the input so that keys "b" and "c" are first | ||
console.log( | ||
require('arrangekeys')({ | ||
z: 1, | ||
a: 2, | ||
b: 3, | ||
c: 4 | ||
}, 'b c') | ||
require('arrangekeys')( | ||
{ | ||
z: 1, | ||
a: 2, | ||
b: 3, | ||
c: 4 | ||
}, | ||
'b c' | ||
) | ||
) /* { | ||
@@ -88,8 +106,12 @@ b: 3, | ||
console.log( | ||
require('arrangekeys')({ | ||
z: 1, | ||
a: 2, | ||
b: 3, | ||
c: 4 | ||
}, 'b c', true) | ||
require('arrangekeys')( | ||
{ | ||
z: 1, | ||
a: 2, | ||
b: 3, | ||
c: 4 | ||
}, | ||
'b c', | ||
true | ||
) | ||
) /* { | ||
@@ -104,8 +126,8 @@ b: 3, | ||
console.log( | ||
require('arrangekeys')({ | ||
z: 1, | ||
a: 2, | ||
b: 3, | ||
c: 4 | ||
}) | ||
require('arrangekeys')({ | ||
z: 1, | ||
a: 2, | ||
b: 3, | ||
c: 4 | ||
}) | ||
) /* { | ||
@@ -119,3 +141,2 @@ a: 2, | ||
<!-- HISTORY/ --> | ||
@@ -147,3 +168,3 @@ | ||
<ul><li><a href="https://balupton.com">Benjamin Lupton</a> — <a href="https://github.com/bevry/arrangekeys/commits?author=balupton" title="View the GitHub contributions of Benjamin Lupton on repository bevry/arrangekeys">view contributions</a></li></ul> | ||
<ul><li><a href="http://balupton.com">Benjamin Lupton</a> — <a href="https://github.com/bevry/arrangekeys/commits?author=balupton" title="View the GitHub contributions of Benjamin Lupton on repository bevry/arrangekeys">view contributions</a></li></ul> | ||
@@ -154,7 +175,9 @@ <h3>Sponsors</h3> | ||
<span class="badge-patreon"><a href="http://patreon.com/bevry" title="Donate to this project using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a></span> | ||
<span class="badge-gratipay"><a href="https://www.gratipay.com/bevry" title="Donate weekly to this project using Gratipay"><img src="https://img.shields.io/badge/gratipay-donate-yellow.svg" alt="Gratipay donate button" /></a></span> | ||
<span class="badge-patreon"><a href="https://patreon.com/bevry" title="Donate to this project using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a></span> | ||
<span class="badge-flattr"><a href="https://flattr.com/profile/balupton" title="Donate to this project using Flattr"><img src="https://img.shields.io/badge/flattr-donate-yellow.svg" alt="Flattr donate button" /></a></span> | ||
<span class="badge-liberapay"><a href="https://liberapay.com/bevry" title="Donate to this project using Liberapay"><img src="https://img.shields.io/badge/liberapay-donate-yellow.svg" alt="Liberapay donate button" /></a></span> | ||
<span class="badge-buymeacoffee"><a href="https://buymeacoffee.com/balupton" title="Donate to this project using Buy Me A Coffee"><img src="https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg" alt="Buy Me A Coffee donate button" /></a></span> | ||
<span class="badge-opencollective"><a href="https://opencollective.com/bevry" title="Donate to this project using Open Collective"><img src="https://img.shields.io/badge/open%20collective-donate-yellow.svg" alt="Open Collective donate button" /></a></span> | ||
<span class="badge-crypto"><a href="https://bevry.me/crypto" title="Donate to this project using Cryptocurrency"><img src="https://img.shields.io/badge/crypto-donate-yellow.svg" alt="crypto donate button" /></a></span> | ||
<span class="badge-paypal"><a href="https://bevry.me/paypal" title="Donate to this project using Paypal"><img src="https://img.shields.io/badge/paypal-donate-yellow.svg" alt="PayPal donate button" /></a></span> | ||
<span class="badge-bitcoin"><a href="https://bevry.me/bitcoin" title="Donate once-off to this project using Bitcoin"><img src="https://img.shields.io/badge/bitcoin-donate-yellow.svg" alt="Bitcoin donate button" /></a></span> | ||
<span class="badge-wishlist"><a href="https://bevry.me/wishlist" title="Buy an item on our wishlist for us"><img src="https://img.shields.io/badge/wishlist-donate-yellow.svg" alt="Wishlist browse button" /></a></span> | ||
@@ -166,4 +189,3 @@ | ||
<ul><li><a href="http://balupton.com">Benjamin Lupton</a></li> | ||
<li><a href="https://balupton.com">Benjamin Lupton</a> — <a href="https://github.com/bevry/arrangekeys/commits?author=balupton" title="View the GitHub contributions of Benjamin Lupton on repository bevry/arrangekeys">view contributions</a></li></ul> | ||
<ul><li><a href="http://balupton.com">Benjamin Lupton</a> — <a href="https://github.com/bevry/arrangekeys/commits?author=balupton" title="View the GitHub contributions of Benjamin Lupton on repository bevry/arrangekeys">view contributions</a></li></ul> | ||
@@ -170,0 +192,0 @@ <a href="https://github.com/bevry/arrangekeys/blob/master/CONTRIBUTING.md#files">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a> |
@@ -1,3 +0,11 @@ | ||
// Define | ||
function arrangekeys (data, keys, sort = false) { | ||
'use strict' | ||
/** | ||
* Returns a copy of a JavaScript object with the keys arranged in a specified order. | ||
* @param {object} data The unarranged source object. | ||
* @param {string[]|string|false} [keys] The keys that we wish to arrange at the top. Can be a an array of keys. A string of keys seperated by a space character. Or false, to just sort the keys of the object. | ||
* @param {boolean} [sort=false] If true, the remaining keys are sorted. | ||
* @returns {object} The arranged object. | ||
*/ | ||
function arrangekeys(data, keys = false, sort = false) { | ||
// Prepare | ||
@@ -7,7 +15,6 @@ const result = {} | ||
// Expand | ||
if ( !keys ) { | ||
if (!keys) { | ||
sort = true | ||
} | ||
else { | ||
if ( typeof keys === 'string' ) { | ||
} else { | ||
if (typeof keys === 'string') { | ||
keys = keys.split(/\s+/) | ||
@@ -17,4 +24,4 @@ } | ||
// Add the specified keys in the specified order | ||
for ( const key of keys ) { | ||
if ( typeof data[key] !== 'undefined' ) { | ||
for (const key of keys) { | ||
if (typeof data[key] !== 'undefined') { | ||
result[key] = data[key] | ||
@@ -27,4 +34,4 @@ } | ||
const dataKeys = sort ? Object.keys(data).sort() : Object.keys(data) | ||
for ( const key of dataKeys ) { | ||
result[key] = data[key] // no need for !(key in keys) as we assume the JS engine handles that for us | ||
for (const key of dataKeys) { | ||
result[key] = data[key] // no need for !(key in keys) as we assume the JS engine handles that for us | ||
} | ||
@@ -31,0 +38,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
25168
10
176
200
17
1
2
+ Addededitions@2.3.1(transitive)
+ Addederrlop@2.2.0(transitive)
+ Addedsemver@6.3.1(transitive)
- Removededitions@1.3.4(transitive)
Updatededitions@^2.2.0