Skip to content

Commit cf15cf9

Browse files
committedOct 15, 2023
fix!: Update development dependencies
1 parent d84bebf commit cf15cf9

File tree

5 files changed

+115
-97
lines changed

5 files changed

+115
-97
lines changed
 

‎.github/workflows/release-please.yml

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
on:
2+
push:
3+
branches:
4+
- master
5+
6+
permissions:
7+
contents: write
8+
pull-requests: write
9+
10+
name: release-please
11+
12+
jobs:
13+
release-please:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: google-github-actions/release-please-action@v3
17+
with:
18+
release-type: node

‎.github/workflows/test.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ jobs:
88
test:
99
runs-on: ubuntu-latest
1010
steps:
11-
- uses: actions/checkout@v2
11+
- uses: actions/checkout@v4
1212
- name: Setup Node.js
13-
uses: actions/setup-node@v1
13+
uses: actions/setup-node@v3
1414
with:
15-
node-version: 16
15+
node-version: 18
1616
- run: npm install
1717
- name: Lint
1818
run: npm run -s pretest

‎csv-parse.js

+39-39
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
11
export default (string, maxRows = Infinity) => {
2-
let inQuote = false;
3-
let field = '';
4-
let row = [];
5-
const result = [];
6-
const charArray = [
7-
// Chomp final line terminator
8-
...string.replace(/(?:\r\n|\n|\r)$/u, '')
9-
];
2+
let inQuote = false;
3+
let field = '';
4+
let row = [];
5+
const result = [];
6+
const charArray = [
7+
// Chomp final line terminator
8+
...string.replace(/(?:\r\n|\n|\r)$/u, '')
9+
];
1010

11-
for (let index = 0; index < charArray.length; index++) {
12-
const current = charArray[index];
13-
const next = charArray[index + 1];
14-
if (!inQuote && ',\r\n'.includes(current)) {
15-
row.push(field);
16-
field = '';
11+
for (let index = 0; index < charArray.length; index++) {
12+
const current = charArray[index];
13+
const next = charArray[index + 1];
14+
if (!inQuote && ',\r\n'.includes(current)) {
15+
row.push(field);
16+
field = '';
1717

18-
if (current !== ',') {
19-
if (current + next === '\r\n') {
20-
index++;
21-
}
18+
if (current !== ',') {
19+
if (current + next === '\r\n') {
20+
index++;
21+
}
2222

23-
result.push(row);
24-
if (result.length >= maxRows) {
25-
return result;
26-
}
23+
result.push(row);
24+
if (result.length >= maxRows) {
25+
return result;
26+
}
2727

28-
row = [];
29-
}
30-
} else if (current !== '"') {
31-
field += current;
32-
} else if (!inQuote) {
33-
inQuote = true;
34-
} else if (next === '"') {
35-
field += '"';
36-
index++;
37-
} else {
38-
inQuote = false;
39-
}
40-
}
28+
row = [];
29+
}
30+
} else if (current !== '"') {
31+
field += current;
32+
} else if (!inQuote) {
33+
inQuote = true;
34+
} else if (next === '"') {
35+
field += '"';
36+
index++;
37+
} else {
38+
inQuote = false;
39+
}
40+
}
4141

42-
// Add the last field
43-
row.push(field);
44-
result.push(row);
42+
// Add the last field
43+
row.push(field);
44+
result.push(row);
4545

46-
return result;
46+
return result;
4747
};

‎package.json

