funicular 0.2.1 → 0.3.0
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 +4 -4
- data/CHANGELOG.md +54 -0
- data/README.md +2 -2
- data/Rakefile +23 -15
- data/demo/test_chartjs.html +17 -17
- data/demo/test_component.html +15 -15
- data/demo/test_error_boundary.html +41 -41
- data/demo/test_router.html +57 -57
- data/demo/tic-tac-toe.html +29 -29
- data/docs/architecture.md +43 -30
- data/lib/funicular/compiler.rb +13 -13
- data/lib/funicular/helpers/picoruby_helper.rb +24 -1
- data/lib/funicular/ssr/runtime.rb +2 -0
- data/lib/funicular/ssr.rb +2 -1
- data/lib/funicular/testing/node_runner.rb +1 -1
- data/lib/funicular/vendor/mrbc/VERSION +1 -0
- data/lib/funicular/vendor/{picorbc/picorbc.js → mrbc/mrbc.js} +14 -1
- data/lib/funicular/vendor/mrbc/mrbc.wasm +0 -0
- data/lib/funicular/vendor/picoruby/VERSION +1 -1
- data/lib/funicular/vendor/picoruby/debug/init.iife.js +19 -4
- data/lib/funicular/vendor/picoruby/debug/picoruby.js +16 -10
- data/lib/funicular/vendor/picoruby/debug/picoruby.wasm +0 -0
- data/lib/funicular/vendor/picoruby/dist/init.iife.js +19 -4
- data/lib/funicular/vendor/picoruby/dist/picoruby.js +1 -1
- data/lib/funicular/vendor/picoruby/dist/picoruby.wasm +0 -0
- data/lib/funicular/vendor/picoruby-test-node/VERSION +1 -1
- data/lib/funicular/vendor/picoruby-test-node/picoruby.js +85 -84
- data/lib/funicular/vendor/picoruby-test-node/picoruby.wasm +0 -0
- data/lib/funicular/vendor/picoruby-test-node/picoruby.wasm.map +1 -1
- data/lib/funicular/version.rb +1 -1
- data/lib/generators/funicular/chat/templates/funicular_chat_component.rb.tt +47 -46
- data/lib/tasks/funicular.rake +1 -1
- data/minitest/commands_routes_test.rb +97 -0
- data/minitest/compiler_test.rb +195 -0
- data/minitest/configuration_test.rb +64 -0
- data/minitest/fixtures/funicular_app/components/greeting_component.rb +6 -6
- data/minitest/form_for_test.rb +2 -2
- data/minitest/funicular_test.rb +28 -2
- data/minitest/hydration_test.rb +2 -2
- data/minitest/middleware_test.rb +154 -0
- data/minitest/picoruby_helper_test.rb +139 -0
- data/minitest/route_parser_test.rb +139 -0
- data/minitest/schema_test.rb +23 -0
- data/minitest/ssr_test.rb +57 -0
- data/minitest/support/rails_stub.rb +59 -0
- data/minitest/test_helper.rb +20 -0
- data/minitest/testing_test.rb +267 -0
- data/minitest/view_context_test.rb +101 -0
- data/mrblib/component.rb +158 -237
- data/mrblib/debug.rb +7 -6
- data/mrblib/differ.rb +3 -1
- data/mrblib/error_boundary.rb +19 -27
- data/mrblib/form_builder.rb +28 -24
- data/mrblib/funicular.rb +2 -1
- data/mrblib/html_serializer.rb +14 -13
- data/mrblib/http.rb +12 -1
- data/mrblib/patcher.rb +12 -9
- data/mrblib/router.rb +9 -5
- data/mrblib/runtime.rb +28 -0
- data/mrblib/styles.rb +13 -17
- data/mrblib/vdom.rb +90 -9
- data/mrblib/view_context.rb +135 -0
- data/sig/component.rbs +34 -85
- data/sig/error_boundary.rbs +4 -4
- data/sig/form_builder.rbs +2 -1
- data/sig/html_serializer.rbs +2 -1
- data/sig/http.rbs +1 -0
- data/sig/patcher.rbs +1 -1
- data/sig/router.rbs +2 -13
- data/sig/runtime.rbs +13 -0
- data/sig/styles.rbs +3 -4
- data/sig/vdom.rbs +11 -2
- data/sig/view_context.rbs +47 -0
- metadata +18 -5
- data/lib/funicular/vendor/picorbc/VERSION +0 -1
- data/lib/funicular/vendor/picorbc/picorbc.wasm +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Funicular
|
|
2
|
+
class ViewContext
|
|
3
|
+
HTML_TAGS: Array[String]
|
|
4
|
+
|
|
5
|
+
def initialize: (Component component) -> void
|
|
6
|
+
def state: () -> Component::StateAccessor
|
|
7
|
+
def props: () -> Hash[Symbol, untyped]
|
|
8
|
+
def resources: () -> Component::ResourceAccessor
|
|
9
|
+
def styles: () -> StyleAccessor
|
|
10
|
+
def routes: () -> untyped
|
|
11
|
+
def tag: (Symbol | String name, ?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
12
|
+
def component: (singleton(Component) component_class, ?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Component
|
|
13
|
+
def form_for: (Symbol model_key, ?Hash[Symbol, untyped] options) { (FormBuilder) -> void } -> VDOM::Element
|
|
14
|
+
def suspense: (Symbol name, fallback: untyped, ?error: untyped) { (ViewContext, Component::ResourceAccessor) -> untyped } -> untyped
|
|
15
|
+
def link_to: (String path, **untyped options) ?{ -> untyped } -> VDOM::Element
|
|
16
|
+
def button_to: (String path, ?method: Symbol, **untyped options) ?{ -> untyped } -> VDOM::Element
|
|
17
|
+
def capture: () { (ViewContext) -> untyped } -> Array[VDOM::child_t]
|
|
18
|
+
def add_child: (untyped child) -> void
|
|
19
|
+
private def build_element: (Symbol | String tag_name, ?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
20
|
+
private def normalize_props: (Hash[Symbol, untyped] props) -> Hash[Symbol, untyped]
|
|
21
|
+
|
|
22
|
+
def div: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
23
|
+
def span: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
24
|
+
def p: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
25
|
+
def a: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
26
|
+
def data: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
27
|
+
def h1: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
28
|
+
def h2: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
29
|
+
def h3: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
30
|
+
def h4: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
31
|
+
def h5: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
32
|
+
def h6: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
33
|
+
def ul: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
34
|
+
def ol: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
35
|
+
def li: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
36
|
+
def table: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
37
|
+
def form: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
38
|
+
def input: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
39
|
+
def textarea: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
40
|
+
def button: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
41
|
+
def select: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
42
|
+
def option: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
43
|
+
def label: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
44
|
+
def nav: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
45
|
+
def canvas: (?Hash[Symbol, untyped] props) ?{ (ViewContext) -> untyped } -> VDOM::Element
|
|
46
|
+
end
|
|
47
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: funicular
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- HASUMI Hitoshi
|
|
@@ -67,9 +67,9 @@ files:
|
|
|
67
67
|
- lib/funicular/testing.rb
|
|
68
68
|
- lib/funicular/testing/node_runner.mjs
|
|
69
69
|
- lib/funicular/testing/node_runner.rb
|
|
70
|
-
- lib/funicular/vendor/
|
|
71
|
-
- lib/funicular/vendor/
|
|
72
|
-
- lib/funicular/vendor/
|
|
70
|
+
- lib/funicular/vendor/mrbc/VERSION
|
|
71
|
+
- lib/funicular/vendor/mrbc/mrbc.js
|
|
72
|
+
- lib/funicular/vendor/mrbc/mrbc.wasm
|
|
73
73
|
- lib/funicular/vendor/picoruby-test-node/VERSION
|
|
74
74
|
- lib/funicular/vendor/picoruby-test-node/picoruby.js
|
|
75
75
|
- lib/funicular/vendor/picoruby-test-node/picoruby.wasm
|
|
@@ -96,16 +96,25 @@ files:
|
|
|
96
96
|
- lib/generators/funicular/chat/templates/initializer.rb.tt
|
|
97
97
|
- lib/generators/funicular/chat/templates/show.html.erb.tt
|
|
98
98
|
- lib/tasks/funicular.rake
|
|
99
|
+
- minitest/commands_routes_test.rb
|
|
100
|
+
- minitest/compiler_test.rb
|
|
101
|
+
- minitest/configuration_test.rb
|
|
99
102
|
- minitest/fixtures/funicular_app/components/greeting_component.rb
|
|
100
103
|
- minitest/fixtures/funicular_app/initializer.rb
|
|
101
104
|
- minitest/form_for_test.rb
|
|
102
105
|
- minitest/funicular_test.rb
|
|
103
106
|
- minitest/hydration_test.rb
|
|
107
|
+
- minitest/middleware_test.rb
|
|
108
|
+
- minitest/picoruby_helper_test.rb
|
|
104
109
|
- minitest/plugin_test.rb
|
|
110
|
+
- minitest/route_parser_test.rb
|
|
105
111
|
- minitest/schema_test.rb
|
|
106
112
|
- minitest/ssr_test.rb
|
|
113
|
+
- minitest/support/rails_stub.rb
|
|
107
114
|
- minitest/test_helper.rb
|
|
115
|
+
- minitest/testing_test.rb
|
|
108
116
|
- minitest/validations_test.rb
|
|
117
|
+
- minitest/view_context_test.rb
|
|
109
118
|
- mrbgem.rake
|
|
110
119
|
- mrblib/0_validations.rb
|
|
111
120
|
- mrblib/1_validators.rb
|
|
@@ -123,11 +132,13 @@ files:
|
|
|
123
132
|
- mrblib/model.rb
|
|
124
133
|
- mrblib/patcher.rb
|
|
125
134
|
- mrblib/router.rb
|
|
135
|
+
- mrblib/runtime.rb
|
|
126
136
|
- mrblib/store.rb
|
|
127
137
|
- mrblib/store_collection.rb
|
|
128
138
|
- mrblib/store_singleton.rb
|
|
129
139
|
- mrblib/styles.rb
|
|
130
140
|
- mrblib/vdom.rb
|
|
141
|
+
- mrblib/view_context.rb
|
|
131
142
|
- sig/cable.rbs
|
|
132
143
|
- sig/component.rbs
|
|
133
144
|
- sig/debug.rbs
|
|
@@ -142,12 +153,14 @@ files:
|
|
|
142
153
|
- sig/model.rbs
|
|
143
154
|
- sig/patcher.rbs
|
|
144
155
|
- sig/router.rbs
|
|
156
|
+
- sig/runtime.rbs
|
|
145
157
|
- sig/store.rbs
|
|
146
158
|
- sig/store_collection.rbs
|
|
147
159
|
- sig/store_singleton.rbs
|
|
148
160
|
- sig/styles.rbs
|
|
149
161
|
- sig/validations.rbs
|
|
150
162
|
- sig/vdom.rbs
|
|
163
|
+
- sig/view_context.rbs
|
|
151
164
|
homepage: https://github.com/picoruby/funicular
|
|
152
165
|
licenses:
|
|
153
166
|
- MIT
|
|
@@ -159,7 +172,7 @@ post_install_message: |2+
|
|
|
159
172
|
|
|
160
173
|
Thank you for installing Funicular!
|
|
161
174
|
|
|
162
|
-
Funicular bundles a WebAssembly build of
|
|
175
|
+
Funicular bundles a WebAssembly build of mrbc, which compiles your
|
|
163
176
|
Ruby code to .mrb bytecode. Make sure Node.js is installed on machines
|
|
164
177
|
that run the compilation.
|
|
165
178
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.0.0
|
|
Binary file
|