re2 1.19.1 → 1.20.0

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.
Files changed (153) hide show
  1. package/.github/actions/linux-alpine-node-16/Dockerfile +1 -1
  2. package/.github/actions/linux-alpine-node-18/Dockerfile +1 -1
  3. package/.github/actions/linux-alpine-node-20/Dockerfile +1 -1
  4. package/.gitmodules +5 -2
  5. package/README.md +6 -4
  6. package/binding.gyp +82 -25
  7. package/lib/replace.cc +4 -4
  8. package/package.json +3 -3
  9. package/re2.js +1 -0
  10. package/tests/test_matchAll.js +14 -0
  11. package/tsconfig.json +2 -1
  12. package/vendor/re2/.bazelrc +16 -0
  13. package/vendor/re2/.github/bazel.sh +24 -0
  14. package/vendor/re2/.github/cmake.sh +12 -0
  15. package/vendor/re2/.github/workflows/ci-bazel.yml +17 -0
  16. package/vendor/re2/.github/workflows/ci-cmake.yml +108 -0
  17. package/vendor/re2/.github/workflows/ci.yml +89 -0
  18. package/vendor/re2/.github/workflows/pr.yml +26 -0
  19. package/vendor/re2/.github/workflows/python.yml +185 -0
  20. package/vendor/re2/AUTHORS +13 -0
  21. package/vendor/re2/BUILD.bazel +280 -0
  22. package/vendor/re2/CMakeLists.txt +268 -0
  23. package/vendor/re2/CONTRIBUTING.md +2 -0
  24. package/vendor/re2/CONTRIBUTORS +41 -0
  25. package/vendor/re2/Makefile +400 -0
  26. package/vendor/{README → re2/README} +5 -0
  27. package/vendor/re2/SECURITY.md +4 -0
  28. package/vendor/re2/WORKSPACE.bazel +62 -0
  29. package/vendor/re2/app/BUILD.bazel +19 -0
  30. package/vendor/re2/app/_re2.cc +94 -0
  31. package/vendor/re2/app/_re2.d.ts +23 -0
  32. package/vendor/re2/app/app.ts +111 -0
  33. package/vendor/re2/app/build.sh +50 -0
  34. package/vendor/re2/app/index.html +5 -0
  35. package/vendor/re2/app/package.json +14 -0
  36. package/vendor/re2/app/rollup.config.js +28 -0
  37. package/vendor/re2/app/tsconfig.json +17 -0
  38. package/vendor/re2/benchlog/benchplot.py +98 -0
  39. package/vendor/re2/benchlog/mktable +155 -0
  40. package/vendor/re2/doc/mksyntaxgo +42 -0
  41. package/vendor/re2/doc/mksyntaxhtml +42 -0
  42. package/vendor/re2/doc/mksyntaxwiki +36 -0
  43. package/vendor/re2/doc/syntax.html +477 -0
  44. package/vendor/re2/doc/syntax.txt +463 -0
  45. package/vendor/re2/lib/git/commit-msg.hook +104 -0
  46. package/vendor/re2/libre2.symbols +19 -0
  47. package/vendor/re2/libre2.symbols.darwin +15 -0
  48. package/vendor/re2/python/BUILD.bazel +36 -0
  49. package/vendor/re2/python/README +1 -0
  50. package/vendor/re2/python/_re2.cc +338 -0
  51. package/vendor/re2/python/re2.py +582 -0
  52. package/vendor/re2/python/re2_test.py +482 -0
  53. package/vendor/re2/python/setup.py +105 -0
  54. package/vendor/re2/{bitmap256.cc → re2/bitmap256.cc} +4 -4
  55. package/vendor/re2/{bitstate.cc → re2/bitstate.cc} +21 -25
  56. package/vendor/re2/{compile.cc → re2/compile.cc} +5 -4
  57. package/vendor/re2/{dfa.cc → re2/dfa.cc} +120 -101
  58. package/vendor/re2/{filtered_re2.cc → re2/filtered_re2.cc} +8 -11
  59. package/vendor/re2/{filtered_re2.h → re2/filtered_re2.h} +5 -4
  60. package/vendor/re2/{fuzzing → re2/fuzzing}/re2_fuzzer.cc +4 -6
  61. package/vendor/re2/{mimics_pcre.cc → re2/mimics_pcre.cc} +0 -1
  62. package/vendor/re2/{nfa.cc → re2/nfa.cc} +34 -37
  63. package/vendor/re2/{onepass.cc → re2/onepass.cc} +25 -27
  64. package/vendor/re2/{parse.cc → re2/parse.cc} +118 -121
  65. package/vendor/re2/{prefilter.cc → re2/prefilter.cc} +2 -3
  66. package/vendor/re2/{prefilter.h → re2/prefilter.h} +0 -1
  67. package/vendor/re2/{prefilter_tree.cc → re2/prefilter_tree.cc} +4 -5
  68. package/vendor/re2/{prefilter_tree.h → re2/prefilter_tree.h} +1 -2
  69. package/vendor/re2/{prog.cc → re2/prog.cc} +20 -21
  70. package/vendor/re2/{prog.h → re2/prog.h} +21 -22
  71. package/vendor/re2/{re2.cc → re2/re2.cc} +51 -62
  72. package/vendor/re2/{re2.h → re2/re2.h} +78 -40
  73. package/vendor/re2/{regexp.cc → re2/regexp.cc} +11 -12
  74. package/vendor/re2/{regexp.h → re2/regexp.h} +9 -10
  75. package/vendor/re2/{set.cc → re2/set.cc} +3 -5
  76. package/vendor/re2/{set.h → re2/set.h} +4 -3
  77. package/vendor/re2/{simplify.cc → re2/simplify.cc} +1 -2
  78. package/vendor/re2/re2/stringpiece.h +24 -0
  79. package/vendor/re2/{testing → re2/testing}/backtrack.cc +22 -25
  80. package/vendor/re2/{testing → re2/testing}/charclass_test.cc +23 -21
  81. package/vendor/re2/{testing → re2/testing}/compile_test.cc +5 -4
  82. package/vendor/re2/{testing → re2/testing}/dfa_test.cc +36 -30
  83. package/vendor/re2/{testing → re2/testing}/dump.cc +8 -8
  84. package/vendor/re2/{testing → re2/testing}/exhaustive1_test.cc +1 -1
  85. package/vendor/re2/{testing → re2/testing}/exhaustive2_test.cc +1 -1
  86. package/vendor/re2/{testing → re2/testing}/exhaustive3_test.cc +1 -1
  87. package/vendor/re2/{testing → re2/testing}/exhaustive_test.cc +1 -1
  88. package/vendor/re2/{testing → re2/testing}/exhaustive_tester.cc +36 -32
  89. package/vendor/re2/{testing → re2/testing}/exhaustive_tester.h +0 -1
  90. package/vendor/re2/{testing → re2/testing}/filtered_re2_test.cc +9 -8
  91. package/vendor/re2/{testing → re2/testing}/mimics_pcre_test.cc +3 -2
  92. package/vendor/re2/{testing → re2/testing}/null_walker.cc +1 -1
  93. package/vendor/re2/{testing → re2/testing}/parse_test.cc +13 -12
  94. package/vendor/re2/{testing → re2/testing}/possible_match_test.cc +15 -14
  95. package/vendor/re2/{testing → re2/testing}/random_test.cc +13 -12
  96. package/vendor/re2/{testing → re2/testing}/re2_arg_test.cc +25 -2
  97. package/vendor/re2/{testing → re2/testing}/re2_test.cc +49 -47
  98. package/vendor/re2/{testing → re2/testing}/regexp_benchmark.cc +144 -145
  99. package/vendor/re2/{testing → re2/testing}/regexp_generator.cc +18 -14
  100. package/vendor/re2/{testing → re2/testing}/regexp_generator.h +3 -4
  101. package/vendor/re2/{testing → re2/testing}/regexp_test.cc +1 -1
  102. package/vendor/re2/{testing → re2/testing}/required_prefix_test.cc +5 -4
  103. package/vendor/re2/{testing → re2/testing}/search_test.cc +3 -2
  104. package/vendor/re2/{testing → re2/testing}/set_test.cc +1 -1
  105. package/vendor/re2/{testing → re2/testing}/simplify_test.cc +3 -2
  106. package/vendor/re2/{testing → re2/testing}/string_generator.cc +3 -3
  107. package/vendor/re2/{testing → re2/testing}/string_generator.h +5 -6
  108. package/vendor/re2/{testing → re2/testing}/string_generator_test.cc +2 -2
  109. package/vendor/re2/{testing → re2/testing}/tester.cc +77 -78
  110. package/vendor/re2/{testing → re2/testing}/tester.h +13 -15
  111. package/vendor/re2/{tostring.cc → re2/tostring.cc} +7 -8
  112. package/vendor/re2/{unicode_casefold.h → re2/unicode_casefold.h} +0 -1
  113. package/vendor/re2/{unicode_groups.h → re2/unicode_groups.h} +0 -1
  114. package/vendor/re2/{walker-inl.h → re2/walker-inl.h} +2 -1
  115. package/vendor/re2/re2.pc.in +9 -0
  116. package/vendor/re2/re2Config.cmake.in +28 -0
  117. package/vendor/re2/runtests +33 -0
  118. package/vendor/re2/testinstall.cc +27 -0
  119. package/vendor/re2/ucs2.diff +567 -0
  120. package/vendor/{util → re2/util}/logging.h +2 -2
  121. package/vendor/{util → re2/util}/pcre.cc +47 -116
  122. package/vendor/{util → re2/util}/pcre.h +53 -63
  123. package/vendor/re2/util/strutil.cc +26 -0
  124. package/vendor/{util → re2/util}/strutil.h +0 -5
  125. package/vendor/re2/stringpiece.cc +0 -65
  126. package/vendor/re2/stringpiece.h +0 -213
  127. package/vendor/util/benchmark.cc +0 -131
  128. package/vendor/util/benchmark.h +0 -156
  129. package/vendor/util/flags.h +0 -26
  130. package/vendor/util/mix.h +0 -41
  131. package/vendor/util/mutex.h +0 -164
  132. package/vendor/util/strutil.cc +0 -149
  133. package/vendor/util/test.cc +0 -34
  134. package/vendor/util/test.h +0 -50
  135. package/vendor/util/util.h +0 -42
  136. /package/vendor/{LICENSE → re2/LICENSE} +0 -0
  137. /package/vendor/re2/{bitmap256.h → re2/bitmap256.h} +0 -0
  138. /package/vendor/re2/{fuzzing → re2/fuzzing}/compiler-rt/LICENSE +0 -0
  139. /package/vendor/re2/{fuzzing → re2/fuzzing}/compiler-rt/include/fuzzer/FuzzedDataProvider.h +0 -0
  140. /package/vendor/re2/{make_perl_groups.pl → re2/make_perl_groups.pl} +0 -0
  141. /package/vendor/re2/{make_unicode_casefold.py → re2/make_unicode_casefold.py} +0 -0
  142. /package/vendor/re2/{make_unicode_groups.py → re2/make_unicode_groups.py} +0 -0
  143. /package/vendor/re2/{perl_groups.cc → re2/perl_groups.cc} +0 -0
  144. /package/vendor/re2/{pod_array.h → re2/pod_array.h} +0 -0
  145. /package/vendor/re2/{sparse_array.h → re2/sparse_array.h} +0 -0
  146. /package/vendor/re2/{sparse_set.h → re2/sparse_set.h} +0 -0
  147. /package/vendor/re2/{unicode.py → re2/unicode.py} +0 -0
  148. /package/vendor/re2/{unicode_casefold.cc → re2/unicode_casefold.cc} +0 -0
  149. /package/vendor/re2/{unicode_groups.cc → re2/unicode_groups.cc} +0 -0
  150. /package/vendor/{util → re2/util}/fuzz.cc +0 -0
  151. /package/vendor/{util → re2/util}/malloc_counter.h +0 -0
  152. /package/vendor/{util → re2/util}/rune.cc +0 -0
  153. /package/vendor/{util → re2/util}/utf.h +0 -0
@@ -1,6 +1,6 @@
1
1
  FROM node:16-alpine
2
2
 
3
- RUN apk add --no-cache python3 make gcc g++
3
+ RUN apk add --no-cache python3 make gcc g++ linux-headers
4
4
 
5
5
  COPY entrypoint.sh /entrypoint.sh
6
6
  ENTRYPOINT ["/entrypoint.sh"]
@@ -1,6 +1,6 @@
1
1
  FROM node:18-alpine
2
2
 
3
- RUN apk add --no-cache python3 make gcc g++
3
+ RUN apk add --no-cache python3 make gcc g++ linux-headers
4
4
 
5
5
  COPY entrypoint.sh /entrypoint.sh
6
6
  ENTRYPOINT ["/entrypoint.sh"]
@@ -1,6 +1,6 @@
1
1
  FROM node:20-alpine
2
2
 
3
- RUN apk add --no-cache python3 make gcc g++
3
+ RUN apk add --no-cache python3 make gcc g++ linux-headers
4
4
 
5
5
  COPY entrypoint.sh /entrypoint.sh
6
6
  ENTRYPOINT ["/entrypoint.sh"]
package/.gitmodules CHANGED
@@ -1,3 +1,6 @@
1
- [submodule "vendor"]
2
- path = vendor
1
+ [submodule "vendor/re2"]
2
+ path = vendor/re2
3
3
  url = https://github.com/google/re2
