opal 1.7.3 → 1.7.4

Sign up to get free protection for your applications and to get access to all the features.
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: