Skip to content

Commit 3c7faf7

Browse files
committed
Initial commit
1 parent ac1bcee commit 3c7faf7

File tree

12 files changed

+8129
-2
lines changed

12 files changed

+8129
-2
lines changed

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,14 @@ dist
102102

103103
# TernJS port file
104104
.tern-port
105+
# Mac specific
106+
.DS_Store
107+
108+
# Secret stuff
109+
.npmrc
110+
.env
111+
112+
# Node package
113+
node_modules
114+
*.tgz
115+

.npmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
tests
2+
src

.prettierrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Prettier configuration
2+
trailingComma: "all"

README.md

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,45 @@
1-
# exclude-key-js
2-
Exclude a key from JSON
1+
# @codewell/exclude-keys-js
2+
3+
Exclude keys from JavaScript objects.
4+
5+
## Installation
6+
7+
```
8+
npm install @codewell/exclude-keys
9+
```
10+
11+
## Basic Usage
12+
13+
```JavaScript
14+
import excludeKeys from '@codewell/exclude-keys';
15+
16+
const object = { one: 1, two: 2, three: 3 };
17+
18+
// Exclude several keys
19+
20+
excludeKeys(object, 'one');
21+
// => { two: 2, three: 3 }
22+
23+
excludeKeys(object, 'one', 'two');
24+
// => { three: 3 }
25+
26+
excludeKeys(object, 'one', 'three');
27+
// => { two: 2 }
28+
29+
excludeKeys(object, 'one', 'two', 'three');
30+
// => {}
31+
32+
excludeKeys(object, 'two');
33+
// => { one: 1, three: 3 }
34+
35+
excludeKeys(object, 'two', 'three');
36+
// => { one: 1 }
37+
38+
excludeKeys(object, 'three');
39+
// => { one: 1, two: 2 }
40+
```
41+
42+
## Contribution
43+
44+
Please help by submitting issues and pull requests here on github
45+
Read more on [codewell's webpage](https://codewell.github.io/contribution)

index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
if (process.env.NODE_ENV === "production") {
2+
module.exports = require("./lib/prod");
3+
} else {
4+
module.exports = require("./lib/dev");
5+
}

lib/dev.js

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
"use strict";
2+
3+
function _defineProperty(obj, key, value) {
4+
if (key in obj) {
5+
Object.defineProperty(obj, key, {
6+
value: value,
7+
enumerable: true,
8+
configurable: true,
9+
writable: true,
10+
});
11+
} else {
12+
obj[key] = value;
13+
}
14+
15+
return obj;
16+
}
17+
18+
function ownKeys(object, enumerableOnly) {
19+
var keys = Object.keys(object);
20+
21+
if (Object.getOwnPropertySymbols) {
22+
var symbols = Object.getOwnPropertySymbols(object);
23+
if (enumerableOnly)
24+
symbols = symbols.filter(function (sym) {
25+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
26+
});
27+
keys.push.apply(keys, symbols);
28+
}
29+
30+
return keys;
31+
}
32+
33+
function _objectSpread2(target) {
34+
for (var i = 1; i < arguments.length; i++) {
35+
var source = arguments[i] != null ? arguments[i] : {};
36+
37+
if (i % 2) {
38+
ownKeys(Object(source), true).forEach(function (key) {
39+
_defineProperty(target, key, source[key]);
40+
});
41+
} else if (Object.getOwnPropertyDescriptors) {
42+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
43+
} else {
44+
ownKeys(Object(source)).forEach(function (key) {
45+
Object.defineProperty(
46+
target,
47+
key,
48+
Object.getOwnPropertyDescriptor(source, key),
49+
);
50+
});
51+
}
52+
}
53+
54+
return target;
55+
}
56+
57+
var reducer = (object, keys) => (accumulator, objectKey) => {
58+
if (!keys.includes(objectKey)) {
59+
return _objectSpread2(
60+
_objectSpread2({}, accumulator),
61+
{},
62+
{
63+
[objectKey]: object[objectKey],
64+
},
65+
);
66+
}
67+
68+
return accumulator;
69+
}; // Exclude key from object
70+
// e.g. excludeKey({foo: 'bar'}, 'foo')
71+
// => {}
72+
73+
var excludeKeys = function excludeKeys(object) {
74+
if (typeof object !== "object") {
75+
throw new Error("Invalid object ".concat(object));
76+
}
77+
78+
for (
79+
var _len = arguments.length,
80+
keys = new Array(_len > 1 ? _len - 1 : 0),
81+
_key = 1;
82+
_key < _len;
83+
_key++
84+
) {
85+
keys[_key - 1] = arguments[_key];
86+
}
87+
88+
if ([undefined, null].includes(keys)) {
89+
return object;
90+
}
91+
92+
if (keys.filter((key) => typeof key !== "string").length > 0) {
93+
throw new Error("Invalid key type ".concat(typeof key));
94+
}
95+
96+
return Object.getOwnPropertyNames(object).reduce(reducer(object, keys), {});
97+
};
98+
99+
module.exports = excludeKeys;

lib/prod.js

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
"use strict";
2+
3+
function _defineProperty(obj, key, value) {
4+
if (key in obj) {
5+
Object.defineProperty(obj, key, {
6+
value: value,
7+
enumerable: true,
8+
configurable: true,
9+
writable: true,
10+
});
11+
} else {
12+
obj[key] = value;
13+
}
14+
15+
return obj;
16+
}
17+
18+
function ownKeys(object, enumerableOnly) {
19+
var keys = Object.keys(object);
20+
21+
if (Object.getOwnPropertySymbols) {
22+
var symbols = Object.getOwnPropertySymbols(object);
23+
if (enumerableOnly)
24+
symbols = symbols.filter(function (sym) {
25+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
26+
});
27+
keys.push.apply(keys, symbols);
28+
}
29+
30+
return keys;
31+
}
32+
33+
function _objectSpread2(target) {
34+
for (var i = 1; i < arguments.length; i++) {
35+
var source = arguments[i] != null ? arguments[i] : {};
36+
37+
if (i % 2) {
38+
ownKeys(Object(source), true).forEach(function (key) {
39+
_defineProperty(target, key, source[key]);
40+
});
41+
} else if (Object.getOwnPropertyDescriptors) {
42+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
43+
} else {
44+
ownKeys(Object(source)).forEach(function (key) {
45+
Object.defineProperty(
46+
target,
47+
key,
48+
Object.getOwnPropertyDescriptor(source, key),
49+
);
50+
});
51+
}
52+
}
53+
54+
return target;
55+
}
56+
57+
var reducer = (object, keys) => (accumulator, objectKey) => {
58+
if (!keys.includes(objectKey)) {
59+
return _objectSpread2(
60+
_objectSpread2({}, accumulator),
61+
{},
62+
{
63+
[objectKey]: object[objectKey],
64+
},
65+
);
66+
}
67+
68+
return accumulator;
69+
}; // Exclude key from object
70+
// e.g. excludeKey({foo: 'bar'}, 'foo')
71+
// => {}
72+
73+
var excludeKeys = function excludeKeys(object) {
74+
if (typeof object !== "object") {
75+
throw new Error("Invalid object ".concat(object));
76+
}
77+
78+
for (
79+
var _len = arguments.length,
80+
keys = new Array(_len > 1 ? _len - 1 : 0),
81+
_key = 1;
82+
_key < _len;
83+
_key++
84+
) {
85+
keys[_key - 1] = arguments[_key];
86+
}
87+
88+
if ([undefined, null].includes(keys)) {
89+
return object;
90+
}
91+
92+
if (keys.filter((key) => typeof key !== "string").length > 0) {
93+
throw new Error("Invalid key type ".concat(typeof key));
94+
}
95+
96+
return Object.getOwnPropertyNames(object).reduce(reducer(object, keys), {});
97+
};
98+
99+
module.exports = excludeKeys;

0 commit comments

Comments
 (0)