bormashino 0.1.7 → 0.1.9

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: 19046da45e61a5eb600c18e2081d09bd9637ff1b940d05945ec248560de9db01
4
- data.tar.gz: f288a032b1ca977e44080893ad30d86de44e4d6f08718cea2f9b66240cc3c5d4
3
+ metadata.gz: 758d3b4d4b1e008ab0ccc373358c72d394c0bd0e02fad5b6015046fe3bd62c0f
4
+ data.tar.gz: 420598c5d55d678c42fe820b7391952652ab13b42fac6f5f4eb434a93c06d1b0
5
5
  SHA512:
6
- metadata.gz: 6ae99fa09be0419565a648ec7d3f9d01613dbf0f4dd1df12d7db866f4d27aaf5ae38ce107dc1186174ee93fff6a224d2d1864eb686e63520745445ad88c782af
7
- data.tar.gz: c3041acff2f933a2863e0f20f7207b5c1a2a6b423a81a9aa58822a38a5127baaba3679ee1caae0b5529950ec9663e75af8cd6d989baf238621f6a4fb42c460d1
6
+ metadata.gz: e0b73626e6b23da56e56967302c05dad382063a5ef12f09fb6f2e9631cb4f91b87402f6cf4ff677a1fa7ae532a4a7cae939f11625d9b019ca25de573bf16a785
7
+ data.tar.gz: 62792d8ef1d4e85abdd0598447ce5b6edb0f41785867f2006a4ef88fd3ed2ea3930a73bf968fd3219092d9626462d2ece325395b3fc7bc5af41abf147c610395
@@ -1,6 +1,7 @@
1
1
  require 'js'
2
2
 
3
3
  module JS
4
+ # extends ruby.wasm JS::Object to intract with JS
4
5
  class Object
5
6
  def to_rb
6
7
  JSON.parse(JS.global[:JSON].call(:stringify, self).inspect)
@@ -3,6 +3,7 @@ require_relative 'ext/js'
3
3
  require 'cgi'
4
4
 
5
5
  module Bormashino
6
+ # wrapper of Fetch API
6
7
  class Fetch
7
8
  attr_accessor :resource, :init, :resolved_to, :options
8
9
 
@@ -3,6 +3,8 @@ require 'singleton'
3
3
  require_relative 'ext/js'
4
4
 
5
5
  module Bormashino
6
+ # wrapper of LocalStorage API
7
+ # see https://developer.mozilla.org/ja/docs/Web/API/Window/localStorage
6
8
  class LocalStorage
7
9
  include Singleton
8
10
 
@@ -35,6 +37,8 @@ module Bormashino
35
37
  end
36
38
  end
37
39
 
40
+ # wrapper of SessionStorage API
41
+ # see https://developer.mozilla.org/ja/docs/Web/API/Window/sessionStorage
38
42
  class SessionStorage < LocalStorage
39
43
  def initialize
40
44
  super
@@ -1,6 +1,7 @@
1
1
  require 'singleton'
2
2
 
3
3
  module Bormashino
4
+ # LocalStorage mock for unit tests
4
5
  class LocalStorage
5
6
  include Singleton
6
7
  attr_reader :store
@@ -2,6 +2,7 @@ require 'uri'
2
2
  require 'stringio'
3
3
 
4
4
  module Bormashino
5
+ # pseudo rack server module
5
6
  module Server
6
7
  def self.mounted?
7
8
  !@app.nil?
@@ -1,11 +1,13 @@
1
1
  require 'digest/sha2'
2
2
 
3
3
  module OpenSSL
4
+ # stub module which won't work on ruby.wasm
4
5
  module Digest
5
6
  class SHA1; end
6
7
  class SHA256; end
7
8
  end
8
9
 
10
+ # stub module which won't work on ruby.wasm
9
11
  module HMAC
10
12
  def self.hexdigest(_, secret, data)
11
13
  Digest::SHA2.hexdigest("#{secret}#{data}")
@@ -1,10 +1,12 @@
1
1
  module Zlib
2
+ # stub module which won't work on ruby.wasm
2
3
  module Deflate
3
4
  def self.deflate(src)
4
5
  src
5
6
  end
6
7
  end
7
8
 
9
+ # stub module which won't work on ruby.wasm
8
10
  module Inflate
9
11
  def self.inflate(src)
10
12
  src
@@ -3,48 +3,69 @@ require 'uri'
3
3
  require 'os'
4
4
  require 'digest/md5'
5
5
 
6
- RUBY_RELEASE = 'https://github.com/ruby/ruby.wasm/releases/download/2022-04-25-a/ruby-head-wasm32-unknown-wasi-full-js.tar.gz'.freeze
6
+ RELEASE_DATE = ENV['RELEASE_DATE'] || '2022-10-06-a'.freeze
7
+ RUBY_RELEASE = "https://github.com/ruby/ruby.wasm/releases/download/#{RELEASE_DATE}/ruby-head-wasm32-unknown-wasi-full-js.tar.gz".freeze
8
+
7
9
  WASI_VFS_RELEASE = 'https://github.com/kateinoigakukun/wasi-vfs/releases/download/v0.1.1/wasi-vfs-cli-x86_64-unknown-linux-gnu.zip'.freeze
