opal 1.7.3 → 1.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8af0b92263196be9125b7ba0d1133b9a157aed0da2d91e282320ef8a8ce9a1a3
4
- data.tar.gz: 8d05dfd7e6dcc883c27f674ddebc84e57c29e80c33b981d70118f44d869d80d0
3
+ metadata.gz: 1e1885b32b1546863d767adcebce41e10b5b10872bdad28d197b2a193fb29e54
4
+ data.tar.gz: 24a27f9aa47ddd775a36b6bb2bf6fcf32ab51c80ff6ad5bf9c5baf685da83576
5
5
  SHA512:
6
- metadata.gz: 52adf7dafb792d434e9d423d0f4340df8d114071e94de6165856e8396476bfca9193ba1831464bf2f701e9978f9a7674de3590680f8a1264e542cd1f0715f2b2
7
- data.tar.gz: 6f73fb32a7837daf9ad771a75cb0f549b0a69a968b8f18fa40d1a05f66ac61109dde51b6e9717def8942dd4068c532dc413e0fdb2541d80ab7596db3d6ed4db1
6
+ metadata.gz: d4c34638370c988ad9adad7eab68f643b399cdacaa5e88dd4f11db224efbcdf7a7c7278afdb5586ef65b27bb7918c836641ac18dfc4db1b968c2aa73358fb192
7
+ data.tar.gz: 3a3fce3444d3f14b8aaee302f6ec0cf67991f80dac46702a21bdbf1a51534bd114584a7a94d7d03abea6d333a527db249244cdc1fd7b94b09abe11716259788f
data/.eslintrc.js CHANGED
@@ -33,5 +33,6 @@ module.exports = {
33
33
  "Reflect": "readonly",
34
34
  "Uint8Array": "readonly",
35
35
  "WeakRef": "readonly",
36
+ "Map": "readonly",
36
37
  }
37
38
  };
data/CHANGELOG.md CHANGED
@@ -16,7 +16,7 @@ Changes are grouped as follows:
16
16
 
17
17
 
18
18
 
19
- ## [1.7.3](https://github.com/opal/opal/compare/v1.7.2...v1.7.3) - 2023-03-23
19
+ ## [1.7.4](https://github.com/opal/opal/compare/v1.7.3...v1.7.4) - 2023-09-14
20
20
 
21
21
 
22
22
  <!--
@@ -28,6 +28,20 @@ Changes are grouped as follows:
28
28
  ### Performance
29
29
  -->
30
30
 
