node-datachannel 0.4.2 → 0.5.0-dev

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 (409) hide show
  1. package/.github/workflows/build-linux.yml +29 -29
  2. package/.github/workflows/build-mac-m1.yml +5 -5
  3. package/.github/workflows/build-mac-x64.yml +5 -5
  4. package/.github/workflows/build-win.yml +11 -8
  5. package/.github/workflows/lint.yml +1 -1
  6. package/.github/workflows/npm-publish-manual.yml +1 -1
  7. package/{.prettierrc.js → .prettierrc.cjs} +1 -0
  8. package/BULDING.md +7 -3
  9. package/CMakeLists.txt +12 -22
  10. package/README.md +38 -33
  11. package/cmake/toolchain/arm64.cmake +1 -1
  12. package/examples/build/Dockerfile +30 -0
  13. package/examples/build/README.md +24 -0
  14. package/examples/client-server/README.md +22 -0
  15. package/examples/client-server/client-benchmark.js +11 -6
  16. package/examples/client-server/client-periodic.js +5 -6
  17. package/examples/client-server/client.js +4 -5
  18. package/examples/client-server/package-lock.json +311 -260
  19. package/examples/client-server/package.json +15 -14
  20. package/examples/client-server/signaling-server.js +1 -2
  21. package/examples/electron-demo/README.md +58 -0
  22. package/examples/electron-demo/forge.config.js +49 -0
  23. package/examples/electron-demo/package-lock.json +16287 -0
  24. package/examples/electron-demo/package.json +43 -0
  25. package/examples/electron-demo/src/index.css +7 -0
  26. package/examples/electron-demo/src/index.html +29 -0
  27. package/examples/electron-demo/src/main.js +53 -0
  28. package/examples/electron-demo/src/node-datachannel.js +123 -0
  29. package/examples/electron-demo/src/preload.js +28 -0
  30. package/examples/electron-demo/src/renderer.js +58 -0
  31. package/examples/electron-demo/webpack.main.config.js +11 -0
  32. package/examples/electron-demo/webpack.renderer.config.js +13 -0
  33. package/examples/electron-demo/webpack.rules.js +35 -0
  34. package/examples/media/README.md +3 -3
  35. package/examples/media/media.js +3 -4
  36. package/examples/simple-peer-usage/main.js +28 -0
  37. package/examples/simple-peer-usage/package-lock.json +317 -0
  38. package/examples/simple-peer-usage/package.json +16 -0
  39. package/lib/datachannel-stream.js +3 -4
  40. package/lib/index.d.ts +8 -4
  41. package/lib/index.js +6 -3
  42. package/node_modules/base64-js/package.json +19 -50
  43. package/node_modules/buffer/package.json +20 -54
  44. package/node_modules/chownr/package.json +16 -53
  45. package/node_modules/decompress-response/package.json +54 -89
  46. package/node_modules/deep-extend/package.json +32 -65
  47. package/node_modules/detect-libc/README.md +4 -1
  48. package/node_modules/detect-libc/index.d.ts +3 -0
  49. package/node_modules/detect-libc/lib/detect-libc.js +105 -4
  50. package/node_modules/detect-libc/lib/filesystem.js +41 -0
  51. package/node_modules/detect-libc/lib/process.js +3 -0
  52. package/node_modules/detect-libc/package.json +25 -60
  53. package/node_modules/end-of-stream/package.json +17 -49
  54. package/node_modules/expand-template/package.json +17 -51
  55. package/node_modules/fs-constants/package.json +11 -42
  56. package/node_modules/github-from-package/package.json +28 -60
  57. package/node_modules/ieee754/package.json +19 -54
  58. package/node_modules/inherits/package.json +12 -61
  59. package/node_modules/ini/package.json +19 -55
  60. package/node_modules/mimic-response/package.json +40 -75
  61. package/node_modules/minimist/.eslintrc +29 -0
  62. package/node_modules/minimist/.github/FUNDING.yml +12 -0
  63. package/node_modules/minimist/.nycrc +14 -0
  64. package/node_modules/minimist/CHANGELOG.md +298 -0
  65. package/node_modules/minimist/{readme.markdown → README.md} +34 -11
  66. package/node_modules/minimist/example/parse.js +2 -0
  67. package/node_modules/minimist/index.js +256 -242
  68. package/node_modules/minimist/package.json +73 -77
  69. package/node_modules/minimist/test/all_bool.js +26 -24
  70. package/node_modules/minimist/test/bool.js +146 -147
  71. package/node_modules/minimist/test/dash.js +33 -21
  72. package/node_modules/minimist/test/default_bool.js +26 -24
  73. package/node_modules/minimist/test/dotted.js +13 -11
  74. package/node_modules/minimist/test/kv_short.js +26 -10
  75. package/node_modules/minimist/test/long.js +28 -26
  76. package/node_modules/minimist/test/num.js +30 -28
  77. package/node_modules/minimist/test/parse.js +169 -157
  78. package/node_modules/minimist/test/parse_modified.js +7 -5
  79. package/node_modules/minimist/test/proto.js +41 -37
  80. package/node_modules/minimist/test/short.js +57 -55
  81. package/node_modules/minimist/test/stop_early.js +10 -8
  82. package/node_modules/minimist/test/unknown.js +83 -81
  83. package/node_modules/minimist/test/whitespace.js +6 -4
  84. package/node_modules/mkdirp-classic/package.json +11 -43
  85. package/node_modules/napi-build-utils/package.json +26 -57
  86. package/node_modules/node-abi/README.md +5 -3
  87. package/node_modules/node-abi/abi_registry.json +98 -8
  88. package/node_modules/node-abi/package.json +26 -57
  89. package/node_modules/once/package.json +14 -55
  90. package/node_modules/prebuild-install/CHANGELOG.md +18 -0
  91. package/node_modules/prebuild-install/README.md +6 -2
  92. package/node_modules/prebuild-install/log.js +26 -18
  93. package/node_modules/prebuild-install/package.json +36 -98
  94. package/node_modules/prebuild-install/rc.js +5 -1
  95. package/node_modules/prebuild-install/util.js +1 -1
  96. package/node_modules/pump/package.json +10 -49
  97. package/node_modules/rc/node_modules/strip-json-comments/package.json +42 -0
  98. package/node_modules/rc/package.json +18 -59
  99. package/node_modules/safe-buffer/index.js +3 -0
  100. package/node_modules/safe-buffer/package.json +20 -39
  101. package/node_modules/{node-abi/node_modules/semver → semver}/README.md +70 -1
  102. package/node_modules/{node-abi/node_modules/semver → semver}/bin/semver.js +16 -2
  103. package/node_modules/{node-abi/node_modules/semver → semver}/classes/comparator.js +39 -34
  104. package/node_modules/{node-abi/node_modules/semver → semver}/classes/range.js +48 -28
  105. package/node_modules/{node-abi/node_modules/semver → semver}/classes/semver.js +32 -17
  106. package/node_modules/{node-abi/node_modules/semver → semver}/functions/coerce.js +1 -1
  107. package/node_modules/semver/functions/diff.js +65 -0
  108. package/node_modules/{node-abi/node_modules/semver → semver}/functions/inc.js +3 -2
  109. package/node_modules/semver/functions/parse.js +16 -0
  110. package/node_modules/semver/index.js +89 -0
  111. package/node_modules/{node-abi/node_modules/semver → semver}/internal/constants.js +20 -2
  112. package/node_modules/semver/internal/parse-options.js +15 -0
  113. package/node_modules/{node-abi/node_modules/semver → semver}/internal/re.js +34 -4
  114. package/node_modules/semver/node_modules/lru-cache/package.json +34 -0
  115. package/node_modules/semver/node_modules/yallist/package.json +29 -0
  116. package/node_modules/semver/package.json +87 -0
  117. package/node_modules/{node-abi/node_modules/semver → semver}/ranges/intersects.js +1 -1
  118. package/node_modules/{node-abi/node_modules/semver → semver}/ranges/subset.js +6 -3
  119. package/node_modules/simple-concat/package.json +17 -45
  120. package/node_modules/simple-get/package.json +17 -45
  121. package/node_modules/{tar-stream → tar-fs}/node_modules/bl/package.json +20 -51
  122. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/README.md +1 -1
  123. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_duplex.js +12 -25
  124. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_passthrough.js +2 -4
  125. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_readable.js +176 -273
  126. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_transform.js +26 -37
  127. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_writable.js +118 -174
  128. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/async_iterator.js +10 -37
  129. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/buffer_list.js +20 -47
  130. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/destroy.js +8 -17
  131. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +1 -19
  132. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/from.js +12 -24
  133. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/pipeline.js +5 -16
  134. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/state.js +2 -7
  135. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/package.json +27 -60
  136. package/node_modules/tar-fs/node_modules/string_decoder/package.json +34 -0
  137. package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/extract.js +1 -1
  138. package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/headers.js +4 -2
  139. package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/package.json +22 -59
  140. package/node_modules/tar-fs/package.json +21 -51
  141. package/node_modules/tunnel-agent/package.json +12 -49
  142. package/node_modules/util-deprecate/package.json +14 -49
  143. package/node_modules/wrappy/package.json +16 -49
  144. package/package.json +85 -68
  145. package/polyfill/Events.d.ts +9 -0
  146. package/polyfill/Events.js +27 -0
  147. package/polyfill/README.md +41 -0
  148. package/polyfill/RTCCertificate.d.ts +7 -0
  149. package/polyfill/RTCCertificate.js +17 -0
  150. package/polyfill/RTCDataChannel.d.ts +35 -0
  151. package/polyfill/RTCDataChannel.js +175 -0
  152. package/polyfill/RTCDtlsTransport.d.ts +10 -0
  153. package/polyfill/RTCDtlsTransport.js +29 -0
  154. package/polyfill/RTCIceCandidate.d.ts +20 -0
  155. package/polyfill/RTCIceCandidate.js +126 -0
  156. package/polyfill/RTCIceTransport.d.ts +18 -0
  157. package/polyfill/RTCIceTransport.js +55 -0
  158. package/polyfill/RTCPeerConnection.d.ts +50 -0
  159. package/polyfill/RTCPeerConnection.js +348 -0
  160. package/polyfill/RTCSctpTransport.d.ts +10 -0
  161. package/polyfill/RTCSctpTransport.js +34 -0
  162. package/polyfill/RTCSessionDescription.d.ts +7 -0
  163. package/polyfill/RTCSessionDescription.js +37 -0
  164. package/polyfill/index.d.ts +14 -0
  165. package/polyfill/index.js +14 -0
  166. package/src/data-channel-wrapper.cpp +47 -6
  167. package/src/main.cpp +5 -5
  168. package/src/peer-connection-wrapper.cpp +145 -9
  169. package/src/peer-connection-wrapper.h +4 -0
  170. package/src/rtc-wrapper.cpp +14 -9
  171. package/src/thread-safe-callback.cpp +4 -10
  172. package/src/thread-safe-callback.h +3 -12
  173. package/test/connectivity.js +9 -4
  174. package/test/polyfill-connectivity.js +89 -0
  175. package/test/test.js +3 -3
  176. package/test/wpt.js +50 -0
  177. package/.github/workflows/build-linux-arm64-test.yml +0 -36
  178. package/examples/README.md +0 -21
  179. package/node_modules/ansi-regex/index.js +0 -4
  180. package/node_modules/ansi-regex/package.json +0 -111
  181. package/node_modules/ansi-regex/readme.md +0 -39
  182. package/node_modules/aproba/LICENSE +0 -14
  183. package/node_modules/aproba/README.md +0 -94
  184. package/node_modules/aproba/index.js +0 -105
  185. package/node_modules/aproba/package.json +0 -65
  186. package/node_modules/code-point-at/index.js +0 -32
  187. package/node_modules/code-point-at/license +0 -21
  188. package/node_modules/code-point-at/package.json +0 -73
  189. package/node_modules/code-point-at/readme.md +0 -32
  190. package/node_modules/console-control-strings/LICENSE +0 -13
  191. package/node_modules/console-control-strings/README.md +0 -145
  192. package/node_modules/console-control-strings/README.md~ +0 -140
  193. package/node_modules/console-control-strings/index.js +0 -125
  194. package/node_modules/console-control-strings/package.json +0 -64
  195. package/node_modules/core-util-is/LICENSE +0 -19
  196. package/node_modules/core-util-is/README.md +0 -3
  197. package/node_modules/core-util-is/float.patch +0 -604
  198. package/node_modules/core-util-is/lib/util.js +0 -107
  199. package/node_modules/core-util-is/package.json +0 -70
  200. package/node_modules/core-util-is/test.js +0 -68
  201. package/node_modules/delegates/.npmignore +0 -1
  202. package/node_modules/delegates/History.md +0 -22
  203. package/node_modules/delegates/License +0 -20
  204. package/node_modules/delegates/Makefile +0 -8
  205. package/node_modules/delegates/Readme.md +0 -94
  206. package/node_modules/delegates/index.js +0 -121
  207. package/node_modules/delegates/package.json +0 -53
  208. package/node_modules/delegates/test/index.js +0 -94
  209. package/node_modules/has-unicode/LICENSE +0 -14
  210. package/node_modules/has-unicode/README.md +0 -43
  211. package/node_modules/has-unicode/index.js +0 -16
  212. package/node_modules/has-unicode/package.json +0 -62
  213. package/node_modules/is-fullwidth-code-point/index.js +0 -46
  214. package/node_modules/is-fullwidth-code-point/license +0 -21
  215. package/node_modules/is-fullwidth-code-point/package.json +0 -80
  216. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  217. package/node_modules/isarray/.npmignore +0 -1
  218. package/node_modules/isarray/.travis.yml +0 -4
  219. package/node_modules/isarray/Makefile +0 -6
  220. package/node_modules/isarray/README.md +0 -60
  221. package/node_modules/isarray/component.json +0 -19
  222. package/node_modules/isarray/index.js +0 -5
  223. package/node_modules/isarray/package.json +0 -77
  224. package/node_modules/isarray/test.js +0 -20
  225. package/node_modules/lru-cache/node_modules/yallist/package.json +0 -65
  226. package/node_modules/lru-cache/package.json +0 -73
  227. package/node_modules/minimist/.travis.yml +0 -8
  228. package/node_modules/node-abi/.circleci/config.yml +0 -63
  229. package/node_modules/node-abi/.github/workflows/update-abi.yml +0 -41
  230. package/node_modules/node-abi/.releaserc.json +0 -9
  231. package/node_modules/node-abi/CODE_OF_CONDUCT.md +0 -73
  232. package/node_modules/node-abi/CONTRIBUTING.md +0 -53
  233. package/node_modules/node-abi/node_modules/semver/functions/diff.js +0 -23
  234. package/node_modules/node-abi/node_modules/semver/functions/parse.js +0 -33
  235. package/node_modules/node-abi/node_modules/semver/index.js +0 -48
  236. package/node_modules/node-abi/node_modules/semver/internal/parse-options.js +0 -11
  237. package/node_modules/node-abi/node_modules/semver/package.json +0 -109
  238. package/node_modules/node-abi/scripts/update-abi-registry.js +0 -119
  239. package/node_modules/node-abi/test/index.js +0 -166
  240. package/node_modules/npmlog/CHANGELOG.md +0 -49
  241. package/node_modules/npmlog/LICENSE +0 -15
  242. package/node_modules/npmlog/README.md +0 -216
  243. package/node_modules/npmlog/log.js +0 -309
  244. package/node_modules/npmlog/node_modules/are-we-there-yet/CHANGES.md +0 -37
  245. package/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE +0 -5
  246. package/node_modules/npmlog/node_modules/are-we-there-yet/README.md +0 -195
  247. package/node_modules/npmlog/node_modules/are-we-there-yet/index.js +0 -4
  248. package/node_modules/npmlog/node_modules/are-we-there-yet/package.json +0 -66
  249. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-base.js +0 -11
  250. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js +0 -107
  251. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-stream.js +0 -36
  252. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker.js +0 -30
  253. package/node_modules/npmlog/node_modules/gauge/CHANGELOG.md +0 -160
  254. package/node_modules/npmlog/node_modules/gauge/LICENSE +0 -13
  255. package/node_modules/npmlog/node_modules/gauge/README.md +0 -399
  256. package/node_modules/npmlog/node_modules/gauge/base-theme.js +0 -14
  257. package/node_modules/npmlog/node_modules/gauge/error.js +0 -24
  258. package/node_modules/npmlog/node_modules/gauge/has-color.js +0 -12
  259. package/node_modules/npmlog/node_modules/gauge/index.js +0 -233
  260. package/node_modules/npmlog/node_modules/gauge/package.json +0 -94
  261. package/node_modules/npmlog/node_modules/gauge/plumbing.js +0 -48
  262. package/node_modules/npmlog/node_modules/gauge/process.js +0 -3
  263. package/node_modules/npmlog/node_modules/gauge/progress-bar.js +0 -35
  264. package/node_modules/npmlog/node_modules/gauge/render-template.js +0 -181
  265. package/node_modules/npmlog/node_modules/gauge/set-immediate.js +0 -7
  266. package/node_modules/npmlog/node_modules/gauge/set-interval.js +0 -3
  267. package/node_modules/npmlog/node_modules/gauge/spin.js +0 -5
  268. package/node_modules/npmlog/node_modules/gauge/template-item.js +0 -73
  269. package/node_modules/npmlog/node_modules/gauge/theme-set.js +0 -115
  270. package/node_modules/npmlog/node_modules/gauge/themes.js +0 -54
  271. package/node_modules/npmlog/node_modules/gauge/wide-truncate.js +0 -25
  272. package/node_modules/npmlog/package.json +0 -78
  273. package/node_modules/number-is-nan/index.js +0 -4
  274. package/node_modules/number-is-nan/license +0 -21
  275. package/node_modules/number-is-nan/package.json +0 -70
  276. package/node_modules/number-is-nan/readme.md +0 -28
  277. package/node_modules/object-assign/index.js +0 -90
  278. package/node_modules/object-assign/license +0 -21
  279. package/node_modules/object-assign/package.json +0 -77
  280. package/node_modules/object-assign/readme.md +0 -61
  281. package/node_modules/process-nextick-args/index.js +0 -45
  282. package/node_modules/process-nextick-args/license.md +0 -19
  283. package/node_modules/process-nextick-args/package.json +0 -53
  284. package/node_modules/process-nextick-args/readme.md +0 -18
  285. package/node_modules/readable-stream/.travis.yml +0 -34
  286. package/node_modules/readable-stream/README.md +0 -58
  287. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  288. package/node_modules/readable-stream/duplex-browser.js +0 -1
  289. package/node_modules/readable-stream/duplex.js +0 -1
  290. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  291. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  292. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  293. package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  294. package/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  295. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  296. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  297. package/node_modules/readable-stream/package.json +0 -87
  298. package/node_modules/readable-stream/passthrough.js +0 -1
  299. package/node_modules/readable-stream/readable-browser.js +0 -7
  300. package/node_modules/readable-stream/readable.js +0 -19
  301. package/node_modules/readable-stream/transform.js +0 -1
  302. package/node_modules/readable-stream/writable-browser.js +0 -1
  303. package/node_modules/readable-stream/writable.js +0 -8
  304. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  305. package/node_modules/set-blocking/LICENSE.txt +0 -14
  306. package/node_modules/set-blocking/README.md +0 -31
  307. package/node_modules/set-blocking/index.js +0 -7
  308. package/node_modules/set-blocking/package.json +0 -73
  309. package/node_modules/signal-exit/CHANGELOG.md +0 -35
  310. package/node_modules/signal-exit/LICENSE.txt +0 -16
  311. package/node_modules/signal-exit/README.md +0 -39
  312. package/node_modules/signal-exit/index.js +0 -163
  313. package/node_modules/signal-exit/package.json +0 -71
  314. package/node_modules/signal-exit/signals.js +0 -53
  315. package/node_modules/string-width/index.js +0 -37
  316. package/node_modules/string-width/license +0 -21
  317. package/node_modules/string-width/package.json +0 -95
  318. package/node_modules/string-width/readme.md +0 -42
  319. package/node_modules/string_decoder/.travis.yml +0 -50
  320. package/node_modules/string_decoder/package.json +0 -64
  321. package/node_modules/strip-ansi/index.js +0 -6
  322. package/node_modules/strip-ansi/license +0 -21
  323. package/node_modules/strip-ansi/package.json +0 -107
  324. package/node_modules/strip-ansi/readme.md +0 -33
  325. package/node_modules/strip-json-comments/license +0 -21
  326. package/node_modules/strip-json-comments/package.json +0 -77
  327. package/node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  328. package/node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +0 -136
  329. package/node_modules/tar-stream/node_modules/readable-stream/LICENSE +0 -47
  330. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  331. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  332. package/node_modules/wide-align/LICENSE +0 -14
  333. package/node_modules/wide-align/README.md +0 -47
  334. package/node_modules/wide-align/align.js +0 -65
  335. package/node_modules/wide-align/package.json +0 -69
  336. /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
  337. /package/node_modules/{strip-json-comments → rc/node_modules/strip-json-comments}/index.js +0 -0
  338. /package/node_modules/{ansi-regex → rc/node_modules/strip-json-comments}/license +0 -0
  339. /package/node_modules/{strip-json-comments → rc/node_modules/strip-json-comments}/readme.md +0 -0
  340. /package/node_modules/{lru-cache → semver}/LICENSE +0 -0
  341. /package/node_modules/{node-abi/node_modules/semver → semver}/classes/index.js +0 -0
  342. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/clean.js +0 -0
  343. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/cmp.js +0 -0
  344. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/compare-build.js +0 -0
  345. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/compare-loose.js +0 -0
  346. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/compare.js +0 -0
  347. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/eq.js +0 -0
  348. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/gt.js +0 -0
  349. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/gte.js +0 -0
  350. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/lt.js +0 -0
  351. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/lte.js +0 -0
  352. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/major.js +0 -0
  353. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/minor.js +0 -0
  354. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/neq.js +0 -0
  355. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/patch.js +0 -0
  356. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/prerelease.js +0 -0
  357. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/rcompare.js +0 -0
  358. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/rsort.js +0 -0
  359. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/satisfies.js +0 -0
  360. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/sort.js +0 -0
  361. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/valid.js +0 -0
  362. /package/node_modules/{node-abi/node_modules/semver → semver}/internal/debug.js +0 -0
  363. /package/node_modules/{node-abi/node_modules/semver → semver}/internal/identifiers.js +0 -0
  364. /package/node_modules/{lru-cache/node_modules/yallist → semver/node_modules/lru-cache}/LICENSE +0 -0
  365. /package/node_modules/{lru-cache → semver/node_modules/lru-cache}/README.md +0 -0
  366. /package/node_modules/{lru-cache → semver/node_modules/lru-cache}/index.js +0 -0
  367. /package/node_modules/{node-abi/node_modules/semver → semver/node_modules/yallist}/LICENSE +0 -0
  368. /package/node_modules/{lru-cache → semver}/node_modules/yallist/README.md +0 -0
  369. /package/node_modules/{lru-cache → semver}/node_modules/yallist/iterator.js +0 -0
  370. /package/node_modules/{lru-cache → semver}/node_modules/yallist/yallist.js +0 -0
  371. /package/node_modules/{node-abi/node_modules/semver → semver}/preload.js +0 -0
  372. /package/node_modules/{node-abi/node_modules/semver → semver}/range.bnf +0 -0
  373. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/gtr.js +0 -0
  374. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/ltr.js +0 -0
  375. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/max-satisfying.js +0 -0
  376. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/min-satisfying.js +0 -0
  377. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/min-version.js +0 -0
  378. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/outside.js +0 -0
  379. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/simplify.js +0 -0
  380. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/to-comparators.js +0 -0
  381. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/valid.js +0 -0
  382. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/.travis.yml +0 -0
  383. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/BufferList.js +0 -0
  384. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/LICENSE.md +0 -0
  385. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/README.md +0 -0
  386. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/bl.js +0 -0
  387. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/test/convert.js +0 -0
  388. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/test/indexOf.js +0 -0
  389. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/test/isBufferList.js +0 -0
  390. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/test/test.js +0 -0
  391. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/CONTRIBUTING.md +0 -0
  392. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/GOVERNANCE.md +0 -0
  393. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/LICENSE +0 -0
  394. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/errors-browser.js +0 -0
  395. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/errors.js +0 -0
  396. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/experimentalWarning.js +0 -0
  397. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -0
  398. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/lib/internal/streams/stream-browser.js +0 -0
  399. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/lib/internal/streams/stream.js +0 -0
  400. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/readable-browser.js +0 -0
  401. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/readable.js +0 -0
  402. /package/node_modules/{string_decoder → tar-fs/node_modules/string_decoder}/LICENSE +0 -0
  403. /package/node_modules/{string_decoder → tar-fs/node_modules/string_decoder}/README.md +0 -0
  404. /package/node_modules/{string_decoder → tar-fs/node_modules/string_decoder}/lib/string_decoder.js +0 -0
  405. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/LICENSE +0 -0
  406. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/README.md +0 -0
  407. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/index.js +0 -0
  408. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/pack.js +0 -0
  409. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/sandbox.js +0 -0
