From 5059aee6e861fa34491c45ac4c23f32d49834d8d Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 29 Oct 2025 12:37:46 +0000 Subject: [PATCH 1/2] fix(replace): update delimiters to respect valid js identifier chars --- packages/replace/README.md | 10 ++++---- packages/replace/src/index.js | 6 ++++- .../form/dollar-sign-boundary/_config.js | 9 +++++++ .../form/dollar-sign-boundary/input.js | 20 +++++++++++++++ packages/replace/test/snapshots/form.js.md | 24 ++++++++++++++++++ packages/replace/test/snapshots/form.js.snap | Bin 816 -> 979 bytes 6 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 packages/replace/test/fixtures/form/dollar-sign-boundary/_config.js create mode 100644 packages/replace/test/fixtures/form/dollar-sign-boundary/input.js diff --git a/packages/replace/README.md b/packages/replace/README.md index 412db4d5d..d787d73e8 100644 --- a/packages/replace/README.md +++ b/packages/replace/README.md @@ -61,14 +61,14 @@ In addition to the properties and values specified for replacement, users may al ### `delimiters` Type: `Array[String, String]`
-Default: `['\\b', '\\b(?!\\.)']` +Default: `['(?␊ \`);` +## dollar-sign-boundary: should not replace when followed by valid identifier characters + +> Snapshot 1 + + `// Should NOT be replaced - window$1 is a different identifier␊ + if (typeof window$1 === 'undefined') {␊ + console.log('no window$1');␊ + }␊ + ␊ + // Should be replaced - standalone "undefined"␊ + if ("undefined" === 'undefined') {␊ + console.log('no window');␊ + }␊ + ␊ + // Should NOT be replaced - window_ is a different identifier ␊ + if (typeof window_ !== 'undefined') {␊ + console.log('has window_');␊ + }␊ + ␊ + // Should be replaced - "undefined" followed by dot␊ + if (typeof window.document !== 'undefined') {␊ + console.log('has document');␊ + }` + ## match-variables: matches most specific variables > Snapshot 1 diff --git a/packages/replace/test/snapshots/form.js.snap b/packages/replace/test/snapshots/form.js.snap index 310c56eb38c632cf1ac77b555dd5599f00682428..9f9e1760d85f66081dc00418b91cb7ab9fd72947 100644 GIT binary patch literal 979 zcmV;^11$VORzV#3)z>+PAh>C%vV!~gt?UVDQV zbHS`vc8%62pa|KHJvhvbkO*cYOo5;+v?|S3?c^j*dzP#SsnCqg+{NnN5=`!lF@CDpawK(|O^OO1LwIg9>`q86i% zz+PA-3|WLx^T<&dwln`fAqN4k%KPQjX#)%se+jqV3y}$~)$hr>n_Ty>75QQ4sUlef zJKPYVmX{2T_twJ8EZzvG#nK=rP%a?Dn%D#9D0QkOG=iZo<~?7GdU2QN1#Ci3l7-Xh zd^#Vu-T!rEyEr$+O52!nugUW64(N6NP5_l)h_LM;=xeOm8ax7EDxAc%$eZz_a;&X1 zg~A8`FX~b5aD&!AXfC0ykCW=ciDicJO#(j)s|+$!%Mi{DR)uhi!%bH4gs1FD=I>rI z7iH7a@-<37diSK^_HAhPf*YDi*vK8JLWYu6R%sXZ^+Gi+SroMv|S}NetAS; zWthUImqOMHBRJNf2Vph?WTUN*mFCb}vC$Tzu6TdHU-{nwGJB`(iaW^F$`JY29`bpY z;;S!jMq3xZ?TdSzlaABEmeox_1ZQ)%4Zu^l3Ix=mA>c_5@Ke0V$$3ziio$ppX`2^* z`kF^g@L6eIVdD19kN_8X_#Z>HdEIN{`H#Jj--KK}giCn=r&m^_R}!+=R%1~Ebzi+z zE!rj6YMhUBvefMZ{8T?&MI`XNar?kehvri^nm*4Z~tZ-Vb z*XgVJD}}W}sB}>4_OSonV}CNc^G+?{&MZo`V-Mc~qa>>!0iS87&UytdHFqn?-JPN( z{w^4ZrPH~O6-pxW zQP0EIN3XuTg&2H?05f+bU=SZQNAqNmSx5uPBeSOPDuGm^RWd3Z(OUL+JMbNlEPj zAt~>zKuL{WU7Y)75?Dwr%pw$qXSrwB{?)69jZ)LAF*FNc?@ zfKQoaeD$88EY1H%P#i*a*iQMTk@9(7s{^AEV%WRZk%lEkW93F%0@Yu9g%?!_7Sc^` zg*R#7eY;`myXCrLQ=-VpEfc!hAL}Ty}Q1SD*5IhgLIt5ttM$bH>*Cs{BTf z6bOY5O5GLg-y7_o`aA!52|Il+k(M01077oGfC$`FS}|-GywvO#lHHY}B7T_<5OFJ0 u7YO8vS-k1{R;i&-x4}mZ@Ij%2Rd0MeJU)tw8Eas!{r?9!_sxEL2LJ%RnuzuQ From 4b69e438fe96e7ba079740763603fc67092a0c65 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 29 Oct 2025 13:10:23 +0000 Subject: [PATCH 2/2] test: update snapshots --- packages/replace/test/snapshots/form.js.md | 3 ++- packages/replace/test/snapshots/form.js.snap | Bin 979 -> 989 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/replace/test/snapshots/form.js.md b/packages/replace/test/snapshots/form.js.md index 895062192..28d0fe39c 100644 --- a/packages/replace/test/snapshots/form.js.md +++ b/packages/replace/test/snapshots/form.js.md @@ -24,7 +24,8 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 - `// Should NOT be replaced - window$1 is a different identifier␊ + `/* eslint-disable no-undef */␊ + // Should NOT be replaced - window$1 is a different identifier␊ if (typeof window$1 === 'undefined') {␊ console.log('no window$1');␊ }␊ diff --git a/packages/replace/test/snapshots/form.js.snap b/packages/replace/test/snapshots/form.js.snap index 9f9e1760d85f66081dc00418b91cb7ab9fd72947..727ba7b9fd47d860e4cf347462b788bb0911d173 100644 GIT binary patch literal 989 zcmV<310wuERzV!5n)r{pjeEBmcYg@zJNZ zJ}<1{NR*)7BtJa*{`pU^fU!ezGli3j==HRPcrJ`m%*H;kcxg&4nBAp7xha(ZZMrgS zbJUO-rOXxuEO)SBN(zv|mm`yCf#=LJeh~fTaT2m0-#(t50+N#2#X=HWDg_sHN9EBLGDKHziGI87ur4VhIZmN3Ts5keaUL8bPI=i zB-{-;JNpzva@Ytb#iR=WH~c&i@X%WGUeX~t9U^!=mN&ilKb1oA|fXJ(C6XHTY~ z%kMk1n%P}!3bf1_8}wE44MS2O)H-N%2iSk_u|FN&)~B;5la?HO3xwQg0V%j#T5;Yh zaHY9dOYZFz9r1VGK*X&qTr7|)X7Rf3uTBlMdI)~e1E1GA*!RYhhmRknwa0pxZT#3)z>+PAh>C%vV!~gt?UVDQV zbHS`vc8%62pa|KHJvhvbkO*cYOo5;+v?|S3?c^j*dzP#SsnCqg+{NnN5=`!lF@CDpawK(|O^OO1LwIg9>`q86i% zz+PA-3|WLx^T<&dwln`fAqN4k%KPQjX#)%se+jqV3y}$~)$hr>n_Ty>75QQ4sUlef zJKPYVmX{2T_twJ8EZzvG#nK=rP%a?Dn%D#9D0QkOG=iZo<~?7GdU2QN1#Ci3l7-Xh zd^#Vu-T!rEyEr$+O52!nugUW64(N6NP5_l)h_LM;=xeOm8ax7EDxAc%$eZz_a;&X1 zg~A8`FX~b5aD&!AXfC0ykCW=ciDicJO#(j)s|+$!%Mi{DR)uhi!%bH4gs1FD=I>rI z7iH7a@-<37diSK^_HAhPf*YDi*vK8JLWYu6R%sXZ^+Gi+SroMv|S}NetAS; zWthUImqOMHBRJNf2Vph?WTUN*mFCb}vC$Tzu6TdHU-{nwGJB`(iaW^F$`JY29`bpY z;;S!jMq3xZ?TdSzlaABEmeox_1ZQ)%4Zu^l3Ix=mA>c_5@Ke0V$$3ziio$ppX`2^* z`kF^g@L6eIVdD19kN_8X_#Z>HdEIN{`H#Jj--KK}giCn=r&m^_R}!+=R%1~Ebzi+z zE!rj6YMhUBvefMZ{8T?&MI`XNar?kehvri^nm*4Z~tZ-Vb z*XgVJD}}W}sB}>4_OSonV}CNc^G+?{&MZo`V-Mc~qa>>!0iS87&UytdHFqn?-JPN( z{w^4ZrPH~O6-px