4
+ [submodule "vendor/abseil-cpp"]
5
+ path = vendor/abseil-cpp
6
+ url = https://github.com/abseil/abseil-cpp
package/README.md CHANGED
@@ -54,11 +54,11 @@ Supported properties:
54
54
  * [`re2.global`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/global)
55
55
  * [`re2.ignoreCase`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase)
56
56
  * [`re2.multiline`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multiline)
57
- * *Since 1.17.6*: [`re2.dotAll`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/dotAll)
57
+ * [`re2.dotAll`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/dotAll) — *since 1.17.6.*
58
58
  * [`re2.unicode`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode)
59
59
  * `RE2` engine always works in the Unicode mode. See details below.
60
- * [`re2.sticky`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky)
61
- * *Since 1.19.0*: [`re2.hasIndices`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/hasIndices)
60
+ * [`re2.sticky`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) — *since 1.7.0.*
61
+ * [`re2.hasIndices`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/hasIndices) — *since 1.19.0.*
62
62
  * [`re2.source`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/source)
63
63
  * [`re2.flags`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/flags)
64
64
 
@@ -71,7 +71,7 @@ Supported methods:
71
71
  Starting with 1.6.0 following well-known symbol-based methods are supported (see [Symbols](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)):
72
72
 
73
73
  * [`re2[Symbol.match](str)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/match)
74
- * *Since 1.17.5*: [`re2[Symbol.matchAll](str)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/matchAll)
74
+ * [`re2[Symbol.matchAll](str)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/matchAll) — *since 1.17.5.*
75
75
  * [`re2[Symbol.search](str)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/search)