@@ -26,9 +26,16 @@ class Range {
26
26
  this.loose = !!options.loose
27
27
  this.includePrerelease = !!options.includePrerelease
28
28
 
29
- // First, split based on boolean or ||
29
+ // First reduce all whitespace as much as possible so we do not have to rely
30
+ // on potentially slow regexes like \s*. This is then stored and used for
31
+ // future error messages as well.
30
32
  this.raw = range
31
- this.set = range
33
+ .trim()
34
+ .split(/\s+/)
35
+ .join(' ')
36
+
37
+ // First, split on ||
38
+ this.set = this.raw
32
39
  .split('||')
33
40
  // map the range to a 2d array of comparators
34
41
  .map(r => this.parseRange(r.trim()))
@@ -38,7 +45,7 @@ class Range {
38
45
  .filter(c => c.length)
39
46
 
40
47
  if (!this.set.length) {
41
- throw new TypeError(`Invalid SemVer Range: ${range}`)
48
+ throw new TypeError(`Invalid SemVer Range: ${this.raw}`)
42
49
  }
43
50
 
44
51
  // if we have any that are not the null set, throw out null sets.
@@ -64,9 +71,7 @@ class Range {
64
71
 
65
72
  format () {
66
73
  this.range = this.set
67
- .map((comps) => {
68
- return comps.join(' ').trim()
69
- })
74
+ .map((comps) => comps.join(' ').trim())
70
75
  .join('||')
71
76
  .trim()
72
77
  return this.range
@@ -77,12 +82,12 @@ class Range {
77
82
  }
78
83
 
79
84
  parseRange (range) {
80
- range = range.trim()
81
-
82
85
  // memoize range parsing for performance.
83
86
  // this is a very hot path, and fully deterministic.
84
- const memoOpts = Object.keys(this.options).join(',')
85
- const memoKey = `parseRange:${memoOpts}:${range}`
87
+ const memoOpts =
88
+ (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |
89
+ (this.options.loose && FLAG_LOOSE)
90
+ const memoKey = memoOpts + ':' + range
86
91
  const cached = cache.get(memoKey)
87
92
  if (cached) {
88
93
  return cached
@@ -93,18 +98,18 @@ class Range {
93
98
  const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
94
99
  range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
95
100
  debug('hyphen replace', range)
101
+
96
102
  // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
97
103
  range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
98
104
  debug('comparator trim', range)
99
105
 
100
106
  // `~ 1.2.3` => `~1.2.3`
101
107
  range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
108
+ debug('tilde trim', range)
102
109
 
103
110
  // `^ 1.2.3` => `^1.2.3`
104
111
  range = range.replace(re[t.CARETTRIM], caretTrimReplace)
105
-
106
- // normalize spaces
107
- range = range.split(/\s+/).join(' ')
112
+ debug('caret trim', range)
108
113
 
109
114
  // At this point, the range is completely trimmed and
110
115
  // ready to be split into comparators.
@@ -190,6 +195,7 @@ class Range {
190
195
  return false
191
196
  }
192
197
  }
198
+
193
199
  module.exports = Range
194
200
 
195
201
  const LRU = require('lru-cache')
@@ -200,12 +206,13 @@ const Comparator = require('./comparator')
200
206
  const debug = require('../internal/debug')
201
207
  const SemVer = require('./semver')
202
208
  const {
203
- re,
209
+ safeRe: re,
204
210
  t,
205
211
  comparatorTrimReplace,
206
212
  tildeTrimReplace,
207
213
  caretTrimReplace,
208
214
  } = require('../internal/re')
215
+ const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')
209
216
 
210
217
  const isNullSet = c => c.value === '<0.0.0-0'
211
218
  const isAny = c => c.value === ''
@@ -252,10 +259,14 @@ const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
252
259
  // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0
253
260
  // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
254
261
  // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
255
- const replaceTildes = (comp, options) =>
256
- comp.trim().split(/\s+/).map((c) => {
257
- return replaceTilde(c, options)
258
- }).join(' ')
262
+ // ~0.0.1 --> >=0.0.1 <0.1.0-0
263
+ const replaceTildes = (comp, options) => {
264
+ return comp
265
+ .trim()
266
+ .split(/\s+/)
267
+ .map((c) => replaceTilde(c, options))
268
+ .join(' ')
269
+ }
259
270
 
260
271
  const replaceTilde = (comp, options) => {
261
272
  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
@@ -291,10 +302,15 @@ const replaceTilde = (comp, options) => {
291
302
  // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0
292
303
  // ^1.2.3 --> >=1.2.3 <2.0.0-0
293
304
  // ^1.2.0 --> >=1.2.0 <2.0.0-0
294
- const replaceCarets = (comp, options) =>
295
- comp.trim().split(/\s+/).map((c) => {
296
- return replaceCaret(c, options)
297
- }).join(' ')
305
+ // ^0.0.1 --> >=0.0.1 <0.0.2-0
306
+ // ^0.1.0 --> >=0.1.0 <0.2.0-0
307
+ const replaceCarets = (comp, options) => {
308
+ return comp
309
+ .trim()
310
+ .split(/\s+/)
311
+ .map((c) => replaceCaret(c, options))
312
+ .join(' ')
313
+ }
298
314
 
299
315
  const replaceCaret = (comp, options) => {
300
316
  debug('caret', comp, options)
@@ -351,9 +367,10 @@ const replaceCaret = (comp, options) => {
351
367
 
352
368
  const replaceXRanges = (comp, options) => {
353
369
  debug('replaceXRanges', comp, options)
354
- return comp.split(/\s+/).map((c) => {
355
- return replaceXRange(c, options)
356
- }).join(' ')
370
+ return comp
371
+ .split(/\s+/)
372
+ .map((c) => replaceXRange(c, options))
373
+ .join(' ')
357
374
  }
358
375
 
359
376
  const replaceXRange = (comp, options) => {
@@ -436,12 +453,15 @@ const replaceXRange = (comp, options) => {
436
453
  const replaceStars = (comp, options) => {
437
454
  debug('replaceStars', comp, options)
438
455
  // Looseness is ignored here. star is always as loose as it gets!
439
- return comp.trim().replace(re[t.STAR], '')
456
+ return comp
457
+ .trim()
458
+ .replace(re[t.STAR], '')
440
459
  }
441
460
 
442
461
  const replaceGTE0 = (comp, options) => {
443
462
  debug('replaceGTE0', comp, options)
444
- return comp.trim()
463
+ return comp
464
+ .trim()
445
465
  .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')
446
466
  }
447
467
 
@@ -479,7 +499,7 @@ const hyphenReplace = incPr => ($0,
479
499
  to = `<=${to}`
480
500
  }
481
501
 
482
- return (`${from} ${to}`).trim()
502
+ return `${from} ${to}`.trim()
483
503
  }
484
504
 
485
505
  const testSet = (set, version, options) => {
@@ -1,6 +1,6 @@
1
1
  const debug = require('../internal/debug')
2
2
  const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')
3
- const { re, t } = require('../internal/re')
3
+ const { safeRe: re, t } = require('../internal/re')
4
4
 
5
5
  const parseOptions = require('../internal/parse-options')
6
6
  const { compareIdentifiers } = require('../internal/identifiers')
@@ -16,7 +16,7 @@ class SemVer {
16
16
  version = version.version
17
17
  }
18
18
  } else if (typeof version !== 'string') {
19
- throw new TypeError(`Invalid Version: ${version}`)
19
+ throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
20
20
  }
21
21
 
22
22
  if (version.length > MAX_LENGTH) {
@@ -175,36 +175,36 @@ class SemVer {
175
175
 
176
176
  // preminor will bump the version up to the next minor release, and immediately
177
177
  // down to pre-release. premajor and prepatch work the same way.
178
- inc (release, identifier) {
178
+ inc (release, identifier, identifierBase) {
179
179
  switch (release) {
180
180
  case 'premajor':
181
181
  this.prerelease.length = 0
182
182
  this.patch = 0
183
183
  this.minor = 0
184
184
  this.major++
185
- this.inc('pre', identifier)
185
+ this.inc('pre', identifier, identifierBase)
186
186
  break
187
187
  case 'preminor':
188
188
  this.prerelease.length = 0
189
189
  this.patch = 0
190
190
  this.minor++
191
- this.inc('pre', identifier)
191
+ this.inc('pre', identifier, identifierBase)
192
192
  break
193
193
  case 'prepatch':
194
194
  // If this is already a prerelease, it will bump to the next version
195
195
  // drop any prereleases that might already exist, since they are not
196
196
  // relevant at this point.
197
197
  this.prerelease.length = 0
198
- this.inc('patch', identifier)
199
- this.inc('pre', identifier)
198
+ this.inc('patch', identifier, identifierBase)
199
+ this.inc('pre', identifier, identifierBase)
200
200
  break
201
201
  // If the input is a non-prerelease version, this acts the same as
202
202
  // prepatch.
203
203
  case 'prerelease':
204
204
  if (this.prerelease.length === 0) {
205
- this.inc('patch', identifier)
205
+ this.inc('patch', identifier, identifierBase)
206
206
  }
207
- this.inc('pre', identifier)
207
+ this.inc('pre', identifier, identifierBase)
208
208
  break
209
209
 
210
210
  case 'major':
@@ -246,9 +246,15 @@ class SemVer {
246
246
  break
247
247
  // This probably shouldn't be used publicly.
248
248
  // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
249
- case 'pre':
249
+ case 'pre': {
250
+ const base = Number(identifierBase) ? 1 : 0
251
+
252
+ if (!identifier && identifierBase === false) {
253
+ throw new Error('invalid increment argument: identifier is empty')
254
+ }
255
+
250
256
  if (this.prerelease.length === 0) {
251
- this.prerelease = [0]
257
+ this.prerelease = [base]
252
258
  } else {
253
259
  let i = this.prerelease.length
254
260
  while (--i >= 0) {
@@ -259,27 +265,36 @@ class SemVer {
259
265
  }
260
266
  if (i === -1) {
261
267
  // didn't increment anything
262
- this.prerelease.push(0)
268
+ if (identifier === this.prerelease.join('.') && identifierBase === false) {
269
+ throw new Error('invalid increment argument: identifier already exists')
270
+ }
271
+ this.prerelease.push(base)
263
272
  }
264
273
  }
265
274
  if (identifier) {
266
275
  // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
267
276
  // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
277
+ let prerelease = [identifier, base]
278
+ if (identifierBase === false) {
279
+ prerelease = [identifier]
280
+ }
268
281
  if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
269
282
  if (isNaN(this.prerelease[1])) {
270
- this.prerelease = [identifier, 0]
283
+ this.prerelease = prerelease
271
284
  }
272
285
  } else {
273
- this.prerelease = [identifier, 0]
286
+ this.prerelease = prerelease
274
287
  }
275
288
  }
276
289
  break
277
-
290
+ }
278
291
  default:
279
292
  throw new Error(`invalid increment argument: ${release}`)
280
293
  }
281
- this.format()
282
- this.raw = this.version
294
+ this.raw = this.format()
295
+ if (this.build.length) {
296
+ this.raw += `+${this.build.join('.')}`
297
+ }
283
298
  return this
284
299
  }
285
300
  }
@@ -1,6 +1,6 @@
1
1
  const SemVer = require('../classes/semver')
2
2
  const parse = require('./parse')
3
- const { re, t } = require('../internal/re')
3
+ const { safeRe: re, t } = require('../internal/re')
4
4
 
5
5
  const coerce = (version, options) => {
6
6
  if (version instanceof SemVer) {
@@ -0,0 +1,65 @@
1
+ const parse = require('./parse.js')
2
+
3
+ const diff = (version1, version2) => {
4
+ const v1 = parse(version1, null, true)
5
+ const v2 = parse(version2, null, true)
6
+ const comparison = v1.compare(v2)
7
+
8
+ if (comparison === 0) {
9
+ return null
10
+ }
11
+
12
+ const v1Higher = comparison > 0
13
+ const highVersion = v1Higher ? v1 : v2
14
+ const lowVersion = v1Higher ? v2 : v1
15
+ const highHasPre = !!highVersion.prerelease.length
16
+ const lowHasPre = !!lowVersion.prerelease.length
17
+
18
+ if (lowHasPre && !highHasPre) {
19
+ // Going from prerelease -> no prerelease requires some special casing
20
+
21
+ // If the low version has only a major, then it will always be a major
22
+ // Some examples:
23
+ // 1.0.0-1 -> 1.0.0
24
+ // 1.0.0-1 -> 1.1.1
25
+ // 1.0.0-1 -> 2.0.0
26
+ if (!lowVersion.patch && !lowVersion.minor) {
27
+ return 'major'
28
+ }
29
+
30
+ // Otherwise it can be determined by checking the high version
31
+
32
+ if (highVersion.patch) {
33
+ // anything higher than a patch bump would result in the wrong version
34
+ return 'patch'
35
+ }
36
+
37
+ if (highVersion.minor) {
38
+ // anything higher than a minor bump would result in the wrong version
39
+ return 'minor'
40
+ }
41
+
42
+ // bumping major/minor/patch all have same result
43
+ return 'major'
44
+ }
45
+
46
+ // add the `pre` prefix if we are going to a prerelease version
47
+ const prefix = highHasPre ? 'pre' : ''
48
+
49
+ if (v1.major !== v2.major) {
50
+ return prefix + 'major'
51
+ }
52
+
53
+ if (v1.minor !== v2.minor) {
54
+ return prefix + 'minor'
55
+ }
56
+
57
+ if (v1.patch !== v2.patch) {
58
+ return prefix + 'patch'
59
+ }
60
+
61
+ // high and low are preleases
62
+ return 'prerelease'
63
+ }
64
+
65
+ module.exports = diff
@@ -1,7 +1,8 @@
1
1
  const SemVer = require('../classes/semver')
2
2
 
3
- const inc = (version, release, options, identifier) => {
3
+ const inc = (version, release, options, identifier, identifierBase) => {
4
4
  if (typeof (options) === 'string') {
5
+ identifierBase = identifier
5
6
  identifier = options
6
7
  options = undefined
7
8
  }
@@ -10,7 +11,7 @@ const inc = (version, release, options, identifier) => {
10
11
  return new SemVer(
11
12
  version instanceof SemVer ? version.version : version,
12
13
  options
13
- ).inc(release, identifier).version
14
+ ).inc(release, identifier, identifierBase).version
14
15
  } catch (er) {
15
16
  return null
16
17
  }
@@ -0,0 +1,16 @@
1
+ const SemVer = require('../classes/semver')
2
+ const parse = (version, options, throwErrors = false) => {
3
+ if (version instanceof SemVer) {
4
+ return version
5
+ }
6
+ try {
7
+ return new SemVer(version, options)
8
+ } catch (er) {
9
+ if (!throwErrors) {
10
+ return null
11
+ }
12
+ throw er
13
+ }
14
+ }
15
+
16
+ module.exports = parse
@@ -0,0 +1,89 @@
1
+ // just pre-load all the stuff that index.js lazily exports
2
+ const internalRe = require('./internal/re')
3
+ const constants = require('./internal/constants')
4
+ const SemVer = require('./classes/semver')
5
+ const identifiers = require('./internal/identifiers')
6
+ const parse = require('./functions/parse')
7
+ const valid = require('./functions/valid')
8
+ const clean = require('./functions/clean')
9
+ const inc = require('./functions/inc')
10
+ const diff = require('./functions/diff')
11
+ const major = require('./functions/major')
12
+ const minor = require('./functions/minor')
13
+ const patch = require('./functions/patch')
14
+ const prerelease = require('./functions/prerelease')
15
+ const compare = require('./functions/compare')
16
+ const rcompare = require('./functions/rcompare')
17
+ const compareLoose = require('./functions/compare-loose')
18
+ const compareBuild = require('./functions/compare-build')
19
+ const sort = require('./functions/sort')
20
+ const rsort = require('./functions/rsort')
21
+ const gt = require('./functions/gt')
22
+ const lt = require('./functions/lt')
23
+ const eq = require('./functions/eq')
24
+ const neq = require('./functions/neq')
25
+ const gte = require('./functions/gte')
26
+ const lte = require('./functions/lte')
27
+ const cmp = require('./functions/cmp')
28
+ const coerce = require('./functions/coerce')
29
+ const Comparator = require('./classes/comparator')
30
+ const Range = require('./classes/range')
31
+ const satisfies = require('./functions/satisfies')
32
+ const toComparators = require('./ranges/to-comparators')
33
+ const maxSatisfying = require('./ranges/max-satisfying')
34
+ const minSatisfying = require('./ranges/min-satisfying')
35
+ const minVersion = require('./ranges/min-version')
36
+ const validRange = require('./ranges/valid')
37
+ const outside = require('./ranges/outside')
38
+ const gtr = require('./ranges/gtr')
39
+ const ltr = require('./ranges/ltr')
40
+ const intersects = require('./ranges/intersects')
41
+ const simplifyRange = require('./ranges/simplify')
42
+ const subset = require('./ranges/subset')
43
+ module.exports = {
44
+ parse,
45
+ valid,
46
+ clean,
47
+ inc,
48
+ diff,
49
+ major,
50
+ minor,
51
+ patch,
52
+ prerelease,
53
+ compare,
54
+ rcompare,
55
+ compareLoose,
56
+ compareBuild,
57
+ sort,
58
+ rsort,
59
+ gt,
60
+ lt,
61
+ eq,
62
+ neq,
63
+ gte,
64
+ lte,
65
+ cmp,
66
+ coerce,
67
+ Comparator,
68
+ Range,
69
+ satisfies,
70
+ toComparators,
71
+ maxSatisfying,
72
+ minSatisfying,
73
+ minVersion,
74
+ validRange,
75
+ outside,
76
+ gtr,
77
+ ltr,
78
+ intersects,
79
+ simplifyRange,
80
+ subset,
81
+ SemVer,
82
+ re: internalRe.re,
83
+ src: internalRe.src,
84
+ tokens: internalRe.t,
85
+ SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
86
+ RELEASE_TYPES: constants.RELEASE_TYPES,
87
+ compareIdentifiers: identifiers.compareIdentifiers,
88
+ rcompareIdentifiers: identifiers.rcompareIdentifiers,
89
+ }
@@ -9,9 +9,27 @@ const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
9
9
  // Max safe segment length for coercion.
10
10
  const MAX_SAFE_COMPONENT_LENGTH = 16
11
11
 
12
+ // Max safe length for a build identifier. The max length minus 6 characters for
13
+ // the shortest version with a build 0.0.0+BUILD.
14
+ const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
15
+
16
+ const RELEASE_TYPES = [
17
+ 'major',
18
+ 'premajor',
19
+ 'minor',
20
+ 'preminor',
21
+ 'patch',
22
+ 'prepatch',
23
+ 'prerelease',
24
+ ]
25
+
12
26
  module.exports = {
13
- SEMVER_SPEC_VERSION,
14
27
  MAX_LENGTH,
15
- MAX_SAFE_INTEGER,
16
28
  MAX_SAFE_COMPONENT_LENGTH,
29
+ MAX_SAFE_BUILD_LENGTH,
30
+ MAX_SAFE_INTEGER,
31
+ RELEASE_TYPES,
32
+ SEMVER_SPEC_VERSION,
33
+ FLAG_INCLUDE_PRERELEASE: 0b001,
34
+ FLAG_LOOSE: 0b010,
17
35
  }
@@ -0,0 +1,15 @@
1
+ // parse out just the options we care about
2
+ const looseOption = Object.freeze({ loose: true })
3
+ const emptyOpts = Object.freeze({ })
4
+ const parseOptions = options => {
5
+ if (!options) {
6
+ return emptyOpts
7
+ }
8
+
9
+ if (typeof options !== 'object') {
10
+ return looseOption
11
+ }
12
+
13
+ return options
14
+ }
15
+ module.exports = parseOptions
@@ -1,19 +1,49 @@
1
- const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')
1
+ const {
2
+ MAX_SAFE_COMPONENT_LENGTH,
3
+ MAX_SAFE_BUILD_LENGTH,
4
+ MAX_LENGTH,
5
+ } = require('./constants')
2
6
  const debug = require('./debug')
3
7
  exports = module.exports = {}
4
8
 
5
9
  // The actual regexps go on exports.re
6
10
  const re = exports.re = []
11
+ const safeRe = exports.safeRe = []
7
12
  const src = exports.src = []
8
13
  const t = exports.t = {}
9
14
  let R = 0
10
15
 
16
+ const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
17
+
18
+ // Replace some greedy regex tokens to prevent regex dos issues. These regex are
19
+ // used internally via the safeRe object since all inputs in this library get
20
+ // normalized first to trim and collapse all extra whitespace. The original
21
+ // regexes are exported for userland consumption and lower level usage. A
22
+ // future breaking change could export the safer regex only with a note that
23
+ // all input should have extra whitespace removed.
24
+ const safeRegexReplacements = [
25
+ ['\\s', 1],
26
+ ['\\d', MAX_LENGTH],
27
+ [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
28
+ ]
29
+
30
+ const makeSafeRegex = (value) => {
31
+ for (const [token, max] of safeRegexReplacements) {
32
+ value = value
33
+ .split(`${token}*`).join(`${token}{0,${max}}`)
34
+ .split(`${token}+`).join(`${token}{1,${max}}`)
35
+ }
36
+ return value
37
+ }
38
+
11
39
  const createToken = (name, value, isGlobal) => {
40
+ const safe = makeSafeRegex(value)
12
41
  const index = R++
13
42
  debug(name, index, value)
14
43
  t[name] = index
15
44
  src[index] = value
16
45
  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
46
+ safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
17
47
  }
18
48
 
19
49
  // The following Regular Expressions can be used for tokenizing,
@@ -23,13 +53,13 @@ const createToken = (name, value, isGlobal) => {
23
53
  // A single `0`, or a non-zero digit followed by zero or more digits.
24
54
 
25
55
  createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
26
- createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')
56
+ createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
27
57
 
28
58
  // ## Non-numeric Identifier
29
59
  // Zero or more digits, followed by a letter or hyphen, and then zero or
30
60
  // more letters, digits, or hyphens.
31
61
 
32
- createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*')
62
+ createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
33
63
 
34
64
  // ## Main Version
35
65
  // Three dot-separated numeric identifiers.
@@ -64,7 +94,7 @@ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
64
94
  // ## Build Metadata Identifier
65
95
  // Any combination of digits, letters, or hyphens.
66
96
 
67
- createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')
97
+ createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
68
98
 
69
99
  // ## Build Metadata
70
100
  // Plus sign, followed by one or more period-separated build metadata
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "lru-cache",
3
+ "description": "A cache object that deletes the least-recently-used items.",
4
+ "version": "6.0.0",
5
+ "author": "Isaac Z. Schlueter <i@izs.me>",
6
+ "keywords": [
7
+ "mru",
8
+ "lru",
9
+ "cache"
10
+ ],
11
+ "scripts": {
12
+ "test": "tap",
13
+ "snap": "tap",
14
+ "preversion": "npm test",
15
+ "postversion": "npm publish",
16
+ "prepublishOnly": "git push origin --follow-tags"
17
+ },
18
+ "main": "index.js",
19
+ "repository": "git://github.com/isaacs/node-lru-cache.git",
20
+ "devDependencies": {
21
+ "benchmark": "^2.1.4",
22
+ "tap": "^14.10.7"
23
+ },
24
+ "license": "ISC",
25
+ "dependencies": {
26
+ "yallist": "^4.0.0"
27
+ },
28
+ "files": [
29
+ "index.js"
30
+ ],
31
+ "engines": {
32
+ "node": ">=10"
33
+ }
34
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "yallist",
3
+ "version": "4.0.0",
4
+ "description": "Yet Another Linked List",
5
+ "main": "yallist.js",
6
+ "directories": {
7
+ "test": "test"
8
+ },
9
+ "files": [
10
+ "yallist.js",
11
+ "iterator.js"
12
+ ],
13
+ "dependencies": {},
14
+ "devDependencies": {
15
+ "tap": "^12.1.0"
16
+ },
17
+ "scripts": {
18
+ "test": "tap test/*.js --100",
19
+ "preversion": "npm test",
20
+ "postversion": "npm publish",
21
+ "postpublish": "git push origin --all; git push origin --tags"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/isaacs/yallist.git"
26
+ },
27
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
28
+ "license": "ISC"
29
+ }