re2 1.20.3 → 1.20.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -353,6 +353,7 @@ console.log('re2_res : ' + re2_res); // prints: re2_res : abc,a,b,c
353
353
 
354
354
  ## Release history
355
355
 
356
+ - 1.20.4 *Updated deps. Fix: the 2nd argument of the constructor overrides flags. Thx, [gost-serb](https://github.com/gost-serb).*
356
357
  - 1.20.3 *Fix: subsequent numbers are incorporated into group if they would form a legal group reference. Thx, [Oleksii Vasyliev](https://github.com/le0pard).*
357
358
  - 1.20.2 *Fix: added a missing C++ file, which caused a bug on Alpine Linux. Thx, [rbitanga-manticore](https://github.com/rbitanga-manticore).*
358
359
  - 1.20.1 *Fix: files included in the npm package to build the C++ code.*
package/lib/new.cc CHANGED
@@ -235,6 +235,7 @@ NAN_METHOD(WrappedRE2::New)
235
235
  bool hasIndices = false;
236
236
 
237
237
  auto context = Nan::GetCurrentContext();
238
+ bool needFlags = true;
238
239
 
239
240
  if (info.Length() > 1)
240
241
  {
@@ -279,6 +280,7 @@ NAN_METHOD(WrappedRE2::New)
279
280
  }
280
281
  }
281
282
  size = 0;
283
+ needFlags = false;
282
284
  }
283
285
 
284
286
  bool needConversion = true;
@@ -303,14 +305,18 @@ NAN_METHOD(WrappedRE2::New)
303
305
 
304
306
  source = escapeRegExp(data, size);
305
307
 
306
- v8::RegExp::Flags flags = re->GetFlags();
307
- global = bool(flags & v8::RegExp::kGlobal);
308
- ignoreCase = bool(flags & v8::RegExp::kIgnoreCase);
309
- multiline = bool(flags & v8::RegExp::kMultiline);
310
- dotAll = bool(flags & v8::RegExp::kDotAll);
311
- unicode = bool(flags & v8::RegExp::kUnicode);
312
- sticky = bool(flags & v8::RegExp::kSticky);
313
- hasIndices = bool(flags & v8::RegExp::kHasIndices);
308
+ if (needFlags)
309
+ {
310
+ v8::RegExp::Flags flags = re->GetFlags();
311
+ global = bool(flags & v8::RegExp::kGlobal);
312
+ ignoreCase = bool(flags & v8::RegExp::kIgnoreCase);
313
+ multiline = bool(flags & v8::RegExp::kMultiline);
314
+ dotAll = bool(flags & v8::RegExp::kDotAll);
315
+ unicode = bool(flags & v8::RegExp::kUnicode);
316
+ sticky = bool(flags & v8::RegExp::kSticky);
317
+ hasIndices = bool(flags & v8::RegExp::kHasIndices);
318
+ needFlags = false;
319
+ }
314
320
  }
315
321
  else if (info[0]->IsObject() && !info[0]->IsString())
316
322
  {
@@ -331,13 +337,17 @@ NAN_METHOD(WrappedRE2::New)
331
337
 
332
338
  source = re2->source;
333
339
 
334
- global = re2->global;
335
- ignoreCase = re2->ignoreCase;
336
- multiline = re2->multiline;
337
- dotAll = re2->dotAll;
338
- unicode = true;
339
- sticky = re2->sticky;
340
- hasIndices = re2->hasIndices;
340
+ if (needFlags)
341
+ {
342
+ global = re2->global;
343
+ ignoreCase = re2->ignoreCase;
344
+ multiline = re2->multiline;
345
+ dotAll = re2->dotAll;
346
+ unicode = true;
347
+ sticky = re2->sticky;
348
+ hasIndices = re2->hasIndices;
349
+ needFlags = false;
350
+ }
341
351
  }
342
352
  }
343
353
  else if (info[0]->IsString())
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "re2",
3
- "version": "1.20.3",
3
+ "version": "1.20.4",
4
4
  "description": "Bindings for RE2: fast, safe alternative to backtracking regular expression engines.",
5
5
  "homepage": "https://github.com/uhop/node-re2",
6
6
  "bugs": "https://github.com/uhop/node-re2/issues",
@@ -12,13 +12,13 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "install-artifact-from-github": "^1.3.3",
15
- "nan": "^2.17.0",
15
+ "nan": "^2.18.0",
16
16
  "node-gyp": "^9.4.0"
17
17
  },
18
18
  "devDependencies": {
19
- "@types/node": "^20.5.3",
19
+ "@types/node": "^20.8.7",
20
20
  "heya-unit": "^0.3.0",
21
- "typescript": "^5.1.6"
21
+ "typescript": "^5.2.2"
22
22
  },
23
23
  "scripts": {
24
24
  "test": "node tests/tests.js",
@@ -278,6 +278,45 @@ unit.add(module, [
278
278
 
279
279
  re = new RE2("a", "smigyu");
280
280
  eval(t.TEST("re.flags === 'gimsuy'"));
281
+ },
282
+ function test_flags_2nd(t) {
283
+ "use strict";
284
+
285
+ var re = new RE2(/a/, "u");
286
+ eval(t.TEST("re.flags === 'u'"));
287
+
288
+ re = new RE2(/a/gm, "iu");
289
+ eval(t.TEST("re.flags === 'iu'"));
290
+
291
+ re = new RE2(/a/ig, "mu");
292
+ eval(t.TEST("re.flags === 'mu'"));
293
+
294
+ re = new RE2(/a/g, "gu");
295
+ eval(t.TEST("re.flags === 'gu'"));
296
+
297
+ re = new RE2(/a/m, "yu");
298
+ eval(t.TEST("re.flags === 'uy'"));
299
+
300
+ re = new RE2(/a/, "yiu");
301
+ eval(t.TEST("re.flags === 'iuy'"));
302
+
303
+ re = new RE2(/a/gim, "yigu");
304
+ eval(t.TEST("re.flags === 'giuy'"));
305
+
306
+ re = new RE2(/a/gm, "miu");
307
+ eval(t.TEST("re.flags === 'imu'"));
308
+
309
+ re = new RE2(/a/i, "ygu");
310
+ eval(t.TEST("re.flags === 'guy'"));
311
+
312
+ re = new RE2(/a/g, "myu");
313
+ eval(t.TEST("re.flags === 'muy'"));
314
+
315
+ re = new RE2(/a/, "migyu");
316
+ eval(t.TEST("re.flags === 'gimuy'"));
317
+
318
+ re = new RE2(/a/s, "smigyu");
319
+ eval(t.TEST("re.flags === 'gimsuy'"));
281
320
  }
282
321
  ]);
283
322