76
76
  * [`re2[Symbol.replace](str, newSubStr|function)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace)
77
77
  * [`re2[Symbol.split](str[, limit])`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/split)
@@ -353,6 +353,8 @@ console.log('re2_res : ' + re2_res); // prints: re2_res : abc,a,b,c
353
353
 
354
354
  ## Release history
355
355
 
356
+ - 1.20.0 *Updated RE2. New version uses `abseil-cpp` and required the adaptation work. Thx, [Stefano Rivera](https://github.com/stefanor).*
357
+ - 1.19.2 *Bugfix: infinite loop in matchAll() with empty matches. Thx, [ziyunfei](https://github.com/ziyunfei).*
356
358
  - 1.19.1 *Bugfix: indices for the `d` flag when `lastIndex` is non zero. Bugfix: the match result. Thx, [teebu](https://github.com/teebu).*
357
359
  - 1.19.0 *Added `hasIndices` AKA the `d` flag. Thx, [teebu](https://github.com/teebu).*
358
360
  - 1.18.3 *Fixed bug with non-matched groups. Thx, [Dan Setterquist](https://github.com/dset).*
package/binding.gyp CHANGED
@@ -14,30 +14,86 @@
14
14
  "lib/to_string.cc",
15
15
  "lib/accessors.cc",
16
16
  "lib/util.cc",
17
- "vendor/re2/bitmap256.cc",
18
- "vendor/re2/bitstate.cc",
19
- "vendor/re2/compile.cc",
20
- "vendor/re2/dfa.cc",
21
- "vendor/re2/filtered_re2.cc",
22
- "vendor/re2/mimics_pcre.cc",
23
- "vendor/re2/nfa.cc",
24
- "vendor/re2/onepass.cc",
25
- "vendor/re2/parse.cc",
26
- "vendor/re2/perl_groups.cc",
27
- "vendor/re2/prefilter.cc",
28
- "vendor/re2/prefilter_tree.cc",
29
- "vendor/re2/prog.cc",
30
- "vendor/re2/re2.cc",
31
- "vendor/re2/regexp.cc",
32
- "vendor/re2/set.cc",
33
- "vendor/re2/simplify.cc",
34
- "vendor/re2/stringpiece.cc",
35
- "vendor/re2/tostring.cc",
36
- "vendor/re2/unicode_casefold.cc",
37
- "vendor/re2/unicode_groups.cc",
38
- "vendor/util/pcre.cc",
39
- "vendor/util/rune.cc",
40
- "vendor/util/strutil.cc"
17
+ "vendor/re2/re2/bitmap256.cc",
18
+ "vendor/re2/re2/bitstate.cc",
19
+ "vendor/re2/re2/compile.cc",
20
+ "vendor/re2/re2/dfa.cc",
21
+ "vendor/re2/re2/filtered_re2.cc",
22
+ "vendor/re2/re2/mimics_pcre.cc",
23
+ "vendor/re2/re2/nfa.cc",
24
+ "vendor/re2/re2/onepass.cc",
25
+ "vendor/re2/re2/parse.cc",
26
+ "vendor/re2/re2/perl_groups.cc",
27
+ "vendor/re2/re2/prefilter.cc",
28
+ "vendor/re2/re2/prefilter_tree.cc",
29
+ "vendor/re2/re2/prog.cc",
30
+ "vendor/re2/re2/re2.cc",
31
+ "vendor/re2/re2/regexp.cc",
32
+ "vendor/re2/re2/set.cc",
33
+ "vendor/re2/re2/simplify.cc",
34
+ "vendor/re2/re2/tostring.cc",
35
+ "vendor/re2/re2/unicode_casefold.cc",
36
+ "vendor/re2/re2/unicode_groups.cc",
37
+ "vendor/re2/util/pcre.cc",
38
+ "vendor/re2/util/rune.cc",
39
+ "vendor/re2/util/strutil.cc",
40
+ "vendor/abseil-cpp/absl/base/internal/cycleclock.cc",
41
+ "vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc",
42
+ "vendor/abseil-cpp/absl/base/internal/raw_logging.cc",
43
+ "vendor/abseil-cpp/absl/base/internal/spinlock.cc",
44
+ "vendor/abseil-cpp/absl/base/internal/spinlock_wait.cc",
45
+ "vendor/abseil-cpp/absl/base/internal/sysinfo.cc",
46
+ "vendor/abseil-cpp/absl/base/internal/thread_identity.cc",
47
+ "vendor/abseil-cpp/absl/base/internal/throw_delegate.cc",
48
+ "vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc",
49
+ "vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc",
50
+ "vendor/abseil-cpp/absl/debugging/stacktrace.cc",
51
+ "vendor/abseil-cpp/absl/debugging/symbolize.cc",
52
+ "vendor/abseil-cpp/absl/flags/commandlineflag.cc",
53
+ "vendor/abseil-cpp/absl/flags/flag.cc",
54
+ "vendor/abseil-cpp/absl/flags/internal/commandlineflag.cc",
55
+ "vendor/abseil-cpp/absl/flags/internal/flag.cc",
56
+ "vendor/abseil-cpp/absl/flags/internal/private_handle_accessor.cc",
57
+ "vendor/abseil-cpp/absl/flags/internal/program_name.cc",
58
+ "vendor/abseil-cpp/absl/flags/marshalling.cc",
59
+ "vendor/abseil-cpp/absl/flags/reflection.cc",
60
+ "vendor/abseil-cpp/absl/flags/usage_config.cc",
61
+ "vendor/abseil-cpp/absl/hash/internal/city.cc",
62
+ "vendor/abseil-cpp/absl/hash/internal/hash.cc",
63
+ "vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc",
64
+ "vendor/abseil-cpp/absl/numeric/int128.cc",
65
+ "vendor/abseil-cpp/absl/strings/ascii.cc",
66
+ "vendor/abseil-cpp/absl/strings/charconv.cc",
67
+ "vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc",
68
+ "vendor/abseil-cpp/absl/strings/internal/charconv_parse.cc",
69
+ "vendor/abseil-cpp/absl/strings/internal/memutil.cc",
70
+ "vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc",
71
+ "vendor/abseil-cpp/absl/strings/internal/str_format/bind.cc",
72
+ "vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc",
73
+ "vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc",
74
+ "vendor/abseil-cpp/absl/strings/internal/str_format/output.cc",
75
+ "vendor/abseil-cpp/absl/strings/internal/str_format/parser.cc",
76
+ "vendor/abseil-cpp/absl/strings/match.cc",
77
+ "vendor/abseil-cpp/absl/strings/numbers.cc",
78
+ "vendor/abseil-cpp/absl/strings/str_cat.cc",
79
+ "vendor/abseil-cpp/absl/strings/str_split.cc",
80
+ "vendor/abseil-cpp/absl/strings/string_view.cc",
81
+ "vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc",
82
+ "vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc",
83
+ "vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc",
84
+ "vendor/abseil-cpp/absl/synchronization/internal/waiter.cc",
85
+ "vendor/abseil-cpp/absl/synchronization/mutex.cc",
86
+ "vendor/abseil-cpp/absl/time/clock.cc",
87
+ "vendor/abseil-cpp/absl/time/duration.cc",
88
+ "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc",
89
+ "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc",
90
+ "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc",
91
+ "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc",
92
+ "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc",
93
+ "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc",
94
+ "vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc",
95
+ "vendor/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc",
96
+ "vendor/abseil-cpp/absl/time/time.cc",
41
97
  ],
42
98
  "cflags": [
43
99
  "-std=c++2a",
@@ -56,7 +112,8 @@
56
112
  ],
57
113
  "include_dirs": [
58
114
  "<!(node -e \"require('nan')\")",
59
- "vendor"
115
+ "vendor/re2",
116
+ "vendor/abseil-cpp",
60
117
  ],
61
118
  "xcode_settings": {
62
119
  "MACOSX_DEPLOYMENT_TARGET": "10.7",
package/lib/replace.cc CHANGED
@@ -107,7 +107,7 @@ inline std::string replace(const char *data, size_t size, const std::vector<re2:
107
107
  i += 2;
108
108
  continue;
109
109
  case '&':
110
- result += groups[0].as_string();
110
+ result += (std::string)groups[0];
111
111
  i += 2;
112
112
  continue;
113
113
  case '`':
@@ -139,7 +139,7 @@ inline std::string replace(const char *data, size_t size, const std::vector<re2:
139
139
  index2 = index * 10 + (ch - '0');
140
140
  if (index2 && index2 < groups.size())
141
141
  {
142
- result += groups[index2].as_string();
142
+ result += (std::string)groups[index2];
143
143
  continue;
144
144
  }
145
145
  result += '$';
@@ -152,7 +152,7 @@ inline std::string replace(const char *data, size_t size, const std::vector<re2:
152
152
  i += 2;
153
153
  if (index && index < groups.size())
154
154
  {
155
- result += groups[index].as_string();
155
+ result += (std::string)groups[index];
156
156
  continue;
157
157
  }
158
158
  result += '$';
@@ -170,7 +170,7 @@ inline std::string replace(const char *data, size_t size, const std::vector<re2:
170
170
  if (group != namedGroups.end())
171
171
  {
172
172
  index = group->second;
173
- result += groups[index].as_string();
173
+ result += (std::string)groups[index];
174
174
  }
175
175
  i = nameEnd + 1 - data;
176
176
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "re2",
3
- "version": "1.19.1",
3
+ "version": "1.20.0",
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",
@@ -16,9 +16,9 @@
16
16
  "node-gyp": "^9.4.0"
17
17
  },
18
18
  "devDependencies": {
19
- "@types/node": "^20.3.1",
19
+ "@types/node": "^20.4.5",
20
20
  "heya-unit": "^0.3.0",
21
- "typescript": "^5.1.3"
21
+ "typescript": "^5.1.6"
22
22
  },
23
23
  "scripts": {
24
24
  "test": "node tests/tests.js",
package/re2.js CHANGED
@@ -29,6 +29,7 @@ if (typeof Symbol != 'undefined') {
29
29
  for (;;) {
30
30
  const result = re.exec(str);
31
31
  if (!result) break;
32
+ if (result[0] === '') ++re.lastIndex;
32
33
  yield result;
33
34
  }
34
35
  });
@@ -77,5 +77,19 @@ unit.add(module, [
77
77
  eval(t.TEST('match[0] === expected[i]'));
78
78
  ++i;
79
79
  }
80
+ },
81
+
82
+ function test_matchAll_empty_match(t) {
83
+ 'use strict';
84
+
85
+ const str = 'foo';
86
+ // Matches empty strings, but should not cause an infinite loop
87
+ const re = new RE2('(?:)', 'g');
88
+ const result = Array.from(str.matchAll(re));
89
+
90
+ eval(t.TEST('result.length === str.length + 1'));
91
+ for (let i = 0; i < result.length; ++i) {
92
+ eval(t.TEST('result[i][0] === ""'));
93
+ }
80
94
  }
81
95
  ]);
package/tsconfig.json CHANGED
@@ -16,5 +16,6 @@
16
16
  "noUnusedParameters": true,
17
17
 
18
18
  },