8
10
  WASI_VFS_RELEASE_MAC_X86_64 = 'https://github.com/kateinoigakukun/wasi-vfs/releases/download/v0.1.1/wasi-vfs-cli-x86_64-apple-darwin.zip'.freeze
9
11
  WASI_VFS_RELEASE_MAC_ARM64 = 'https://github.com/kateinoigakukun/wasi-vfs/releases/download/v0.1.1/wasi-vfs-cli-aarch64-apple-darwin.zip'.freeze
10
12
 
11
- RUBY_ROOT = File.basename(URI(RUBY_RELEASE).path).split('.').first.sub('ruby-', '')
13
+ RUBIES = 'rubies'.freeze
14
+ RUBY_ROOT = 'head-wasm32-unknown-wasi-full-js'.freeze
12
15
  WASI_VFS = './wasi-vfs'.freeze
13
16
  TMP = 'tmp'.freeze
14
17
  DIGEST = 'js/ruby-digest.js'.freeze
15
18
 
16
19
  namespace :bormashino do
17
- desc 'download ruby.wasm and wasi-vfs'
18
- task :download do
19
- system "curl -L #{RUBY_RELEASE} | tar xz"
20
- FileUtils.rm(File.join(RUBY_ROOT, '/usr/local/lib/libruby-static.a'))
21
- FileUtils.rm_rf(File.join(RUBY_ROOT, '/usr/local/include'))
22
-
23
- case
24
- when OS.linux?
25
- system "curl -L '#{WASI_VFS_RELEASE}' | gzip -d > wasi-vfs"
26
- when OS.mac?
27
- if OS.host_cpu == 'x86_64'
28
- system "curl -L -o wasi-vfs.zip '#{WASI_VFS_RELEASE_MAC_X86_64}'"
29
- else
30
- system "curl -L -o wasi-vfs.zip '#{WASI_VFS_RELEASE_MAC_ARM64}'"
20
+ desc 'download ruby.wasm'
21
+ task :download_rubywasm do
22
+ FileUtils.mkdir_p(RUBIES)
23
+ Dir.chdir(RUBIES) do
24
+ unless File.exist?(RELEASE_DATE)
25
+ FileUtils.mkdir_p(RELEASE_DATE)
26
+ Dir.chdir(RELEASE_DATE) do
27
+ system "curl -L #{RUBY_RELEASE} | tar xz"
28
+ FileUtils.rm(File.join(RUBY_ROOT, '/usr/local/lib/libruby-static.a'))
29
+ FileUtils.rm_rf(File.join(RUBY_ROOT, '/usr/local/include'))
30
+ end
31
31
  end
32
- system 'unzip wasi-vfs.zip'
33
- system 'rm wasi-vfs.zip'
34
32
  end
33
+ end
34
+
35
+ desc 'download wasi-vfs'
36
+ task :download_wasivfs do
37
+ unless File.exist?(WASI_VFS)
38
+ case
39
+ when OS.linux?
40
+ system "curl -L '#{WASI_VFS_RELEASE}' | gzip -d > wasi-vfs"
41
+ when OS.mac?
42
+ if OS.host_cpu == 'x86_64'
43
+ system "curl -L -o wasi-vfs.zip '#{WASI_VFS_RELEASE_MAC_X86_64}'"
44
+ else
45
+ system "curl -L -o wasi-vfs.zip '#{WASI_VFS_RELEASE_MAC_ARM64}'"
46
+ end
47
+ system 'unzip wasi-vfs.zip'
48
+ system 'rm wasi-vfs.zip'
49
+ end
35
50
 
36
- system 'chmod u+x wasi-vfs'
51
+ system 'chmod u+x wasi-vfs'
52
+ end
37
53
  end
38
54
 
55
+ desc 'download ruby.wasm and wasi-vfs'
56
+ task download: %i[download_wasivfs download_rubywasm]
57
+
39
58
  desc 'embed ruby scripts with wasi-vfs'
40
59
  task :pack, [:additional_args] do |_, args|
60
+ Rake::Task['bormashino:download'].invoke
61
+
41
62
  gem_dir = Gem::Specification.find_by_name('bormashino').gem_dir
42
63
 
43
64
  FileUtils.mkdir_p('tmp')
44
65
  system([
45
66
  "#{WASI_VFS} pack",
46
- "#{RUBY_ROOT}/usr/local/bin/ruby",
47
- "--mapdir /usr::#{RUBY_ROOT}/usr",
67
+ "#{RUBIES}/#{RELEASE_DATE}/#{RUBY_ROOT}/usr/local/bin/ruby",
68
+ "--mapdir /usr::#{RUBIES}/#{RELEASE_DATE}/#{RUBY_ROOT}/usr",
48
69
  '--mapdir /src::./src',
49
70
  "--mapdir /stub::'#{gem_dir}/lib/bormashino/stub'",
50
71
  args[:additional_args],
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bormashino
4
- VERSION = '0.1.7'
4
+ VERSION = '0.1.9'
5
5
  end
data/lib/bormashino.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require_relative 'bormashino/version'
2
2
  require_relative 'bormashino/server'
3
3
 
4
+ # top level module of Bormaŝino
4
5
  module Bormashino
5
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bormashino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenichiro Yasuda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-15 00:00:00.000000000 Z
11
+ date: 2022-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json_pure