Skip to content

Commit 7001f22

Browse files
committed
feat: porting the library over from @readme/oas-to-har
0 parents  commit 7001f22

File tree

14 files changed

+14252
-0
lines changed

14 files changed

+14252
-0
lines changed

.eslintignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@types/
2+
coverage/
3+
dist/

.eslintrc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"extends": [
3+
"@readme/eslint-config",
4+
"@readme/eslint-config/typescript"
5+
],
6+
"root": true,
7+
"rules": {
8+
"@typescript-eslint/no-explicit-any": "off"
9+
}
10+
}

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@types/
2+
coverage/
3+
dist/
4+
node_modules/

.husky/commit-msg

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/sh
2+
. "$(dirname "$0")/_/husky.sh"
3+
4+
npx commitlint --edit $1

.npmignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
__tests__/
2+
.github/
3+
.husky/
4+
coverage/
5+
.eslint*
6+
.prettier*
7+
jest.*.js

.prettierignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@types/
2+
coverage/
3+
dist/

__tests__/.eslintrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "@readme/eslint-config/testing"
3+
}

__tests__/index.test.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import removeUndefinedObjects from '../src';
2+
3+
test('should leave primitives alone', () => {
4+
expect(removeUndefinedObjects(1234)).toBe(1234);
5+
expect(removeUndefinedObjects('1234')).toBe('1234');
6+
expect(removeUndefinedObjects(null)).toBeNull();
7+
expect(removeUndefinedObjects()).toBeUndefined();
8+
expect(removeUndefinedObjects(undefined)).toBeUndefined();
9+
});
10+
11+
test('should remove empty objects with only empty properties', () => {
12+
const obj = {
13+
a: {
14+
b: {},
15+
c: {
16+
d: {},
17+
},
18+
},
19+
};
20+
21+
expect(removeUndefinedObjects(obj)).toBeUndefined();
22+
});
23+
24+
test('should remove empty objects with only undefined properties', () => {
25+
const obj = {
26+
a: {
27+
b: undefined,
28+
c: {
29+
d: undefined,
30+
},
31+
},
32+
};
33+
34+
expect(removeUndefinedObjects(obj)).toBeUndefined();
35+
});
36+
37+
test('should remove empty arrays from within object', () => {
38+
const obj = {
39+
a: {
40+
b: undefined,
41+
c: {
42+
d: undefined,
43+
},
44+
},
45+
d: [1234, undefined],
46+
e: [],
47+
};
48+
49+
expect(removeUndefinedObjects(obj)).toStrictEqual({
50+
d: [1234],
51+
});
52+
});
53+
54+
test('should remove undefined and null values from arrays', () => {
55+
expect(removeUndefinedObjects([undefined, undefined])).toBeUndefined();
56+
expect(removeUndefinedObjects([null])).toBeUndefined();
57+
expect(removeUndefinedObjects(['1234', null, undefined, { a: null, b: undefined }, ' ', ''])).toStrictEqual([
58+
'1234',
59+
{
60+
a: null,
61+
},
62+
' ',
63+
'',
64+
]);
65+
});

__tests__/tsconfig.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"extends": "../tsconfig.json",
3+
"compilerOptions": {
4+
"module": "es6",
5+
"moduleResolution": "node",
6+
"noImplicitAny": false
7+
},
8+
"include": ["../src/**/*", "*.ts"]
9+
}

jest.config.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module.exports = {
2+
coveragePathIgnorePatterns: ['/dist', '/node_modules'],
3+
globals: {
4+
'ts-jest': {
5+
tsconfig: '__tests__/tsconfig.json',
6+
},
7+
},
8+
modulePaths: ['<rootDir>'],
9+
preset: 'ts-jest/presets/js-with-ts',
10+
roots: ['<rootDir>'],
11+
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(js?|ts?)$',
12+
transform: {},
13+
};

0 commit comments

Comments
 (0)