Skip to content

Commit bde41b2

Browse files
committed
fix: Refactor unsafe replace function.
1 parent 28260d1 commit bde41b2

File tree

12 files changed

+36
-18
lines changed

12 files changed

+36
-18
lines changed

packages/vega-cli/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vega-cli",
3-
"version": "5.17.2",
3+
"version": "5.17.3",
44
"description": "Command line utilities for server-side Vega.",
55
"keywords": [
66
"vega",
@@ -21,7 +21,7 @@
2121
},
2222
"dependencies": {
2323
"canvas": "^2.6.1",
24-
"vega": "5.17.2",
24+
"vega": "5.17.3",
2525
"yargs": "16"
2626
}
2727
}

packages/vega-expression/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vega-expression",
3-
"version": "4.0.0",
3+
"version": "4.0.1",
44
"description": "Vega expression parser and code generator.",
55
"keywords": [
66
"vega",

packages/vega-expression/src/functions.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ export default function(codegen) {
8484
lower: fn('toLowerCase', STRING, 0),
8585
substring: fn('substring', STRING),
8686
split: fn('split', STRING),
87-
replace: fn('replace', STRING),
8887
trim: fn('trim', STRING, 0),
8988

9089
// REGEXP functions

packages/vega-expression/test/codegen-test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ tape('Evaluate expressions with white list', t => {
212212
t.equal(evaluate('trim(" 123 ")'), ' 123 '.trim());
213213
t.equal(evaluate('parseFloat("3.14")'), parseFloat('3.14'));
214214
t.equal(evaluate('parseInt("42")'),parseInt('42'));
215-
t.equal(evaluate('replace("hello world", /hello/, "goodbye")'), 'goodbye world');
216215

217216
// should eval regular expression functions
218217
t.equal(evaluate('test(/ain/, "spain")'), /ain/.test('spain'));

packages/vega-functions/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export {
5858
indexof,
5959
join,
6060
lastindexof,
61+
replace,
6162
reverse,
6263
slice
6364
} from './src/functions/sequence';

packages/vega-functions/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vega-functions",
3-
"version": "5.9.0",
3+
"version": "5.10.0",
44
"description": "Custom functions for the Vega expression language.",
55
"keywords": [
66
"vega",
@@ -25,7 +25,7 @@
2525
"d3-color": "^2.0.0",
2626
"d3-geo": "^2.0.1",
2727
"vega-dataflow": "^5.7.3",
28-
"vega-expression": "^4.0.0",
28+
"vega-expression": "^4.0.1",
2929
"vega-scale": "^7.1.1",
3030
"vega-scenegraph": "^4.9.2",
3131
"vega-selections": "^5.1.5",

packages/vega-functions/src/codegen.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ import {
142142
indexof,
143143
join,
144144
lastindexof,
145+
replace,
145146
reverse,
146147
slice
147148
} from './functions/sequence';
@@ -220,6 +221,7 @@ export const functionContext = {
220221
indexof,
221222
join,
222223
lastindexof,
224+
replace,
223225
reverse,
224226
slice,
225227
flush,

packages/vega-functions/src/functions/sequence.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {isArray, isString} from 'vega-util';
1+
import {error, isArray, isFunction, isString} from 'vega-util';
22

33
function array(seq) {
44
return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;
@@ -24,6 +24,10 @@ export function slice(seq, ...args) {
2424
return sequence(seq).slice(...args);
2525
}
2626

27+
export function replace(str, pattern, repl) {
28+
if (isFunction(repl)) error('Function argument passed to replace.');
29+
return String(str).replace(pattern, repl);
30+
}
2731
export function reverse(seq) {
2832
return array(seq).slice().reverse();
2933
}

packages/vega-functions/test/sequence-test.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
var tape = require('tape'),
2-
{indexof, join, lastindexof, reverse, slice} = require('../');
2+
{
3+
indexof,
4+
join,
5+
lastindexof,
6+
replace,
7+
reverse,
8+
slice
9+
} = require('../');
310

411
tape('indexof finds first index', t => {
512
t.deepEqual(indexof([1, 2, 2, 3], 2), [1, 2, 2, 3].indexOf(2));
@@ -15,6 +22,12 @@ tape('lastindexof finds last index', t => {
1522
t.end();
1623
});
1724

25+
tape('replace replaces substrings', t => {
26+
t.equal(replace('hello world', /hello/, 'goodbye'), 'goodbye world');
27+
t.throws(() => replace('evil', /.*/, d => d));
28+
t.end();
29+
});
30+
1831
tape('reverse reverses an array', t => {
1932
t.deepEqual(reverse([1, 2, 3]), [1, 2, 3].reverse());
2033
t.throws(() => reverse({reverse: v => v + 1}));

packages/vega-parser/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vega-parser",
3-
"version": "6.1.1",
3+
"version": "6.1.2",
44
"description": "Parse Vega specifications to runtime dataflows.",
55
"keywords": [
66
"vega",
@@ -24,7 +24,7 @@
2424
"dependencies": {
2525
"vega-dataflow": "^5.7.3",
2626
"vega-event-selector": "^2.0.6",
27-
"vega-functions": "^5.9.0",
27+
"vega-functions": "^5.10.0",
2828
"vega-scale": "^7.1.1",
2929
"vega-util": "^1.15.2"
3030
}

0 commit comments

Comments
 (0)