opal 1.8.1 → 1.8.3.rc1

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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +30 -41
  3. data/.rubocop.yml +3 -1
  4. data/CHANGELOG.md +14 -2
  5. data/Gemfile +1 -0
  6. data/UNRELEASED.md +13 -3
  7. data/docs/compiled_ruby.md +14 -14
  8. data/docs/releasing.md +4 -2
  9. data/exe/opal-build +1 -1
  10. data/lib/opal/compiler.rb +1 -1
  11. data/lib/opal/nodes/call_special.rb +1 -1
  12. data/lib/opal/nodes/literal.rb +1 -1
  13. data/lib/opal/nodes/rescue.rb +1 -1
  14. data/lib/opal/nodes/scope.rb +1 -1
  15. data/lib/opal/version.rb +1 -1
  16. data/opal/corelib/array.rb +1 -1
  17. data/opal/corelib/basic_object.rb +1 -1
  18. data/opal/corelib/constants.rb +3 -3
  19. data/opal/corelib/error.rb +16 -1
  20. data/opal/corelib/hash.rb +1 -1
  21. data/opal/corelib/io.rb +1 -1
  22. data/opal/corelib/module.rb +1 -1
  23. data/opal/corelib/object_space.rb +1 -1
  24. data/opal/corelib/runtime.js +2 -2
  25. data/opal/corelib/string/encoding.rb +6 -6
  26. data/opal/corelib/string.rb +3 -3
  27. data/opal.gemspec +2 -1
  28. data/spec/lib/compiler_spec.rb +16 -6
  29. data/spec/lib/fixtures/build_order/file5.rb.erb +1 -1
  30. data/spec/lib/rewriters/hashes/key_duplicates_rewriter_spec.rb +1 -1
  31. data/spec/lib/spec_helper.rb +11 -0
  32. data/spec/opal/core/array/include_spec.rb +12 -0
  33. data/spec/opal/core/runtime/rescue_spec.rb +5 -5
  34. data/spec/opal/core/string_spec.rb +35 -0
  35. data/spec/opal/stdlib/native/hash_spec.rb +2 -2
  36. data/spec/opal/stdlib/opal_raw_spec.rb +74 -0
  37. data/spec/support/source_map_helper.rb +1 -3
  38. data/stdlib/bigdecimal.rb +14 -14
  39. data/stdlib/date/date_time.rb +1 -1
  40. data/stdlib/deno/file.rb +1 -1
  41. data/stdlib/js.rb +7 -66
  42. data/stdlib/native.rb +3 -3
  43. data/stdlib/nodejs/file.rb +7 -7
  44. data/stdlib/opal/raw.rb +73 -0
  45. data/stdlib/optparse.rb +6 -6
  46. data/stdlib/shellwords.rb +1 -1
  47. data/tasks/testing.rake +13 -2
  48. metadata +27 -10
  49. data/spec/opal/stdlib/js_spec.rb +0 -74
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.8.1
4
+ version: 1.8.3.rc1
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-11-09 00:00:00.000000000 Z
13
+ date: 2024-08-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ast
@@ -26,6 +26,20 @@ dependencies:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: 2.3.0
29
+ - !ruby/object:Gem::Dependency
30
+ name: base64
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 0.2.0
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.2.0
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: parser
31
45
  requirement: !ruby/object:Gem::Requirement
@@ -164,14 +178,14 @@ dependencies:
164
178
  requirements:
165
179
  - - "~>"
166
180
  - !ruby/object:Gem::Version
167
- version: '3.0'
181
+ version: '3.2'
168
182
  type: :development
169
183
  prerelease: false
170
184
  version_requirements: !ruby/object:Gem::Requirement
171
185
  requirements:
172
186
  - - "~>"
173
187
  - !ruby/object:Gem::Version
174
- version: '3.0'
188
+ version: '3.2'
175
189
  - !ruby/object:Gem::Dependency
176
190
  name: rubocop
177
191
  requirement: !ruby/object:Gem::Requirement
@@ -850,6 +864,7 @@ files:
850
864
  - spec/opal/compiler/irb_spec.rb
851
865
  - spec/opal/compiler/unicode_spec.rb
852
866
  - spec/opal/core/array/dup_spec.rb
867
+ - spec/opal/core/array/include_spec.rb
853
868
  - spec/opal/core/array/intersection_spec.rb
854
869
  - spec/opal/core/array/minus_spec.rb
855
870
  - spec/opal/core/array/union_spec.rb
@@ -963,7 +978,6 @@ files:
963
978
  - spec/opal/stdlib/erb/inline_block.opalerb
964
979
  - spec/opal/stdlib/erb/quoted.opalerb
965
980
  - spec/opal/stdlib/erb/simple.opalerb
966
- - spec/opal/stdlib/js_spec.rb
967
981
  - spec/opal/stdlib/json/ext_spec.rb
968
982
  - spec/opal/stdlib/json/parse_spec.rb
969
983
  - spec/opal/stdlib/logger/logger_spec.rb
@@ -985,6 +999,7 @@ files:
985
999
  - spec/opal/stdlib/native/native_writer_spec.rb
986
1000
  - spec/opal/stdlib/native/new_spec.rb
987
1001
  - spec/opal/stdlib/native/struct_spec.rb
1002
+ - spec/opal/stdlib/opal_raw_spec.rb
988
1003
  - spec/opal/stdlib/pp_spec.rb
