flok 0.0.36 → 0.0.38

Sign up to get free protection for your applications and to get access to all the features.
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