(defaults: BumpyConfig, user: Partial<BumpyConfig>)
| 103 | if (name === pattern) return true; |
| 104 | // Convert glob to regex |
| 105 | const regexStr = pattern |
| 106 | .replace(/[.+^${}()|[\]\\]/g, '\\$&') // escape regex special chars |
| 107 | .replace(/\*\*/g, '{{DOUBLE}}') // placeholder for ** |
| 108 | .replace(/\*/g, '[^/]*') // * matches anything except / |
| 109 | .replace(/{{DOUBLE}}/g, '.*'); // ** matches anything |
| 110 | const regex = new RegExp(`^${regexStr}$`); |
| 111 | return regex.test(name); |
| 112 | } |
| 113 | |
| 114 | function mergeConfig(defaults: BumpyConfig, user: Partial<BumpyConfig>): BumpyConfig { |
| 115 | return { |
| 116 | ...defaults, |
| 117 | ...user, |
| 118 | dependencyBumpRules: { |
| 119 | ...defaults.dependencyBumpRules, |
| 120 | ...user.dependencyBumpRules, |
| 121 | }, |
| 122 | privatePackages: { |
| 123 | ...defaults.privatePackages, |
| 124 | ...user.privatePackages, |
| 125 | }, |
| 126 | publish: { |
| 127 | ...defaults.publish, |
| 128 | ...user.publish, |
| 129 | }, |
| 130 | packages: { |
| 131 | ...defaults.packages, |
| 132 | ...user.packages, |
| 133 | }, |
| 134 | channels: { |
| 135 | ...defaults.channels, |
| 136 | ...user.channels, |
| 137 | }, |
no outgoing calls
no test coverage detected
searching dependent graphs…