989
1004
  - spec/opal/stdlib/promise/always_spec.rb
990
1005
  - spec/opal/stdlib/promise/error_spec.rb
@@ -1136,6 +1151,7 @@ files:
1136
1151
  - stdlib/opal-source-maps.rb
1137
1152
  - stdlib/opal/miniracer.rb
1138
1153
  - stdlib/opal/platform.rb
1154
+ - stdlib/opal/raw.rb
1139
1155
  - stdlib/opal/repl_js.rb
1140
1156
  - stdlib/open-uri.rb
1141
1157
  - stdlib/optparse.rb
@@ -1230,10 +1246,10 @@ licenses:
1230
1246
  metadata:
1231
1247
  homepage_uri: https://opalrb.com/
1232
1248
  bug_tracker_uri: https://github.com/opal/opal/issues
1233
- changelog_uri: https://github.com/opal/opal/blob/v1.8.1/CHANGELOG.md
1234
- readme_uri: https://github.com/opal/opal/blob/v1.8.1/README.md
1235
- api_documentation_uri: http://opalrb.com/docs/api/v1.8.1/index.html
1236
- guides_uri: http://opalrb.com/docs/guides/v1.8.1/index.html
1249
+ changelog_uri: https://github.com/opal/opal/blob/v1.8.3.rc1/CHANGELOG.md
1250
+ readme_uri: https://github.com/opal/opal/blob/v1.8.3.rc1/README.md
1251
+ api_documentation_uri: http://opalrb.com/docs/api/v1.8.3.rc1/index.html
1252
+ guides_uri: http://opalrb.com/docs/guides/v1.8.3.rc1/index.html
1237
1253
  chat_uri: https://gitter.im/opal/opal
1238
1254
  source_code_uri: https://github.com/opal/opal
1239
1255
  post_install_message:
@@ -1251,7 +1267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1251
1267
  - !ruby/object:Gem::Version
1252
1268
  version: '0'
1253
1269
  requirements: []
1254
- rubygems_version: 3.4.5
1270
+ rubygems_version: 3.5.11
1255
1271
  signing_key:
1256
1272
  specification_version: 4
1257
1273
  summary: Ruby runtime and core library for JavaScript
@@ -1832,6 +1848,7 @@ test_files:
1832
1848
  - stdlib/opal-source-maps.rb
1833
1849
  - stdlib/opal/miniracer.rb
1834
1850
  - stdlib/opal/platform.rb
1851
+ - stdlib/opal/raw.rb
1835
1852
  - stdlib/opal/repl_js.rb
1836
1853
  - stdlib/open-uri.rb
1837
1854
  - stdlib/optparse.rb
@@ -1,74 +0,0 @@
1
- # backtick_javascript: true
2
-
3
- require 'spec_helper'
4
- require 'js'
5
-
6
- describe 'javascript operations using JS module' do
7
- it 'JS.typeof uses typeof to return underlying javascript type' do
8
- [1, `null`, `undefined`, Object.new, [], ""].each do |v|
9
- JS.typeof(v).should == `typeof #{v}`
10
- end
11
- end
12
-
13
- it 'JS.new uses new to create new instance' do
14
- f = `function(){}`
15
- f.JS[:prototype].JS[:color] = 'black'
16
- JS.new(f).JS[:color].should == 'black'
17
- end
18
-
19
- it 'JS.new handles blocks' do
20
- f = `function(a){this.a = a}`
21
- JS.new(f){1}.JS.a.should == 1
22
- end
23
-
24
- it 'JS.instanceof uses instanceof to check if value is an instance of a function' do
25
- f = `function(){}`
26
- JS.instanceof(JS.new(f), f).should == true
27
- JS.instanceof(JS.new(f), `function(){}`).should == false
28
- end
29
-
30
- it 'JS.delete uses delete to remove properties from objects' do
31
- f = `{a:1}`
32
- f.JS[:a].should == 1
33
- JS.delete(f, :a)
34
- `#{f.JS[:a]} === undefined`.should == true
35
- end
36
-
37
- it 'JS.in uses in to check for properties in objects' do
38
- f = `{a:1}`
39
- JS.in(:a, f).should == true
40
- JS.in(:b, f).should == false
41
- end
42
-
43
- it 'JS.void returns undefined' do
44
- f = 1
45
- `#{JS.void(f += 1)} === undefined`.should == true
46
- f.should == 2
47
- end
48
-
49
- it 'JS.call calls global javascript methods' do
50
- JS.call(:parseFloat, '1.0').should == 1
51
- JS.call(:parseInt, '1').should == 1
52
- JS.call(:eval, "({a:1})").JS[:a].should == 1
53
- end
54
-
55
- it 'JS.method_missing calls global javascript methods' do
56
- JS.parseFloat('1.0').should == 1
57
- JS.parseInt('1').should == 1
58
- end
59
-
60
- it 'JS.call calls global javascript methods with blocks' do
61
- begin
62
- JS.global.JS[:_test_global_function] = lambda{|pr| pr.call + 1}
63
- JS._test_global_function{1}.should == 2
64
- ensure
65
- JS.delete(JS.global, :_test_global_function)
66
- end
67
- end
68
-
69
- it 'JS.<METHOD> supports complex method calls' do
70
- obj = `{ foo: function(){return "foo"} }`
71
- args = [1,2,3]
72
- obj.JS.foo(*args).should == :foo
73
- end
74
- end