bormashino 0.1.8 → 0.1.10

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: a8de488edca64d597da0b74e5e98b0aebdce4113f023b120b01d4070e20e3c0f
4
- data.tar.gz: 6268a47b831d5684baf75d6b00c11b5b2a74f27190883e91286f208699c18055
3
+ metadata.gz: d7650731f51e4d2f69df35a762d376828de22d852f7bc464910213f9f87fe436
4
+ data.tar.gz: 1937d7a97905357a2ebd2a27a4bc6eb4a63756980ebf2347352ba5b32fb0ca0a
5
5
  SHA512:
6
- metadata.gz: 63b5d10ddac58d17fabada628478a76f344c4a3eaee4b307c1c33e9fa3f5b268c1eb5d15d7ffa2ab9d94e0b52dcc30674e99aef973d4926e0aef336ac3e43b90
7
- data.tar.gz: f4000b4278e59ffe53028c722a44f7088933c3a3ef23b60029ed97a4add2855576d3a60bea9c58b297729c838387ff31ddde87bb4ee6d4ee7bf9bc1cfe131087
6
+ metadata.gz: f3dc505193c729e70c5e20b868e0ab5c292500cd4f7738b85dae22d8af064bde856fe8eb0c861466ec3dc299c6058e85ff230a4da6041ee804de5b1b7f30eb56
7
+ data.tar.gz: e3f3b3569e722a4e1e99db3b9663d473b649842ff56be42f8dbdacda61cc352803808b2727b20f735101cc6dcd4453461f21d058e15bb59200dbf0b052e53d57
@@ -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,70 @@ 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-05-30-a/ruby-head-wasm32-unknown-wasi-full-js.tar.gz'.freeze
6
+ RELEASE_DATE = ENV['RELEASE_DATE'] || 'ruby-head-wasm-wasi-0.4.0'.freeze
7
+ # https://github.com/ruby/ruby.wasm/releases/download/ruby-head-wasm-wasi-0.4.0/ruby-head-wasm32-unknown-wasi-full-js.tar.gz
8
+ RUBY_RELEASE = "https://github.com/ruby/ruby.wasm/releases/download/#{RELEASE_DATE}/ruby-head-wasm32-unknown-wasi-full-js.tar.gz".freeze
9
+
7
10
  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
11
  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
12
  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
13
 
11
- RUBY_ROOT = File.basename(URI(RUBY_RELEASE).path).split('.').first.sub('ruby-', '')
14
+ RUBIES = 'rubies'.freeze
15
+ RUBY_ROOT = 'head-wasm32-unknown-wasi-full-js'.freeze
12
16
  WASI_VFS = './wasi-vfs'.freeze
13
17
  TMP = 'tmp'.freeze
14
18
  DIGEST = 'js/ruby-digest.js'.freeze
15
19
 
16
20
  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}'"
21
+ desc 'download ruby.wasm'
22
+ task :download_rubywasm do
23
+ FileUtils.mkdir_p(RUBIES)
24
+ Dir.chdir(RUBIES) do
25
+ unless File.exist?(RELEASE_DATE)
26
+ FileUtils.mkdir_p(RELEASE_DATE)
27
+ Dir.chdir(RELEASE_DATE) do
28
+ system "curl -L #{RUBY_RELEASE} | tar xz"
29
+ FileUtils.rm(File.join(RUBY_ROOT, '/usr/local/lib/libruby-static.a'))
30
+ FileUtils.rm_rf(File.join(RUBY_ROOT, '/usr/local/include'))
31
+ end
31
32
  end
32
- system 'unzip wasi-vfs.zip'
33
- system 'rm wasi-vfs.zip'
34
33
  end
34
+ end
35
+
36
+ desc 'download wasi-vfs'
37
+ task :download_wasivfs do
38
+ unless File.exist?(WASI_VFS)
39
+ case
40
+ when OS.linux?
41
+ system "curl -L '#{WASI_VFS_RELEASE}' | gzip -d > wasi-vfs"
42
+ when OS.mac?
43
+ if OS.host_cpu == 'x86_64'
44
+ system "curl -L -o wasi-vfs.zip '#{WASI_VFS_RELEASE_MAC_X86_64}'"
45
+ else
46
+ system "curl -L -o wasi-vfs.zip '#{WASI_VFS_RELEASE_MAC_ARM64}'"
47
+ end
48
+ system 'unzip wasi-vfs.zip'
49
+ system 'rm wasi-vfs.zip'
50
+ end
35
51
 
36
- system 'chmod u+x wasi-vfs'
52
+ system 'chmod u+x wasi-vfs'
53
+ end
37
54
  end
38
55
 
56
+ desc 'download ruby.wasm and wasi-vfs'
57
+ task download: %i[download_wasivfs download_rubywasm]
58
+
39
59
  desc 'embed ruby scripts with wasi-vfs'
40
60
  task :pack, [:additional_args] do |_, args|
61
+ Rake::Task['bormashino:download'].invoke
62
+
41
63
  gem_dir = Gem::Specification.find_by_name('bormashino').gem_dir
42
64
 
43
65
  FileUtils.mkdir_p('tmp')
44
66
  system([
45
67
  "#{WASI_VFS} pack",
46
- "#{RUBY_ROOT}/usr/local/bin/ruby",
47
- "--mapdir /usr::#{RUBY_ROOT}/usr",
68
+ "#{RUBIES}/#{RELEASE_DATE}/#{RUBY_ROOT}/usr/local/bin/ruby",
69
+ "--mapdir /usr::#{RUBIES}/#{RELEASE_DATE}/#{RUBY_ROOT}/usr",
48
70
  '--mapdir /src::./src',
49
71
  "--mapdir /stub::'#{gem_dir}/lib/bormashino/stub'",
50
72
  args[:additional_args],
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bormashino
4
- VERSION = '0.1.8'
4
+ VERSION = '0.1.10'
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.8
4
+ version: 0.1.10
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-06-15 00:00:00.000000000 Z
11
+ date: 2022-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json_pure