bormashino 0.1.8 → 0.1.9

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: a8de488edca64d597da0b74e5e98b0aebdce4113f023b120b01d4070e20e3c0f
4
- data.tar.gz: 6268a47b831d5684baf75d6b00c11b5b2a74f27190883e91286f208699c18055
3
+ metadata.gz: 758d3b4d4b1e008ab0ccc373358c72d394c0bd0e02fad5b6015046fe3bd62c0f
4
+ data.tar.gz: 420598c5d55d678c42fe820b7391952652ab13b42fac6f5f4eb434a93c06d1b0
5
5
  SHA512:
6
- metadata.gz: 63b5d10ddac58d17fabada628478a76f344c4a3eaee4b307c1c33e9fa3f5b268c1eb5d15d7ffa2ab9d94e0b52dcc30674e99aef973d4926e0aef336ac3e43b90
7
- data.tar.gz: f4000b4278e59ffe53028c722a44f7088933c3a3ef23b60029ed97a4add2855576d3a60bea9c58b297729c838387ff31ddde87bb4ee6d4ee7bf9bc1cfe131087
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-05-30-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.8'
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.8
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-06-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