+33-33
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
{
2-
"name": "@cfware/csv-parse",
3-
"version": "0.1.1",
4-
"description": "Tiny CSV string parser",
5-
"type": "module",
6-
"main": "csv-parse.js",
7-
"exports": "./csv-parse.js",
8-
"scripts": {
9-
"pretest": "cfware-lint .",
10-
"tests-only": "nyc -s node --experimental-loader=@istanbuljs/esm-loader-hook test.js",
11-
"test": "npm run -s tests-only",
12-
"posttest": "nyc report --check-coverage"
13-
},
14-
"engines": {
15-
"node": ">=16.12.0"
16-
},
17-
"author": "Corey Farrell",
18-
"license": "MIT",
19-
"repository": {
20-
"type": "git",
21-
"url": "git+https://github.com/cfware/csv-parse.git"
22-
},
23-
"bugs": {
24-
"url": "https://github.com/cfware/csv-parse/issues"
25-
},
26-
"homepage": "https://github.com/cfware/csv-parse#readme",
27-
"dependencies": {},
28-
"devDependencies": {
29-
"@cfware/lint": "^3.0.4",
30-
"@cfware/nyc": "^0.7.1",
31-
"@istanbuljs/esm-loader-hook": "^0.2.0",
32-
"libtap": "^1.4.0",
33-
"nyc": "^15.1.0"
34-
}
2+
"name": "@cfware/csv-parse",
3+
"version": "0.1.1",
4+
"description": "Tiny CSV string parser",
5+
"type": "module",
6+
"main": "csv-parse.js",
7+
"exports": "./csv-parse.js",
8+
"scripts": {
9+
"pretest": "cfware-lint .",
10+
"tests-only": "nyc -s node --experimental-loader=@istanbuljs/esm-loader-hook test.js",
11+
"test": "npm run -s tests-only",
12+
"posttest": "nyc report --check-coverage"
13+
},
14+
"engines": {
15+
"node": ">=18"
16+
},
17+
"author": "Corey Farrell",
18+
"license": "MIT",
19+
"repository": {
20+
"type": "git",
21+
"url": "git+https://github.com/cfware/csv-parse.git"
22+
},
23+
"bugs": {
24+
"url": "https://github.com/cfware/csv-parse/issues"
25+
},
26+
"homepage": "https://github.com/cfware/csv-parse#readme",
27+
"dependencies": {},
28+
"devDependencies": {
29+
"@cfware/lint": "^4",
30+
"@cfware/nyc": "^1",
31+
"@istanbuljs/esm-loader-hook": "^0.2",
32+
"libtap": "^1",
33+
"nyc": "^15"
34+
}
3535
}

‎test.js

+22-22
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,35 @@ import t from 'libtap';
22
import parse from './csv-parse.js';
33

44
const expected = [
5-
['Jones,\r\n \n \rJay', '10'],
6-
['Xyz "ABC" O\'Brien', '11:35'],
7-
['Other, AN', '12:35']
5+
['Jones,\r\n \n \rJay', '10'],
6+
['Xyz "ABC" O\'Brien', '11:35'],
7+
['Other, AN', '12:35']
88
];
99

1010
t.same(
11-
parse(
12-
'"Jones,\r\n \n \rJay",10\r\n' +
13-
'"Xyz ""ABC"" O\'Brien",11:35\n' +
14-
'"Other, AN",12:35\r'
15-
),
16-
expected
11+
parse(
12+
'"Jones,\r\n \n \rJay",10\r\n' +
13+
'"Xyz ""ABC"" O\'Brien",11:35\n' +
14+
'"Other, AN",12:35\r'
15+
),
16+
expected
1717
);
1818

1919
t.same(
20-
parse(
21-
'"Jones,\r\n \n \rJay",10\n' +
22-
'"Xyz ""ABC"" O\'Brien",11:35\n' +
23-
'"Other, AN",12:35'
24-
),
25-
expected
20+
parse(
21+
'"Jones,\r\n \n \rJay",10\n' +
22+
'"Xyz ""ABC"" O\'Brien",11:35\n' +
23+
'"Other, AN",12:35'
24+
),
25+
expected
2626
);
2727

2828
t.same(
29-
parse(
30-
'"Jones,\r\n \n \rJay",10\n' +
31-
'"Xyz ""ABC"" O\'Brien",11:35\n' +
32-
'"Other, AN",12:35',
33-
2
34-
),
35-
expected.slice(0, 2)
29+
parse(
30+
'"Jones,\r\n \n \rJay",10\n' +
31+
'"Xyz ""ABC"" O\'Brien",11:35\n' +
32+
'"Other, AN",12:35',
33+
2
34+
),
35+
expected.slice(0, 2)
3636
);

0 commit comments

Comments
 (0)