31
+ ### Fixed
32
+
33
+ - Use a Map instead of a POJO for the jsid_cache ([#2584](https://github.com/opal/opal/pull/2584))
34
+ - Lowercase response headers in `SimpleServer` for rack 3.0 compatibility ([#2578](https://github.com/opal/opal/pull/2578))
35
+ - Fix `switch` with Object-wrapped values ([#2542](https://github.com/opal/opal/pull/2542))
36
+ - Regexp.escape: Cast to String or drop exception ([#2552](https://github.com/opal/opal/pull/2552))
37
+ - Chrome runner fix: support code that contains `</script>` ([#2581](https://github.com/opal/opal/pull/2581))
38
+
39
+
40
+
41
+
42
+ ## [1.7.3](https://github.com/opal/opal/compare/v1.7.2...v1.7.3) - 2023-03-23
43
+
44
+
31
45
  ### Fixed
32
46
 
33
47
  - Disallow to define a singleton class for Number ([#2521](https://github.com/opal/opal/pull/2521))
@@ -70,6 +70,10 @@ module Opal
70
70
  ext = builder.output_extension
71
71
  module_type = ' type="module"' if builder.esm?
72
72
 
73
+ # Some maps may contain `</script>` fragment (eg. in strings) which would close our
74
+ # `<script>` tag prematurely. For this case, we need to escape the `</script>` tag.
75
+ map_json = map.to_json.gsub(/(<\/scr)(ipt>)/i, '\1"+"\2')
76
+
73
77
  # Chrome can't handle huge data passed to `addScriptToEvaluateOnLoad`
74
78
  # https://groups.google.com/a/chromium.org/forum/#!topic/chromium-discuss/U5qyeX_ydBo
75
79
  # The only way is to create temporary files and pass them to chrome.
@@ -86,7 +90,7 @@ module Opal
86
90
  sourceMapSupport.install({
87
91
  retrieveSourceMap: function(path) {
88
92
  return path.endsWith('/index.#{ext}') ? {
89
- url: './index.map', map: #{map.to_json}
93
+ url: './index.map', map: #{map_json}
90
94
  } : null;
91
95
  }
92
96
  });
data/lib/opal/nodes/if.rb CHANGED
@@ -349,7 +349,7 @@ module Opal
349
349
  @switch_additional_rules = sexp.meta[:switch_additional_rules]
350
350
  compile_switch_case(sexp.meta[:switch_test])
351
351
  else
352
- line "switch (", expr(@switch_first_test), ") {"
352
+ line "switch (", expr(@switch_first_test), ".valueOf()) {"
353
353
  indent do
354
354
  compile_switch_case(@switch_test)
355
355
  end
@@ -51,7 +51,7 @@ class Opal::SimpleServer
51
51
  asset = fetch_asset(path)
52
52
  [
53
53
  200,
54
- { 'Content-Type' => 'application/javascript' },
54
+ { 'content-type' => 'application/javascript' },
55
55
  [asset[:data], "\n", asset[:map].to_data_uri_comment],
56
56
  ]
57
57
  end
@@ -99,6 +99,6 @@ class Opal::SimpleServer
99
99
  </html>
100
100
  HTML
101
101
  end
102
- [200, { 'Content-Type' => 'text/html' }, [html]]
102
+ [200, { 'content-type' => 'text/html' }, [html]]
103
103
  end
104
104
  end
data/lib/opal/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  module Opal
4
4
  # WHEN RELEASING:
5
5
  # Remember to update RUBY_ENGINE_VERSION in opal/corelib/constants.rb too!
6
- VERSION = '1.7.3'
6
+ VERSION = '1.7.4'
7
7
  end
@@ -1,8 +1,8 @@
1
1
  ::RUBY_PLATFORM = 'opal'
2
2
  ::RUBY_ENGINE = 'opal'
3
3
  ::RUBY_VERSION = '3.2.0'
4
- ::RUBY_ENGINE_VERSION = '1.7.3'
5
- ::RUBY_RELEASE_DATE = '2023-03-23'
4
+ ::RUBY_ENGINE_VERSION = '1.7.4'
5
+ ::RUBY_RELEASE_DATE = '2023-09-14'
6
6
  ::RUBY_PATCHLEVEL = 0
7
7
  ::RUBY_REVISION = '0'
8
8
  ::RUBY_COPYRIGHT = 'opal - Copyright (C) 2011-2023 Adam Beynon and the Opal contributors'
@@ -17,7 +17,10 @@ class ::Regexp < `RegExp`
17
17
  end
18
18
 
19
19
  def escape(string)
20
- `Opal.escape_regexp(string)`
20
+ %x{
21
+ string = $coerce_to(string, #{::String}, 'to_str');
22
+ return Opal.escape_regexp(string);
23
+ }
21
24
  end
22
25
 
23
26
  def last_match(n = nil)
@@ -1863,9 +1863,14 @@
1863
1863
  }
1864
1864
 
1865
1865
  // Optimization for a costly operation of prepending '$' to method names
1866
- var jsid_cache = {}
1866
+ var jsid_cache = new Map();
1867
1867
  function $jsid(name) {
1868
- return jsid_cache[name] || (jsid_cache[name] = '$' + name);
1868
+ var jsid = jsid_cache.get(name);
1869
+ if (!jsid) {
1870
+ jsid = '$' + name;
1871
+ jsid_cache.set(name, jsid);
1872
+ }
1873
+ return jsid;
1869
1874
  }
1870
1875
  Opal.jsid = $jsid;
1871
1876
 
@@ -0,0 +1,13 @@
1
+ describe "Case statement" do
2
+ it "works with JS object-wrapped values" do
3
+ a = false
4
+ objwr = `new String("abc")`
5
+
6
+ case objwr
7
+ when "abc"
8
+ a = true
9
+ end
10
+
11
+ a.should == true
12
+ end
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.3
4
+ version: 1.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elia Schito
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2023-03-23 00:00:00.000000000 Z
13
+ date: 2023-09-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ast
@@ -904,6 +904,7 @@ files:
904
904
  - spec/opal/core/language/DATA/multiple___END___crlf_spec.rb
905
905
  - spec/opal/core/language/DATA/multiple___END___spec.rb
906
906
  - spec/opal/core/language/arguments/mlhs_arg_spec.rb
907
+ - spec/opal/core/language/case_spec.rb
907
908
  - spec/opal/core/language/forward_args_spec.rb
908
909
  - spec/opal/core/language/if_spec.rb
909
910
  - spec/opal/core/language/infinite_range_spec.rb
@@ -1215,10 +1216,10 @@ licenses:
1215
1216
  metadata:
1216
1217
  homepage_uri: https://opalrb.com/
1217
1218
  bug_tracker_uri: https://github.com/opal/opal/issues
1218
- changelog_uri: https://github.com/opal/opal/blob/v1.7.3/CHANGELOG.md
1219
- readme_uri: https://github.com/opal/opal/blob/v1.7.3/README.md
1220
- api_documentation_uri: http://opalrb.com/docs/api/v1.7.3/index.html
1221
- guides_uri: http://opalrb.com/docs/guides/v1.7.3/index.html
1219
+ changelog_uri: https://github.com/opal/opal/blob/v1.7.4/CHANGELOG.md
1220
+ readme_uri: https://github.com/opal/opal/blob/v1.7.4/README.md
1221
+ api_documentation_uri: http://opalrb.com/docs/api/v1.7.4/index.html
1222
+ guides_uri: http://opalrb.com/docs/guides/v1.7.4/index.html
1222
1223
  chat_uri: https://gitter.im/opal/opal
1223
1224
  source_code_uri: https://github.com/opal/opal
1224
1225
  post_install_message: