flok 0.0.36 → 0.0.38

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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -0
  3. data/app/drivers/chrome/build_context.rb +1 -1
  4. data/app/drivers/chrome/config.yml +10 -0
  5. data/app/drivers/chrome/pipe.rb +24 -1
  6. data/app/drivers/chrome/src/persist.js +29 -0
  7. data/app/drivers/chrome/src/sockio.js +3 -1
  8. data/app/drivers/chrome/src/vendor/store2.js +3 -0
  9. data/app/kern/callout.js +55 -0
  10. data/app/kern/controller.js +3 -0
  11. data/app/kern/crc32.js +22 -0
  12. data/app/kern/dispatch.js +16 -0
  13. data/app/kern/mod/event.js +3 -0
  14. data/app/kern/mod/persist.js +1 -0
  15. data/app/kern/mod/timer.js +5 -0
  16. data/app/kern/pagers/mem_pager.js +2 -0
  17. data/app/kern/pagers/sockio_pager.js +66 -0
  18. data/app/kern/pagers/spec0.js +35 -0
  19. data/app/kern/pagers/spec1.js +24 -0
  20. data/app/kern/pagers/spec2.js +31 -0
  21. data/app/kern/services/test.rb +7 -0
  22. data/app/kern/services/vm.rb +141 -0
  23. data/app/kern/spec_helper.js +5 -0
  24. data/bin/flok +27 -5
  25. data/docs/callout.md +8 -0
  26. data/docs/client_api.md +1 -1
  27. data/docs/compilation.md +14 -8
  28. data/docs/controllers.md +2 -1
  29. data/docs/datatypes.md +3 -1
  30. data/docs/environmentals.md +6 -0
  31. data/docs/interactive.md +6 -1
  32. data/docs/kernel_api.md +3 -0
  33. data/docs/mod/event.md +5 -1
  34. data/docs/mod/persist.md +14 -31
  35. data/docs/mod/timer.md +4 -2
  36. data/docs/project.md +16 -5
  37. data/docs/scheduling.md +1 -0
  38. data/docs/services.md +141 -56
  39. data/docs/services/vm.md +128 -0
  40. data/docs/services/vm/pagers.md +46 -0
  41. data/lib/flok/build.rb +11 -16
  42. data/lib/flok/platform.rb +29 -6
  43. data/lib/flok/project_template/app/scripts/script.js +3 -0
  44. data/lib/flok/project_template/app/services/service.rb +1 -0
  45. data/lib/flok/project_template/config/config.yml +1 -0
  46. data/lib/flok/project_template/config/platforms/chrome/config.yml +1 -0
  47. data/lib/flok/project_template/config/services.rb +1 -0
  48. data/lib/flok/service_compiler_templates/services.js.erb +78 -9
  49. data/lib/flok/services_compiler.rb +117 -20
  50. data/lib/flok/user_compiler.rb +14 -6
  51. data/lib/flok/user_compiler_templates/ctable.js.erb +10 -0
  52. data/lib/flok/version.rb +1 -1
  53. data/spec/env/etc.rb +1 -1
  54. data/spec/env/global.rb +2 -0
  55. data/spec/env/iface.rb +20 -4
  56. data/spec/env/kern.rb +8 -3
  57. data/spec/etc/cli_spec.rb +319 -165
  58. data/spec/etc/lib/assets/config.yml +3 -0
  59. data/spec/etc/lib/platform_spec.rb +14 -10
  60. data/spec/etc/lib/project_spec.rb +22 -0
  61. data/spec/etc/service_compiler/config0.rb +1 -0
  62. data/spec/etc/service_compiler/config1.rb +1 -0
  63. data/spec/etc/service_compiler/config2.rb +3 -0
  64. data/spec/etc/service_compiler/service0.rb +22 -6
  65. data/spec/etc/service_compiler/service1.rb +26 -0
  66. data/spec/etc/service_compiler/service_bad_type.rb +20 -0
  67. data/spec/etc/services_compiler_spec.rb +35 -16
  68. data/spec/etc/user_compiler/data.js +2 -0
  69. data/spec/etc/user_compiler_spec.rb +7 -1
  70. data/spec/iface/driver/persist_spec.rb +106 -0
  71. data/spec/iface/driver/pipe_spec.rb +5 -0
  72. data/spec/iface/kern/ping_spec.rb +4 -3
  73. data/spec/kern/assets/blank.rb +0 -0
  74. data/spec/kern/assets/service0.rb +24 -0
  75. data/spec/kern/assets/service1.rb +22 -0
  76. data/spec/kern/assets/service2.rb +27 -0
  77. data/spec/kern/assets/service_config0.rb +2 -0
  78. data/spec/kern/assets/service_config1.rb +2 -0
  79. data/spec/kern/assets/service_controller0.rb +13 -0
  80. data/spec/kern/assets/service_controller1.rb +32 -0
  81. data/spec/kern/assets/service_controller2.rb +38 -0
  82. data/spec/kern/assets/service_controller3.rb +38 -0
  83. data/spec/kern/assets/vm/config0.rb +2 -0
  84. data/spec/kern/assets/vm/config1.rb +12 -0
  85. data/spec/kern/assets/vm/config2.rb +12 -0
  86. data/spec/kern/assets/vm/config3.rb +12 -0
  87. data/spec/kern/assets/vm/controller0.rb +8 -0
  88. data/spec/kern/assets/vm/controller1.rb +18 -0
  89. data/spec/kern/assets/vm/controller2.rb +18 -0
  90. data/spec/kern/assets/vm/controller3.rb +20 -0
  91. data/spec/kern/assets/vm/controller4.rb +22 -0
  92. data/spec/kern/assets/vm/controller5.rb +22 -0
  93. data/spec/kern/assets/vm/controller6.rb +21 -0
  94. data/spec/kern/assets/vm/service0.rb +24 -0
  95. data/spec/kern/assets/vm/service_controller0.rb +7 -0
  96. data/spec/kern/callout_spec.rb +153 -0
  97. data/spec/kern/functions_spec.rb +29 -0
  98. data/spec/kern/service_controller_spec.rb +213 -0
  99. data/spec/kern/vm_service_spec.rb +195 -0
  100. metadata +98 -12
  101. data/app/kern/services/rest.rb +0 -310
  102. data/app/kern/services/timer.rb +0 -30
  103. data/docs/services/timer.md +0 -21
  104. data/spec/kern/assets/rest_service.rb +0 -20
  105. data/spec/kern/assets/timer_service.rb +0 -19
  106. data/spec/kern/timer_service_spec.rb +0 -40
@@ -0,0 +1,29 @@
1
+ #Generic kernel functions
2
+
3
+ Dir.chdir File.join File.dirname(__FILE__), '../../'
4
+ require './spec/env/kern.rb'
5
+ require './spec/lib/helpers.rb'
6
+ require './spec/lib/io_extensions.rb'
7
+ require './spec/lib/rspec_extensions.rb'
8
+
9
+ RSpec.describe "kern:functions_spec" do
10
+ include_context "kern"
11
+
12
+ it "can use crc32" do
13
+ ctx = flok_new_user File.read('./spec/kern/assets/controller0.rb')
14
+
15
+ #Run the check
16
+ res = ctx.eval("crc32(0, 'test')")
17
+ expect(res).to eq(3632233996)
18
+ end
19
+
20
+ it "can use crc32 multiple times" do
21
+ ctx = flok_new_user File.read('./spec/kern/assets/controller0.rb')
22
+
23
+ #Run the check
24
+ res = ctx.eval("crc32(crc32(0, 'test'), 'test2')")
25
+ res2 = ctx.eval("crc32(crc32(0, 'test2'), 'test')")
26
+ expect(res).not_to eq(res2)
27
+ end
28
+
29
+ end
@@ -0,0 +1,213 @@
1
+ #Anything and everything to do with view controllers (not directly UI) above the driver level
2
+
3
+ Dir.chdir File.join File.dirname(__FILE__), '../../'
4
+ require './spec/env/kern.rb'
5
+ require './spec/lib/helpers.rb'
6
+ require './spec/lib/io_extensions.rb'
7
+ require './spec/lib/rspec_extensions.rb'
8
+
9
+ RSpec.describe "kern:service_controller_spec" do
10
+ include_context "kern"
11
+
12
+ it "service can be used inside a controller" do
13
+ #Compile the controller
14
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller0.rb'), File.read("./spec/kern/assets/service_config0.rb")
15
+
16
+ #Run the embed function
17
+ ctx.eval %{
18
+ //Call embed on main root view
19
+ base = _embed("my_controller", 0, {}, null);
20
+
21
+ //Drain queue
22
+ int_dispatch([]);
23
+ }
24
+
25
+ base = ctx.eval("base")
26
+
27
+ @driver.mexpect("if_init_view", ["my_controller", {}, base+1, ["main", "hello", "world"]])
28
+ @driver.mexpect("if_controller_init", [base, base+1, "my_controller", {}])
29
+ @driver.mexpect("if_attach_view", [base+1, 0])
30
+ @driver.mexpect("if_event", [base, "action", {"from" => nil, "to" => "my_action"}])
31
+ end
32
+
33
+ it "service can use the global block to create static functions" do
34
+ #Compile the controller
35
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller0.rb'), File.read("./spec/kern/assets/service_config0.rb")
36
+
37
+ #Run the embed function
38
+ ctx.eval %{
39
+ spec_function(3);
40
+ }
41
+ expect(ctx.eval("spec_function_args")).to eq(3)
42
+ end
43
+
44
+ it "Does call the wakeup and the connect for service when a controller is opened" do
45
+ #Compile the controller
46
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller0.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service0.rb")
47
+
48
+ #Run the embed function
49
+ ctx.eval %{
50
+ //Call embed on main root view
51
+ base = _embed("my_controller", 0, {}, null);
52
+
53
+ //Drain queue
54
+ int_dispatch([]);
55
+ }
56
+
57
+ expect(ctx.eval("on_wakeup_called")).to eq(true)
58
+ expect(ctx.eval("on_connect_called")).to eq(true)
59
+ end
60
+
61
+ it "Does signal disconnect to the service" do
62
+ #Compile the controller
63
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller1.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service0.rb")
64
+
65
+ #Run the embed function
66
+ ctx.eval %{
67
+ //Call embed on main root view
68
+ base = _embed("my_controller", 0, {}, null);
69
+
70
+ //Drain queue
71
+ int_dispatch([3, "int_event", base, "next", {}]);
72
+ }
73
+
74
+ expect(ctx.eval("on_disconnect_called")).to eq(true)
75
+ end
76
+
77
+ it "Does send a controller a timed signal when it is connected" do
78
+ #Compile the controller
79
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller0.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service0.rb")
80
+
81
+ #Run the embed function
82
+ ctx.eval %{
83
+ //Call embed on main root view
84
+ base = _embed("my_controller", 0, {}, null);
85
+ }
86
+
87
+ @driver.int "int_timer"
88
+ @driver.int "int_timer"
89
+ @driver.int "int_timer"
90
+ @driver.int "int_timer"
91
+ expect(ctx.eval("ping_called")).to eq(true)
92
+ end
93
+
94
+ it "Does sleep when there are no more sessions" do
95
+ #Compile the controller
96
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller1.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service0.rb")
97
+
98
+ #Run the embed function
99
+ ctx.eval %{
100
+ //Call embed on main root view
101
+ base = _embed("my_controller", 0, {}, null);
102
+
103
+ //Drain queue
104
+ int_dispatch([3, "int_event", base, "next", {}]);
105
+ }
106
+
107
+ expect(ctx.eval("on_sleep_called")).to eq(true)
108
+ end
109
+
110
+ it "No longer receives timer events when it is not awake" do
111
+ #Compile the controller
112
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller1.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service1.rb")
113
+
114
+ #Run the embed function
115
+ ctx.eval %{
116
+ //Call embed on main root view
117
+ base = _embed("my_controller", 0, {}, null);
118
+
119
+ //Drain queue
120
+ int_dispatch([3, "int_event", base, "next", {}]);
121
+ }
122
+
123
+ 100.times do
124
+ @driver.int "int_timer"
125
+ end
126
+
127
+ expect(ctx.eval("every_ticks")).to eq(0)
128
+ end
129
+
130
+ it "Receives timer events when it is re-activated" do
131
+ #Compile the controller
132
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller1.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service1.rb")
133
+
134
+ #Run the embed function
135
+ ctx.eval %{
136
+ //Call embed on main root view
137
+ base = _embed("my_controller", 0, {}, null);
138
+
139
+ //Drain queue
140
+ int_dispatch([3, "int_event", base, "next", {}]);
141
+ }
142
+
143
+ 100.times do
144
+ @driver.int "int_timer"
145
+ end
146
+
147
+ #Now we are going back to the other action, which should wake it up
148
+ ctx.eval %{
149
+ //Drain queue
150
+ int_dispatch([3, "int_event", base, "next", {}]);
151
+ }
152
+
153
+ 100.times do
154
+ @driver.int "int_timer"
155
+ end
156
+
157
+ expect(ctx.eval("every_ticks")).to eq(25)
158
+ end
159
+
160
+ it "Does have all the right variables after sending a custom event to the service and a timer event has fired" do
161
+ #Compile the controller
162
+ ctx = flok_new_user File.read('./spec/kern/assets/service_controller2.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service2.rb")
163
+
164
+ #Run the embed function
165
+ ctx.eval %{
166
+ //Call embed on main root view
167
+ base = _embed("my_controller", 0, {}, null);
168
+ }
169
+
170
+ #Base pointer of the controller that uses the service
171
+ my_base = ctx.eval("my_base")
172
+
173
+ #Need to get timer first because the first controller holds the timer
174
+ 100.times do
175
+ @driver.int "int_timer"
176
+ end
177
+
178
+ #Next will now cause a disconnect (controller no longer holds service)
179
+ ctx.eval %{
180
+ int_dispatch([3, "int_event", base, "next", {}]);
181
+ }
182
+
183
+ connect_sessions = JSON.parse(ctx.eval("JSON.stringify(connect_sessions)"))
184
+ disconnect_bp = ctx.eval("disconnect_bp")
185
+ disconnect_sessions = JSON.parse(ctx.eval("JSON.stringify(disconnect_sessions)"))
186
+ every_ticks_sessions= JSON.parse(ctx.eval("JSON.stringify(every_ticks_sessions)"))
187
+ ping_bp = ctx.eval("ping_bp")
188
+ ping_params = JSON.parse(ctx.eval("JSON.stringify(ping_params)"))
189
+ ping_sessions = JSON.parse(ctx.eval("JSON.stringify(ping_sessions)"))
190
+
191
+ #We need to convert to strings because we're using Object.keys to verify hashes
192
+ #Connect happends when my_other_controller is embedded
193
+ expect(connect_sessions).to eq([my_base.to_s])
194
+
195
+ #Disconnect happends when my_controller switches to my_other_action
196
+ expect(disconnect_bp).to eq(my_base)
197
+ expect(disconnect_sessions).to eq([])
198
+
199
+ #Timer was fired before we switched to no service instance
200
+ expect(every_ticks_sessions).to eq([my_base.to_s])
201
+
202
+ #Ping is hit during the service
203
+ expect(ping_bp).to eq(7)
204
+ expect(ping_params).to eq({"hello" => "world"})
205
+ expect(ping_sessions).to eq([my_base.to_s])
206
+ end
207
+
208
+ it "fails to compile when trying to Request() with something not defined in services" do
209
+ #Compile the controller
210
+ expect { flok_new_user File.read('./spec/kern/assets/service_controller3.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service2.rb")
211
+ }.to raise_exception
212
+ end
213
+ end
@@ -0,0 +1,195 @@
1
+ #Anything and everything to do with view controllers (not directly UI) above the driver level
2
+
3
+ Dir.chdir File.join File.dirname(__FILE__), '../../'
4
+ require './spec/env/kern.rb'
5
+ require './spec/lib/helpers.rb'
6
+ require './spec/lib/io_extensions.rb'
7
+ require './spec/lib/rspec_extensions.rb'
8
+
9
+ RSpec.describe "kern:vm_service" do
10
+ include_context "kern"
11
+
12
+ #it "Can be used inside a controller" do
13
+ ##Compile the controller
14
+ #ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config0.rb")
15
+
16
+ ##Run the embed function
17
+ #ctx.eval %{
18
+ #//Call embed on main root view
19
+ #base = _embed("my_controller", 0, {}, null);
20
+
21
+ #//Drain queue
22
+ #int_dispatch([]);
23
+ #}
24
+
25
+ #base = ctx.eval("base")
26
+ #res = ctx.eval("vm_did_wakeup")
27
+ #expect(res).to eq(true)
28
+ #end
29
+
30
+ #it "Does pass options to spec0 in init" do
31
+ ##Compile the controller
32
+ #ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config1.rb")
33
+
34
+ ##Run the embed function
35
+ #ctx.eval %{
36
+ #//Call embed on main root view
37
+ #base = _embed("my_controller", 0, {}, null);
38
+
39
+ #//Drain queue
40
+ #int_dispatch([]);
41
+ #}
42
+
43
+ #base = ctx.eval("base")
44
+ #res = JSON.parse(ctx.eval("JSON.stringify(spec0_init_options)"))
45
+ #expect(res).to eq({"hello" => "world"})
46
+ #end
47
+
48
+ #it "Can include the spec0 pager and call read_sync" do
49
+ ##Compile the controller
50
+ #ctx = flok_new_user File.read('./spec/kern/assets/vm/controller1.rb'), File.read("./spec/kern/assets/vm/config1.rb")
51
+
52
+ ##Run the embed function
53
+ #ctx.eval %{
54
+ #//Call embed on main root view
55
+ #base = _embed("my_controller", 0, {}, null);
56
+
57
+ #//Drain queue
58
+ #int_dispatch([]);
59
+ #}
60
+
61
+ ##Verify that the vm service is getting the read_sync request
62
+ #res = ctx.eval("vm_read_sync_called")
63
+ #expect(res).to eq(true)
64
+
65
+ ##Verify that the vm service is disptaching the request
66
+ #res = ctx.eval("spec0_read_sync_called")
67
+ #expect(res).to eq(true)
68
+ #end
69
+
70
+ #it "Can include the spec0 pager and call read_sync and then get a reply" do
71
+ ##Compile the controller
72
+ #ctx = flok_new_user File.read('./spec/kern/assets/vm/controller1.rb'), File.read("./spec/kern/assets/vm/config1.rb")
73
+
74
+ ##Run the embed function
75
+ #ctx.eval %{
76
+ #//Call embed on main root view
77
+ #base = _embed("my_controller", 0, {}, null);
78
+
79
+ #//Drain queue
80
+ #int_dispatch([]);
81
+ #}
82
+
83
+ ##Verify that the read did return from the spec0 pager
84
+ #res = ctx.eval("read_res_params")
85
+ #expect(res).not_to eq(nil)
86
+ #end
87
+
88
+
89
+ #it "Can include the spec0 pager and call read and then get a reply" do
90
+ ##Compile the controller
91
+ #ctx = flok_new_user File.read('./spec/kern/assets/vm/controller2.rb'), File.read("./spec/kern/assets/vm/config1.rb")
92
+
93
+ ##Run the embed function
94
+ #ctx.eval %{
95
+ #//Call embed on main root view
96
+ #base = _embed("my_controller", 0, {}, null);
97
+
98
+ #//Drain queue
99
+ #int_dispatch([]);
100
+ #}
101
+
102
+ ##Verify that the read did return from the spec0 pager
103
+ #res = ctx.eval("read_res_params")
104
+ #expect(res).not_to eq(nil)
105
+ #end
106
+
107
+ #it "Can include the spec0 pager and call write and and then read to get a reply" do
108
+ ##Compile the controller
109
+ #ctx = flok_new_user File.read('./spec/kern/assets/vm/controller3.rb'), File.read("./spec/kern/assets/vm/config1.rb")
110
+
111
+ ##Run the embed function
112
+ #ctx.eval %{
113
+ #//Call embed on main root view
114
+ #base = _embed("my_controller", 0, {}, null);
115
+
116
+ #//Drain queue
117
+ #int_dispatch([]);
118
+ #}
119
+
120
+ ##Verify that the read did return from the spec0 pager
121
+ #res = JSON.parse(ctx.eval("JSON.stringify(read_res_params)"))
122
+ #expect(res).to eq({
123
+ #"key" => 33,
124
+ #"value" => 22
125
+ #})
126
+ #end
127
+
128
+ # it "Write then read does will hit the pager for the read, a write is not guaranteed to be 1 to 1 but a read is, additionally, the reads only went through once" do
129
+ ##Compile the controller
130
+ #ctx = flok_new_user File.read('./spec/kern/assets/vm/controller4.rb'), File.read("./spec/kern/assets/vm/config1.rb")
131
+
132
+ ##Run the embed function
133
+ #ctx.eval %{
134
+ #//Call embed on main root view
135
+ #base = _embed("my_controller", 0, {}, null);
136
+
137
+ #//Drain queue
138
+ #int_dispatch([]);
139
+ #}
140
+
141
+ #expect(ctx.eval("spec0_read_count")).to eq(1)
142
+ #end
143
+
144
+ #it "Can read through and then send another read_res for a change on the page" do
145
+ ##Compile the controller
146
+ #ctx = flok_new_user File.read('./spec/kern/assets/vm/controller5.rb'), File.read("./spec/kern/assets/vm/config2.rb")
147
+
148
+ ##Run the embed function
149
+ #ctx.eval %{
150
+ #//Call embed on main root view
151
+ #base = _embed("my_controller", 0, {}, null);
152
+
153
+ #//Drain queue
154
+ #int_dispatch([]);
155
+ #}
156
+
157
+ ##read_res from spec is called multiple times and returns an array of the parms
158
+ #res = JSON.parse(ctx.eval("JSON.stringify(read_res_called_with)"))
159
+
160
+ ##Expect 2 responses, first is cache miss, second is cache hit, third is cache updated
161
+ #expect(res).to eq [
162
+ #{"key" => "my_key", "value" => "a"},
163
+ #{"key" => "my_key", "value" => "a"},
164
+ #{"key" => "my_key", "value" => "b"}
165
+ #]
166
+ #end
167
+
168
+ it "Can watch a key and then be sent a read_res whenever that key changes" do
169
+ #Compile the controller
170
+ ctx = flok_new_user File.read('./spec/kern/assets/vm/controller6.rb'), File.read("./spec/kern/assets/vm/config3.rb")
171
+
172
+ #Run the embed function
173
+ ctx.eval %{
174
+ //Call embed on main root view
175
+ base = _embed("my_controller", 0, {}, null);
176
+
177
+ //Drain queue
178
+ int_dispatch([]);
179
+ }
180
+
181
+ #Trigger notification
182
+ ctx.eval("spec2_spec_trigger()")
183
+
184
+ #read_res from spec is called multiple times and returns an array of the parms
185
+ res = JSON.parse(ctx.eval("JSON.stringify(read_res_called_with)"))
186
+
187
+ #Expect 2 responses, first is cache miss, second is cache hit, third is cache updated
188
+ expect(res).to eq [
189
+ {"key" => "my_key", "value" => "a"},
190
+ {"key" => "my_key", "value" => "a"},
191
+ {"key" => "my_key", "value" => "b"}
192
+ ]
193
+ end
194
+
195
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flok
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.36
4
+ version: 0.0.38
5
5
  platform: ruby
6
6
  authors:
7
7
  - seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-01 00:00:00.000000000 Z
11
+ date: 2015-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: execjs
@@ -284,35 +284,49 @@ files:
284
284
  - app/drivers/chrome/src/event.js
285
285
  - app/drivers/chrome/src/helpers.js
286
286
  - app/drivers/chrome/src/net.js
287
+ - app/drivers/chrome/src/persist.js
287
288
  - app/drivers/chrome/src/segue.js
288
289
  - app/drivers/chrome/src/sockio.js
289
290
  - app/drivers/chrome/src/timer.js
290
291
  - app/drivers/chrome/src/ui.js
291
292
  - app/drivers/chrome/src/vendor/jquery.js
292
293
  - app/drivers/chrome/src/vendor/socket.io.js
294
+ - app/drivers/chrome/src/vendor/store2.js
295
+ - app/kern/callout.js
293
296
  - app/kern/controller.js
297
+ - app/kern/crc32.js
294
298
  - app/kern/dispatch.js
295
299
  - app/kern/macro.rb
296
300
  - app/kern/mod/controller.js
297
301
  - app/kern/mod/debug.js
298
302
  - app/kern/mod/event.js
299
303
  - app/kern/mod/net.js
304
+ - app/kern/mod/persist.js
300
305
  - app/kern/mod/segue.js
301
306
  - app/kern/mod/sockio.js
307
+ - app/kern/mod/timer.js
302
308
  - app/kern/mod/ui.js
303
309
  - app/kern/net_cb.js
304
- - app/kern/services/rest.rb
305
- - app/kern/services/timer.rb
310
+ - app/kern/pagers/mem_pager.js
311
+ - app/kern/pagers/sockio_pager.js
312
+ - app/kern/pagers/spec0.js
313
+ - app/kern/pagers/spec1.js
314
+ - app/kern/pagers/spec2.js
315
+ - app/kern/services/test.rb
316
+ - app/kern/services/vm.rb
317
+ - app/kern/spec_helper.js
306
318
  - app/kern/tel.js
307
319
  - bin/flok
308
320
  - docs/architecture.md
309
321
  - docs/branches.md
322
+ - docs/callout.md
310
323
  - docs/client_api.md
311
324
  - docs/compilation.md
312
325
  - docs/controllers.md
313
326
  - docs/datatypes.md
314
327
  - docs/debug_server.md
315
328
  - docs/drivers.md
329
+ - docs/environmentals.md
316
330
  - docs/images/flok_arch.png
317
331
  - docs/images/ui_surface_and_views.png
318
332
  - docs/images/view_and_spot.png
@@ -336,7 +350,8 @@ files:
336
350
  - docs/scheduling.md
337
351
  - docs/services.md
338
352
  - docs/services/rest.md
339
- - docs/services/timer.md
353
+ - docs/services/vm.md
354
+ - docs/services/vm/pagers.md
340
355
  - docs/testing.md
341
356
  - flok.gemspec
342
357
  - lib/flok.rb
@@ -347,6 +362,11 @@ files:
347
362
  - lib/flok/project_template/Gemfile.erb
348
363
  - lib/flok/project_template/Guardfile
349
364
  - lib/flok/project_template/app/controllers/controller.rb
365
+ - lib/flok/project_template/app/scripts/script.js
366
+ - lib/flok/project_template/app/services/service.rb
367
+ - lib/flok/project_template/config/config.yml
368
+ - lib/flok/project_template/config/platforms/chrome/config.yml
369
+ - lib/flok/project_template/config/services.rb
350
370
  - lib/flok/service_compiler_templates/services.js.erb
351
371
  - lib/flok/services_compiler.rb
352
372
  - lib/flok/transition_compiler.rb
@@ -360,18 +380,26 @@ files:
360
380
  - opt/clojure/flokjure
361
381
  - opt/clojure/main.js
362
382
  - spec/env/etc.rb
383
+ - spec/env/global.rb
363
384
  - spec/env/iface.rb
364
385
  - spec/env/kern.rb
365
386
  - spec/etc/cli_spec.rb
387
+ - spec/etc/lib/assets/config.yml
366
388
  - spec/etc/lib/build_spec.rb
367
389
  - spec/etc/lib/platform_spec.rb
368
390
  - spec/etc/lib/project_spec.rb
369
391
  - spec/etc/macro_spec.rb
392
+ - spec/etc/service_compiler/config0.rb
393
+ - spec/etc/service_compiler/config1.rb
394
+ - spec/etc/service_compiler/config2.rb
370
395
  - spec/etc/service_compiler/service0.rb
396
+ - spec/etc/service_compiler/service1.rb
397
+ - spec/etc/service_compiler/service_bad_type.rb
371
398
  - spec/etc/services_compiler_spec.rb
372
399
  - spec/etc/transition_compiler/trans0.rb
373
400
  - spec/etc/transition_complier_spec.rb
374
401
  - spec/etc/user_compiler/controller0.rb
402
+ - spec/etc/user_compiler/data.js
375
403
  - spec/etc/user_compiler_spec.rb
376
404
  - spec/iface/driver/assets/debug_socket_server.js
377
405
  - spec/iface/driver/assets/node_modules/socket.io/.npmignore
@@ -1088,6 +1116,7 @@ files:
1088
1116
  - spec/iface/driver/debug_socketio_spec.rb
1089
1117
  - spec/iface/driver/debug_spec.rb
1090
1118
  - spec/iface/driver/net_spec.rb
1119
+ - spec/iface/driver/persist_spec.rb
1091
1120
  - spec/iface/driver/ping_spec.rb
1092
1121
  - spec/iface/driver/pipe_spec.rb
1093
1122
  - spec/iface/driver/sockio_spec.rb
@@ -1098,6 +1127,7 @@ files:
1098
1127
  - spec/iface/kern/net_spec.rb
1099
1128
  - spec/iface/kern/ping_spec.rb
1100
1129
  - spec/iface/kern/pipe_spec.rb
1130
+ - spec/kern/assets/blank.rb
1101
1131
  - spec/kern/assets/controller0.rb
1102
1132
  - spec/kern/assets/controller1.rb
1103
1133
  - spec/kern/assets/controller_bare.rb
@@ -1113,18 +1143,41 @@ files:
1113
1143
  - spec/kern/assets/goto2.rb
1114
1144
  - spec/kern/assets/lower_event.rb
1115
1145
  - spec/kern/assets/raise_event.rb
1116
- - spec/kern/assets/rest_service.rb
1117
1146
  - spec/kern/assets/send_event.rb
1147
+ - spec/kern/assets/service0.rb
1148
+ - spec/kern/assets/service1.rb
1149
+ - spec/kern/assets/service2.rb
1150
+ - spec/kern/assets/service_config0.rb
1151
+ - spec/kern/assets/service_config1.rb
1152
+ - spec/kern/assets/service_controller0.rb
1153
+ - spec/kern/assets/service_controller1.rb
1154
+ - spec/kern/assets/service_controller2.rb
1155
+ - spec/kern/assets/service_controller3.rb
1118
1156
  - spec/kern/assets/test_event.rb
1119
1157
  - spec/kern/assets/test_event2.rb
1120
1158
  - spec/kern/assets/test_event3.rb
1121
- - spec/kern/assets/timer_service.rb
1159
+ - spec/kern/assets/vm/config0.rb
1160
+ - spec/kern/assets/vm/config1.rb
1161
+ - spec/kern/assets/vm/config2.rb
1162
+ - spec/kern/assets/vm/config3.rb
1163
+ - spec/kern/assets/vm/controller0.rb
1164
+ - spec/kern/assets/vm/controller1.rb
1165
+ - spec/kern/assets/vm/controller2.rb
1166
+ - spec/kern/assets/vm/controller3.rb
1167
+ - spec/kern/assets/vm/controller4.rb
1168
+ - spec/kern/assets/vm/controller5.rb
1169
+ - spec/kern/assets/vm/controller6.rb
1170
+ - spec/kern/assets/vm/service0.rb
1171
+ - spec/kern/assets/vm/service_controller0.rb
1172
+ - spec/kern/callout_spec.rb
1122
1173
  - spec/kern/controller_spec.rb
1123
1174
  - spec/kern/debug_spec.rb
1124
1175
  - spec/kern/debug_ui_spec.rb
1176
+ - spec/kern/functions_spec.rb
1125
1177
  - spec/kern/net_spec.rb
1126
1178
  - spec/kern/rest_service_spec.rb
1127
- - spec/kern/timer_service_spec.rb
1179
+ - spec/kern/service_controller_spec.rb
1180
+ - spec/kern/vm_service_spec.rb
1128
1181
  - spec/lib/helpers.rb
1129
1182
  - spec/lib/io_extensions.rb
1130
1183
  - spec/lib/rspec_extensions.rb
@@ -1149,24 +1202,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1149
1202
  version: '0'
1150
1203
  requirements: []
1151
1204
  rubyforge_project:
1152
- rubygems_version: 2.4.6
1205
+ rubygems_version: 2.4.7
1153
1206
  signing_key:
1154
1207
  specification_version: 4
1155
1208
  summary: A boring javascript application framework
1156
1209
  test_files:
1157
1210
  - spec/env/etc.rb
1211
+ - spec/env/global.rb
1158
1212
  - spec/env/iface.rb
1159
1213
  - spec/env/kern.rb
1160
1214
  - spec/etc/cli_spec.rb
1215
+ - spec/etc/lib/assets/config.yml
1161
1216
  - spec/etc/lib/build_spec.rb
1162
1217
  - spec/etc/lib/platform_spec.rb
1163
1218
  - spec/etc/lib/project_spec.rb
1164
1219
  - spec/etc/macro_spec.rb
1220
+ - spec/etc/service_compiler/config0.rb
1221
+ - spec/etc/service_compiler/config1.rb
1222
+ - spec/etc/service_compiler/config2.rb
1165
1223
  - spec/etc/service_compiler/service0.rb
1224
+ - spec/etc/service_compiler/service1.rb
1225
+ - spec/etc/service_compiler/service_bad_type.rb
1166
1226
  - spec/etc/services_compiler_spec.rb
1167
1227
  - spec/etc/transition_compiler/trans0.rb
1168
1228
  - spec/etc/transition_complier_spec.rb
1169
1229
  - spec/etc/user_compiler/controller0.rb
1230
+ - spec/etc/user_compiler/data.js
1170
1231
  - spec/etc/user_compiler_spec.rb
1171
1232
  - spec/iface/driver/assets/debug_socket_server.js
1172
1233
  - spec/iface/driver/assets/node_modules/socket.io/.npmignore
@@ -1883,6 +1944,7 @@ test_files:
1883
1944
  - spec/iface/driver/debug_socketio_spec.rb
1884
1945
  - spec/iface/driver/debug_spec.rb
1885
1946
  - spec/iface/driver/net_spec.rb
1947
+ - spec/iface/driver/persist_spec.rb
1886
1948
  - spec/iface/driver/ping_spec.rb
1887
1949
  - spec/iface/driver/pipe_spec.rb
1888
1950
  - spec/iface/driver/sockio_spec.rb
@@ -1893,6 +1955,7 @@ test_files:
1893
1955
  - spec/iface/kern/net_spec.rb
1894
1956
  - spec/iface/kern/ping_spec.rb
1895
1957
  - spec/iface/kern/pipe_spec.rb
1958
+ - spec/kern/assets/blank.rb
1896
1959
  - spec/kern/assets/controller0.rb
1897
1960
  - spec/kern/assets/controller1.rb
1898
1961
  - spec/kern/assets/controller_bare.rb
@@ -1908,18 +1971,41 @@ test_files:
1908
1971
  - spec/kern/assets/goto2.rb
1909
1972
  - spec/kern/assets/lower_event.rb
1910
1973
  - spec/kern/assets/raise_event.rb
1911
- - spec/kern/assets/rest_service.rb
1912
1974
  - spec/kern/assets/send_event.rb
1975
+ - spec/kern/assets/service0.rb
1976
+ - spec/kern/assets/service1.rb
1977
+ - spec/kern/assets/service2.rb
1978
+ - spec/kern/assets/service_config0.rb
1979
+ - spec/kern/assets/service_config1.rb
1980
+ - spec/kern/assets/service_controller0.rb
1981
+ - spec/kern/assets/service_controller1.rb
1982
+ - spec/kern/assets/service_controller2.rb
1983
+ - spec/kern/assets/service_controller3.rb
1913
1984
  - spec/kern/assets/test_event.rb
1914
1985
  - spec/kern/assets/test_event2.rb
1915
1986
  - spec/kern/assets/test_event3.rb
1916
- - spec/kern/assets/timer_service.rb
1987
+ - spec/kern/assets/vm/config0.rb
1988
+ - spec/kern/assets/vm/config1.rb
1989
+ - spec/kern/assets/vm/config2.rb
1990
+ - spec/kern/assets/vm/config3.rb
1991
+ - spec/kern/assets/vm/controller0.rb
1992
+ - spec/kern/assets/vm/controller1.rb
1993
+ - spec/kern/assets/vm/controller2.rb
1994
+ - spec/kern/assets/vm/controller3.rb
1995
+ - spec/kern/assets/vm/controller4.rb
1996
+ - spec/kern/assets/vm/controller5.rb
1997
+ - spec/kern/assets/vm/controller6.rb
1998
+ - spec/kern/assets/vm/service0.rb
1999
+ - spec/kern/assets/vm/service_controller0.rb
2000
+ - spec/kern/callout_spec.rb
1917
2001
  - spec/kern/controller_spec.rb
1918
2002
  - spec/kern/debug_spec.rb
1919
2003
  - spec/kern/debug_ui_spec.rb
2004
+ - spec/kern/functions_spec.rb
1920
2005
  - spec/kern/net_spec.rb
1921
2006
  - spec/kern/rest_service_spec.rb
1922
- - spec/kern/timer_service_spec.rb
2007
+ - spec/kern/service_controller_spec.rb
2008
+ - spec/kern/vm_service_spec.rb
1923
2009
  - spec/lib/helpers.rb
1924
2010
  - spec/lib/io_extensions.rb
1925
2011
  - spec/lib/rspec_extensions.rb