19
- "include": ["**/*.ts"]
19
+ "include": ["**/*.ts"],
20
+ "exclude": ["vendor/re2/app/**"]
20
21
  }
@@ -0,0 +1,16 @@
1
+ # Copyright 2022 The RE2 Authors. All Rights Reserved.
2
+ # Use of this source code is governed by a BSD-style
3
+ # license that can be found in the LICENSE file.
4
+
5
+ # Abseil requires C++14 at minimum.
6
+ # Previously, the flag was set via `BAZEL_CXXOPTS`. On macOS, we also had to set
7
+ # `BAZEL_USE_CPP_ONLY_TOOLCHAIN` since Bazel wouldn't respect the former without
8
+ # the latter. However, the latter stopped Bazel from using Xcode and `-framework
9
+ # Foundation`, which CCTZ (vendored into Abseil) requires.
10
+ build --enable_platform_specific_config
11
+ build:linux --cxxopt=-std=c++14
12
+ build:macos --cxxopt=-std=c++14
13
+ build:windows --cxxopt=/std:c++14
14
+
15
+ # Print test logs for failed tests.
16
+ test --test_output=errors
@@ -0,0 +1,24 @@
1
+ #!/bin/bash
2
+ set -eux
3
+
4
+ bazel clean
5
+ bazel build --compilation_mode=dbg -- //:all
6
+ bazel test --compilation_mode=dbg -- //:all \
7
+ -//:dfa_test \
8
+ -//:exhaustive1_test \
9
+ -//:exhaustive2_test \
10
+ -//:exhaustive3_test \
11
+ -//:exhaustive_test \
12
+ -//:random_test
13
+
14
+ bazel clean
15
+ bazel build --compilation_mode=opt -- //:all
16
+ bazel test --compilation_mode=opt -- //:all \
17
+ -//:dfa_test \
18
+ -//:exhaustive1_test \
19
+ -//:exhaustive2_test \
20
+ -//:exhaustive3_test \
21
+ -//:exhaustive_test \
22
+ -//:random_test
23
+
24
+ exit 0
@@ -0,0 +1,12 @@
1
+ #!/bin/bash
2
+ set -eux
3
+
4
+ cmake . -D CMAKE_BUILD_TYPE=Debug -D RE2_BUILD_TESTING=ON "$@"
5
+ cmake --build . --config Debug --clean-first
6
+ ctest -C Debug --output-on-failure -E 'dfa|exhaustive|random'
7
+
8
+ cmake . -D CMAKE_BUILD_TYPE=Release -D RE2_BUILD_TESTING=ON "$@"
9
+ cmake --build . --config Release --clean-first
10
+ ctest -C Release --output-on-failure -E 'dfa|exhaustive|random'
11
+
12
+ exit 0
@@ -0,0 +1,17 @@
1
+ name: CI (Bazel)
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ jobs:
6
+ build:
7
+ runs-on: ${{ matrix.os }}
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ os: [macos-latest, ubuntu-latest, windows-latest]
12
+ env:
13
+ BAZELISK_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
14
+ steps:
15
+ - uses: actions/checkout@v3
16
+ - run: .github/bazel.sh
17
+ shell: bash
@@ -0,0 +1,108 @@
1
+ name: CI (CMake)
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ jobs:
6
+ # GitHub Actions doesn't provide GCC 13, so we use a Docker container instead.
7
+ # (Also, the Benchmark package on Ubuntu 22.04 LTS is problematic whereas this
8
+ # Docker container is based on Debian bookworm and so it has a newer version.)
9
+ build-linux:
10
+ runs-on: ubuntu-latest
11
+ container: gcc:13
12
+ strategy:
13
+ fail-fast: false
14
+ steps:
15
+ - uses: actions/checkout@v3
16
+ - name: Install CMake
17
+ run: |
18
+ apt update -y
19
+ apt install -y cmake
20
+ shell: bash
21
+ - name: Install Abseil, GoogleTest and Benchmark
22
+ run: |
23
+ apt update -y
24
+ apt install -y libabsl-dev libgtest-dev libbenchmark-dev
25
+ shell: bash
26
+ - run: .github/cmake.sh
27
+ shell: bash
28
+ build-linux-shared:
29
+ runs-on: ubuntu-latest
30
+ container: gcc:13
31
+ strategy:
32
+ fail-fast: false
33
+ steps:
34
+ - uses: actions/checkout@v3
35
+ - name: Install CMake
36
+ run: |
37
+ apt update -y
38
+ apt install -y cmake
39
+ shell: bash
40
+ - name: Install Abseil, GoogleTest and Benchmark
41
+ run: |
42
+ apt update -y
43
+ apt install -y libabsl-dev libgtest-dev libbenchmark-dev
44
+ shell: bash
45
+ - run: .github/cmake.sh -D BUILD_SHARED_LIBS=ON
46
+ shell: bash
47
+ build-macos:
48
+ runs-on: macos-latest
49
+ strategy:
50
+ fail-fast: false
51
+ steps:
52
+ - uses: actions/checkout@v3
53
+ - name: Install Abseil, GoogleTest and Benchmark
54
+ run: |
55
+ brew update
56
+ brew install abseil googletest google-benchmark
57
+ shell: bash
58
+ - run: .github/cmake.sh
59
+ shell: bash
60
+ build-macos-shared:
61
+ runs-on: macos-latest
62
+ strategy:
63
+ fail-fast: false
64
+ steps:
65
+ - uses: actions/checkout@v3
66
+ - name: Install Abseil, GoogleTest and Benchmark
67
+ run: |
68
+ brew update
69
+ brew install abseil googletest google-benchmark
70
+ shell: bash
71
+ - run: .github/cmake.sh -D BUILD_SHARED_LIBS=ON
72
+ shell: bash
73
+ build-windows:
74
+ runs-on: windows-latest
75
+ strategy:
76
+ fail-fast: false
77
+ steps:
78
+ - uses: actions/checkout@v3
79
+ - name: Install Abseil, GoogleTest and Benchmark
80
+ run: |
81
+ # TODO: Remove this in September 2023, which is when the default triplet for
82
+ # vcpkg libraries will change from x86-windows to the detected host triplet.
83
+ export VCPKG_DEFAULT_TRIPLET=x64-windows
84
+ vcpkg update
85
+ vcpkg install abseil gtest benchmark
86
+ shell: bash
87
+ - run: |
88
+ .github/cmake.sh \
89
+ -D CMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake
90
+ shell: bash
91
+ build-windows-shared:
92
+ runs-on: windows-latest
93
+ strategy:
94
+ fail-fast: false
95
+ steps:
96
+ - uses: actions/checkout@v3
97
+ - name: Install Abseil, GoogleTest and Benchmark
98
+ run: |
99
+ # TODO: Remove this in September 2023, which is when the default triplet for
100
+ # vcpkg libraries will change from x86-windows to the detected host triplet.
101
+ export VCPKG_DEFAULT_TRIPLET=x64-windows
102
+ vcpkg update
103
+ vcpkg install abseil gtest benchmark
104
+ shell: bash
105
+ - run: |
106
+ .github/cmake.sh -D BUILD_SHARED_LIBS=ON \
107
+ -D CMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake
108
+ shell: bash
@@ -0,0 +1,89 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ jobs:
6
+ build-appleclang:
7
+ runs-on: macos-latest
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ver: [17, 20]
12
+ env:
13
+ CC: clang
14
+ CXX: clang++
15
+ # Unlike GCC and upstream Clang, AppleClang still defaults to `-std=c++98`
16
+ # for some reason. Also, the macOS image on GitHub Actions provides wildly
17
+ # numbered Xcode versions. Thus, rather than varying the compiler version,
18
+ # we set the `-std` flag explicitly in order to vary the language version.
19
+ # (The other two flags are the default provided for CXXFLAGS in Makefile.)
20
+ CXXFLAGS: -O3 -g -std=c++${{ matrix.ver }}
21
+ steps:
22
+ - uses: actions/checkout@v3
23
+ - name: Install Abseil, GoogleTest and Benchmark
24
+ run: |
25
+ brew update
26
+ brew install abseil googletest google-benchmark
27
+ shell: bash
28
+ - run: make && make test
29
+ shell: bash
30
+ build-clang:
31
+ runs-on: ubuntu-latest
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ ver: [14, 15, 16]
36
+ env:
37
+ CC: clang-${{ matrix.ver }}
38
+ CXX: clang++-${{ matrix.ver }}
39
+ steps:
40
+ - uses: actions/checkout@v3
41
+ - name: Install Clang ${{ matrix.ver }}
42
+ run: |
43
+ wget https://apt.llvm.org/llvm.sh
44
+ chmod +x ./llvm.sh
45
+ sudo ./llvm.sh ${{ matrix.ver }}
46
+ shell: bash
47
+ - name: Install Abseil, GoogleTest and Benchmark
48
+ run: |
49
+ sudo apt update -y
50
+ sudo apt install -y libabsl-dev libgtest-dev libbenchmark-dev
51
+ shell: bash
52
+ - run: make && make test
53
+ shell: bash
54
+ build-gcc:
55
+ runs-on: ubuntu-latest
56
+ strategy:
57
+ fail-fast: false
58
+ matrix:
59
+ ver: [11, 12]
60
+ env:
61
+ CC: gcc-${{ matrix.ver }}
62
+ CXX: g++-${{ matrix.ver }}
63
+ steps:
64
+ - uses: actions/checkout@v3
65
+ - name: Install Abseil, GoogleTest and Benchmark
66
+ run: |
67
+ sudo apt update -y
68
+ sudo apt install -y libabsl-dev libgtest-dev libbenchmark-dev
69
+ shell: bash
70
+ - run: make && make test
71
+ shell: bash
72
+ # GitHub Actions doesn't provide GCC 13, so we use a Docker container instead.
73
+ build-gcc-13:
74
+ runs-on: ubuntu-latest
75
+ container: gcc:13
76
+ strategy:
77
+ fail-fast: false
78
+ env:
79
+ CC: gcc
80
+ CXX: g++
81
+ steps:
82
+ - uses: actions/checkout@v3
83
+ - name: Install Abseil, GoogleTest and Benchmark
84
+ run: |
85
+ apt update -y
86
+ apt install -y libabsl-dev libgtest-dev libbenchmark-dev
87
+ shell: bash
88
+ - run: make && make test
89
+ shell: bash
@@ -0,0 +1,26 @@
1
+ name: PR
2
+ on:
3
+ pull_request_target:
4
+ branches: [main]
5
+ types: [opened]
6
+ jobs:
7
+ close:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v3
11
+ - uses: actions/github-script@v6
12
+ with:
13
+ script: |
14
+ const fs = require('fs');
15
+ console.log(await github.rest.issues.createComment({
16
+ owner: context.repo.owner,
17
+ repo: context.repo.repo,
18
+ issue_number: context.issue.number,
19
+ body: fs.readFileSync('CONTRIBUTING.md', { encoding: 'utf8', }),
20
+ }));
21
+ console.log(await github.rest.pulls.update({
22
+ owner: context.repo.owner,
23
+ repo: context.repo.repo,
24
+ pull_number: context.issue.number,
25
+ state: 'closed',
26
+ }));