diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 00000000..e69de29b
diff --git a/README.md b/README.md
deleted file mode 100644
index c4f80324..00000000
--- a/README.md
+++ /dev/null
@@ -1,191 +0,0 @@
-
- Implementation of go scopes and channels in scala.
- =================================================
-
- Requirements: scala 2.10.2 +
- ------------
-
-
-
- Scope
- -----
-
- Library define 'goScope' expression, which allows to use inside
- goScope go-like 'defer', 'panic' and 'recover' expression.
- Typical usage:
-
- import gopher._
- import java.io._
-
- object CopyFile {
-
- def main(args:Array[String]):Unit =
- {
- if (args.length != 3) {
- System.err.println("usage: copy in out");
- }
- copy(new File(args(1)), new File(args(2)))
- }
-
- def copy(inf: File, outf: File): Long =
- goScope {
- val in = new FileInputStream(inf)
- defer{ in.close() }
- val out = new FileOutputStream(outf);
- defer{ out.close() }
- out.getChannel() transferFrom(in.getChannel(), 0, Long.MaxValue)
- }
-
- }
-
- Here statements inside defer block are executed at the end of goScope block
- in reverse order.
-
- Take a look at introduction article about go-like control flow constructs:
- http://blog.golang.org/defer-panic-and-recover
-
- Basically, goScope wrap it's argument into try/finalize block and rewrite
- *defer* calls to add defered code blocks to list of code blocks, which are
- executed in finalize. *panic* calls are just throwing exception and
- *recover* (which can be executed only inside *defer*) is returning a value
- of recover argument instead rethrowing exception:
-
- val s = goScope{
- defer{ recover("CCC") }
- panic("panic message")
- "QQQ"
- }
-
- will set *s* to "CCC".
-
- One question -- what to do if exception is occured inside one of defer blocks (?). By default we assume that statements inside *defer* have cleanup
- semantics, so exception inside ones are suppressed. You can override this
- semantics by calling special construction *throwSuppressed* inside first
- *defer* block (which will evaluated last) i.e.
-
- goScope{
- defer{ throwSuppressed }
- ..........
- }
-
- will throw suppressed exceptions if one exists.
-
- Also we can get list of suppressed using suppressedExceptions construction:
-
- goScope{
- defer{
- if (suppressedExceptions.notEmpty) {
- System.err.println("suppresses exceptions:")
- for(e <- suppressedExceptions) e.printStackTrace
- }
- }
- ..........
- }
-
-
- Go statement
- ------------
-
- Go statement starts the execution of expression in independent thread.
- We map one to Future call which use current implicit execution statement,
- so next 'go-like' code
-
- go {
- expr:A
- }
-
- have type *Future[A]* and mapped into plain scala as combination of *Future*
- and *goScope* .
-
- Channels
- --------
-
- Channels is a way for organizing go-like message passing. Basically you
-can look on it as on classic blocked queue. Different 'goroutines', executed
-in different flows can exchange messages via channels.
-
-
- val channel = makeChannel[Int];
-
- go {
- for(i <- 1 to 10) channel <~ i
- }
-
- go {
- val i1 = channel?
- val i2 = channel?
- }
-
-
- *channel <~ i* - send i to channel (it is possible to use '!' as synonym, to
- provide interface, simular to actors), *i = channel ?* - blocked read
- of channell. Note, that unlike akka, default read and write operations are
- blocked. Unlike go, we also provide 'immediate' and 'timeouted' versions
- of read/write operations.
-
- Select loop
- ----------
-
- May-be one of most unusual language constructions in go is
- 'select statement' which work in somewhat simular to unix 'select' syscall:
- from set of blocking operations select one which is ready for input/output
- and run it.
-
- Gopher provides simular functionality with 'select loops':
-
- import gopher._
-
-
- for( s <- select )
- s match {
- case `channelA` ~> (i:Int) => ..do-something-with-i
- case `channelB' ~> (ch: Char) => .. do-something-with-b
- }
-
- Here we read in loop from channelA or channelB.
-
- Body of select loop must consists only from one *match* statement where
- patterns in *case* clauses must have form *channel ~> (v:Type)*
- (for reading from channel) or *channel <~ v* (for writing).
-
- Yet one example:
-
- val channel = makeChannel[Int](100)
-
-
- go {
- for( i <- 1 to 1000)
- channel <~ i
- }
-
- var sum = 0;
- val consumer = go {
- for(s <- select) {
- s match {
- case `channel` ~> (i:Int) =>
- sum = sum + i
- if (i==1000) s.shutdown()
- }
- }
- sum
- }
-
- Await.ready(consumer, 5.second)
-
- Note the use of *s.shutdown* method for ending select loop.
-
-
- Interaction with Actors
- -----------------------
-
- We can bind channel output to actor (i.e. all, what we will write to channel
- will be readed to actor) with call
-
- bindChannelRead[A](read: InputChannel[A], actor: ActorRef)
-
- and bind channel to actorsystem, by creating actor which will push all input
- into channel:
-
- bindChannelWrite[A: ClassTag](write: channels.OutputChannel[A], name: String)(implicit as: ActorSystem): ActorRef
-
-
diff --git a/api/js/docs/index.html b/api/js/docs/index.html
new file mode 100644
index 00000000..faf17df4
--- /dev/null
+++ b/api/js/docs/index.html
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/api/js/favicon.ico b/api/js/favicon.ico
new file mode 100644
index 00000000..96b12b51
Binary files /dev/null and b/api/js/favicon.ico differ
diff --git a/api/js/fonts/dotty-icons.ttf b/api/js/fonts/dotty-icons.ttf
new file mode 100644
index 00000000..0b0f38f3
Binary files /dev/null and b/api/js/fonts/dotty-icons.ttf differ
diff --git a/api/js/fonts/dotty-icons.woff b/api/js/fonts/dotty-icons.woff
new file mode 100644
index 00000000..169e35c2
Binary files /dev/null and b/api/js/fonts/dotty-icons.woff differ
diff --git a/api/js/gopher.html b/api/js/gopher.html
new file mode 100644
index 00000000..f4ff772d
--- /dev/null
+++ b/api/js/gopher.html
@@ -0,0 +1,61 @@
+gopher
core of Gopher API. Given instance of Gopher[F] need for using most of Gopher operations.
+
core of Gopher API. Given instance of Gopher[F] need for using most of Gopher operations.
+
Gopher is a framework, which implements CSP (Communication Sequence Process).
+Process here - scala units of execution (i.e. functions, blok of code, etc).
+Communication channels represented by [gopher.Channel]
Select group is a virtual 'lock' object.
+Readers and writers are grouped into select groups. When
+event about avaiability to read or to write is arrived and
+no current event group members is running, than run of one of the members
+is triggered.
+I.e. only one from group can run.
+
Select group is a virtual 'lock' object.
+Readers and writers are grouped into select groups. When
+event about avaiability to read or to write is arrived and
+no current event group members is running, than run of one of the members
+is triggered.
+I.e. only one from group can run.
+
Note, that application develeper usually not work with SelectGroup directly,
+it is created internally by select pseudostatement.
Shared gopehr api, which is initialized by platofrm part,
+Primary used for cross-platforming test, you shoul initialize one of platform API
+behind and then run tests.
+
Shared gopehr api, which is initialized by platofrm part,
+Primary used for cross-platforming test, you shoul initialize one of platform API
+behind and then run tests.
\ No newline at end of file
diff --git a/api/js/gopher/Channel$$FRead.html b/api/js/gopher/Channel$$FRead.html
new file mode 100644
index 00000000..30959671
--- /dev/null
+++ b/api/js/gopher/Channel$$FRead.html
@@ -0,0 +1,28 @@
+FRead
\ No newline at end of file
diff --git a/api/js/gopher/Channel$$Read.html b/api/js/gopher/Channel$$Read.html
new file mode 100644
index 00000000..e0f555bb
--- /dev/null
+++ b/api/js/gopher/Channel$$Read.html
@@ -0,0 +1,28 @@
+Read
\ No newline at end of file
diff --git a/api/js/gopher/Channel$$Write.html b/api/js/gopher/Channel$$Write.html
new file mode 100644
index 00000000..387eb5ac
--- /dev/null
+++ b/api/js/gopher/Channel$$Write.html
@@ -0,0 +1,28 @@
+Write
\ No newline at end of file
diff --git a/api/js/gopher/Channel$.html b/api/js/gopher/Channel$.html
new file mode 100644
index 00000000..6471d3a9
--- /dev/null
+++ b/api/js/gopher/Channel$.html
@@ -0,0 +1,19 @@
+Channel
\ No newline at end of file
diff --git a/api/js/gopher/Channel.html b/api/js/gopher/Channel.html
new file mode 100644
index 00000000..3384e53a
--- /dev/null
+++ b/api/js/gopher/Channel.html
@@ -0,0 +1,89 @@
+Channel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/ChannelClosedException.html b/api/js/gopher/ChannelClosedException.html
new file mode 100644
index 00000000..abfc7f6e
--- /dev/null
+++ b/api/js/gopher/ChannelClosedException.html
@@ -0,0 +1,28 @@
+ChannelClosedException
\ No newline at end of file
diff --git a/api/js/gopher/ChannelWithExpiration.html b/api/js/gopher/ChannelWithExpiration.html
new file mode 100644
index 00000000..c71cc829
--- /dev/null
+++ b/api/js/gopher/ChannelWithExpiration.html
@@ -0,0 +1,77 @@
+ChannelWithExpiration
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/DeadlockDetected.html b/api/js/gopher/DeadlockDetected.html
new file mode 100644
index 00000000..b190c992
--- /dev/null
+++ b/api/js/gopher/DeadlockDetected.html
@@ -0,0 +1,28 @@
+DeadlockDetected
\ No newline at end of file
diff --git a/api/js/gopher/DefaultGopherConfig$.html b/api/js/gopher/DefaultGopherConfig$.html
new file mode 100644
index 00000000..e4748542
--- /dev/null
+++ b/api/js/gopher/DefaultGopherConfig$.html
@@ -0,0 +1,42 @@
+DefaultGopherConfig
\ No newline at end of file
diff --git a/api/js/gopher/DuppedInput.html b/api/js/gopher/DuppedInput.html
new file mode 100644
index 00000000..a9f7d091
--- /dev/null
+++ b/api/js/gopher/DuppedInput.html
@@ -0,0 +1,19 @@
+DuppedInput
\ No newline at end of file
diff --git a/api/js/gopher/Gopher.html b/api/js/gopher/Gopher.html
new file mode 100644
index 00000000..4c3ebad6
--- /dev/null
+++ b/api/js/gopher/Gopher.html
@@ -0,0 +1,56 @@
+Gopher
core of Gopher API. Given instance of Gopher[F] need for using most of Gopher operations.
+
Gopher is a framework, which implements CSP (Communication Sequence Process).
+Process here - scala units of execution (i.e. functions, blok of code, etc).
+Communication channels represented by [gopher.Channel]
Monad which control asynchronic execution.
+The main is scheduling: i.e. ability to submit monadic expression to scheduler
+and know that this monadic expression will be evaluated.
+
Monad which control asynchronic execution.
+The main is scheduling: i.e. ability to submit monadic expression to scheduler
+and know that this monadic expression will be evaluated.
\ No newline at end of file
diff --git a/api/js/gopher/GopherAPI.html b/api/js/gopher/GopherAPI.html
new file mode 100644
index 00000000..edd6147a
--- /dev/null
+++ b/api/js/gopher/GopherAPI.html
@@ -0,0 +1,21 @@
+GopherAPI
\ No newline at end of file
diff --git a/api/js/gopher/GopherConfig.html b/api/js/gopher/GopherConfig.html
new file mode 100644
index 00000000..8db8be41
--- /dev/null
+++ b/api/js/gopher/GopherConfig.html
@@ -0,0 +1,23 @@
+GopherConfig
\ No newline at end of file
diff --git a/api/js/gopher/JSGopher$.html b/api/js/gopher/JSGopher$.html
new file mode 100644
index 00000000..4b590ac0
--- /dev/null
+++ b/api/js/gopher/JSGopher$.html
@@ -0,0 +1,22 @@
+JSGopher
\ No newline at end of file
diff --git a/api/js/gopher/JSGopher.html b/api/js/gopher/JSGopher.html
new file mode 100644
index 00000000..38118245
--- /dev/null
+++ b/api/js/gopher/JSGopher.html
@@ -0,0 +1,38 @@
+JSGopher
Monad which control asynchronic execution.
+The main is scheduling: i.e. ability to submit monadic expression to scheduler
+and know that this monadic expression will be evaluated.
+
Monad which control asynchronic execution.
+The main is scheduling: i.e. ability to submit monadic expression to scheduler
+and know that this monadic expression will be evaluated.
\ No newline at end of file
diff --git a/api/js/gopher/JSGopherConfig.html b/api/js/gopher/JSGopherConfig.html
new file mode 100644
index 00000000..3d5c369c
--- /dev/null
+++ b/api/js/gopher/JSGopherConfig.html
@@ -0,0 +1,31 @@
+JSGopherConfig
\ No newline at end of file
diff --git a/api/js/gopher/Platform$.html b/api/js/gopher/Platform$.html
new file mode 100644
index 00000000..9be3f0b8
--- /dev/null
+++ b/api/js/gopher/Platform$.html
@@ -0,0 +1,19 @@
+Platform
\ No newline at end of file
diff --git a/api/js/gopher/ReadChannel$$emitAbsorber.html b/api/js/gopher/ReadChannel$$emitAbsorber.html
new file mode 100644
index 00000000..b219e103
--- /dev/null
+++ b/api/js/gopher/ReadChannel$$emitAbsorber.html
@@ -0,0 +1,6 @@
+emitAbsorber
\ No newline at end of file
diff --git a/api/js/gopher/ReadChannel$.html b/api/js/gopher/ReadChannel$.html
new file mode 100644
index 00000000..5ee261e7
--- /dev/null
+++ b/api/js/gopher/ReadChannel$.html
@@ -0,0 +1,28 @@
+ReadChannel
\ No newline at end of file
diff --git a/api/js/gopher/ReadChannel$DoneReadChannel.html b/api/js/gopher/ReadChannel$DoneReadChannel.html
new file mode 100644
index 00000000..8ea1b808
--- /dev/null
+++ b/api/js/gopher/ReadChannel$DoneReadChannel.html
@@ -0,0 +1,60 @@
+DoneReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/ReadChannel$SimpleReader.html b/api/js/gopher/ReadChannel$SimpleReader.html
new file mode 100644
index 00000000..b6b43e55
--- /dev/null
+++ b/api/js/gopher/ReadChannel$SimpleReader.html
@@ -0,0 +1,25 @@
+SimpleReader
\ No newline at end of file
diff --git a/api/js/gopher/ReadChannel.html b/api/js/gopher/ReadChannel.html
new file mode 100644
index 00000000..02176130
--- /dev/null
+++ b/api/js/gopher/ReadChannel.html
@@ -0,0 +1,103 @@
+ReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/Select.html b/api/js/gopher/Select.html
new file mode 100644
index 00000000..d089e01d
--- /dev/null
+++ b/api/js/gopher/Select.html
@@ -0,0 +1,42 @@
+Select
\ No newline at end of file
diff --git a/api/js/gopher/SelectFold$$Done.html b/api/js/gopher/SelectFold$$Done.html
new file mode 100644
index 00000000..dde7137a
--- /dev/null
+++ b/api/js/gopher/SelectFold$$Done.html
@@ -0,0 +1,29 @@
+Done
\ No newline at end of file
diff --git a/api/js/gopher/SelectFold$.html b/api/js/gopher/SelectFold$.html
new file mode 100644
index 00000000..7c744198
--- /dev/null
+++ b/api/js/gopher/SelectFold$.html
@@ -0,0 +1,23 @@
+SelectFold
\ No newline at end of file
diff --git a/api/js/gopher/SelectForever.html b/api/js/gopher/SelectForever.html
new file mode 100644
index 00000000..3b7cfd28
--- /dev/null
+++ b/api/js/gopher/SelectForever.html
@@ -0,0 +1,25 @@
+SelectForever
\ No newline at end of file
diff --git a/api/js/gopher/SelectGroup$Expiration.html b/api/js/gopher/SelectGroup$Expiration.html
new file mode 100644
index 00000000..4d20b28c
--- /dev/null
+++ b/api/js/gopher/SelectGroup$Expiration.html
@@ -0,0 +1,25 @@
+Expiration
\ No newline at end of file
diff --git a/api/js/gopher/SelectGroup$ReaderRecord.html b/api/js/gopher/SelectGroup$ReaderRecord.html
new file mode 100644
index 00000000..ea2d1271
--- /dev/null
+++ b/api/js/gopher/SelectGroup$ReaderRecord.html
@@ -0,0 +1,37 @@
+ReaderRecord
\ No newline at end of file
diff --git a/api/js/gopher/SelectGroup$TimeoutRecord.html b/api/js/gopher/SelectGroup$TimeoutRecord.html
new file mode 100644
index 00000000..a8bfb9bc
--- /dev/null
+++ b/api/js/gopher/SelectGroup$TimeoutRecord.html
@@ -0,0 +1,31 @@
+TimeoutRecord
\ No newline at end of file
diff --git a/api/js/gopher/SelectGroup$WriterRecord.html b/api/js/gopher/SelectGroup$WriterRecord.html
new file mode 100644
index 00000000..0c7bd88f
--- /dev/null
+++ b/api/js/gopher/SelectGroup$WriterRecord.html
@@ -0,0 +1,37 @@
+WriterRecord
\ No newline at end of file
diff --git a/api/js/gopher/SelectGroup.html b/api/js/gopher/SelectGroup.html
new file mode 100644
index 00000000..1d4cbc6a
--- /dev/null
+++ b/api/js/gopher/SelectGroup.html
@@ -0,0 +1,52 @@
+SelectGroup
Select group is a virtual 'lock' object.
+Readers and writers are grouped into select groups. When
+event about avaiability to read or to write is arrived and
+no current event group members is running, than run of one of the members
+is triggered.
+I.e. only one from group can run.
+
Note, that application develeper usually not work with SelectGroup directly,
+it is created internally by select pseudostatement.
\ No newline at end of file
diff --git a/api/js/gopher/SelectGroupBuilder.html b/api/js/gopher/SelectGroupBuilder.html
new file mode 100644
index 00000000..9e739728
--- /dev/null
+++ b/api/js/gopher/SelectGroupBuilder.html
@@ -0,0 +1,26 @@
+SelectGroupBuilder
\ No newline at end of file
diff --git a/api/js/gopher/SelectListeners.html b/api/js/gopher/SelectListeners.html
new file mode 100644
index 00000000..e074ed07
--- /dev/null
+++ b/api/js/gopher/SelectListeners.html
@@ -0,0 +1,27 @@
+SelectListeners
\ No newline at end of file
diff --git a/api/js/gopher/SelectLoop.html b/api/js/gopher/SelectLoop.html
new file mode 100644
index 00000000..960b314e
--- /dev/null
+++ b/api/js/gopher/SelectLoop.html
@@ -0,0 +1,24 @@
+SelectLoop
\ No newline at end of file
diff --git a/api/js/gopher/SelectMacro$$DoneExression.html b/api/js/gopher/SelectMacro$$DoneExression.html
new file mode 100644
index 00000000..636bb44e
--- /dev/null
+++ b/api/js/gopher/SelectMacro$$DoneExression.html
@@ -0,0 +1,31 @@
+DoneExression
\ No newline at end of file
diff --git a/api/js/gopher/SelectMacro$$ReadExpression.html b/api/js/gopher/SelectMacro$$ReadExpression.html
new file mode 100644
index 00000000..389d0143
--- /dev/null
+++ b/api/js/gopher/SelectMacro$$ReadExpression.html
@@ -0,0 +1,31 @@
+ReadExpression
\ No newline at end of file
diff --git a/api/js/gopher/SelectMacro$$SelectGroupExpr.html b/api/js/gopher/SelectMacro$$SelectGroupExpr.html
new file mode 100644
index 00000000..91bb8db9
--- /dev/null
+++ b/api/js/gopher/SelectMacro$$SelectGroupExpr.html
@@ -0,0 +1,19 @@
+SelectGroupExpr
\ No newline at end of file
diff --git a/api/js/gopher/SelectMacro$$SelectorCaseExpr.html b/api/js/gopher/SelectMacro$$SelectorCaseExpr.html
new file mode 100644
index 00000000..011e023b
--- /dev/null
+++ b/api/js/gopher/SelectMacro$$SelectorCaseExpr.html
@@ -0,0 +1,27 @@
+SelectorCaseExpr
\ No newline at end of file
diff --git a/api/js/gopher/SelectMacro$$TimeoutExpression.html b/api/js/gopher/SelectMacro$$TimeoutExpression.html
new file mode 100644
index 00000000..9c717271
--- /dev/null
+++ b/api/js/gopher/SelectMacro$$TimeoutExpression.html
@@ -0,0 +1,31 @@
+TimeoutExpression
\ No newline at end of file
diff --git a/api/js/gopher/SelectMacro$$WriteExpression.html b/api/js/gopher/SelectMacro$$WriteExpression.html
new file mode 100644
index 00000000..0c04b32e
--- /dev/null
+++ b/api/js/gopher/SelectMacro$$WriteExpression.html
@@ -0,0 +1,31 @@
+WriteExpression
\ No newline at end of file
diff --git a/api/js/gopher/SelectMacro$.html b/api/js/gopher/SelectMacro$.html
new file mode 100644
index 00000000..fea53f69
--- /dev/null
+++ b/api/js/gopher/SelectMacro$.html
@@ -0,0 +1,19 @@
+SelectMacro
\ No newline at end of file
diff --git a/api/js/gopher/SharedGopherAPI$.html b/api/js/gopher/SharedGopherAPI$.html
new file mode 100644
index 00000000..1ba056f4
--- /dev/null
+++ b/api/js/gopher/SharedGopherAPI$.html
@@ -0,0 +1,22 @@
+SharedGopherAPI
Shared gopehr api, which is initialized by platofrm part,
+Primary used for cross-platforming test, you shoul initialize one of platform API
+behind and then run tests.
\ No newline at end of file
diff --git a/api/js/gopher/Time$$Scheduled.html b/api/js/gopher/Time$$Scheduled.html
new file mode 100644
index 00000000..e1ea443a
--- /dev/null
+++ b/api/js/gopher/Time$$Scheduled.html
@@ -0,0 +1,20 @@
+Scheduled
\ No newline at end of file
diff --git a/api/js/gopher/Time$.html b/api/js/gopher/Time$.html
new file mode 100644
index 00000000..29027452
--- /dev/null
+++ b/api/js/gopher/Time$.html
@@ -0,0 +1,32 @@
+Time
\ No newline at end of file
diff --git a/api/js/gopher/Time$Ticker.html b/api/js/gopher/Time$Ticker.html
new file mode 100644
index 00000000..2677c18c
--- /dev/null
+++ b/api/js/gopher/Time$Ticker.html
@@ -0,0 +1,20 @@
+Ticker
\ No newline at end of file
diff --git a/api/js/gopher/Time.html b/api/js/gopher/Time.html
new file mode 100644
index 00000000..52126381
--- /dev/null
+++ b/api/js/gopher/Time.html
@@ -0,0 +1,43 @@
+Time
\ No newline at end of file
diff --git a/api/js/gopher/WriteChannel.html b/api/js/gopher/WriteChannel.html
new file mode 100644
index 00000000..cf7813de
--- /dev/null
+++ b/api/js/gopher/WriteChannel.html
@@ -0,0 +1,44 @@
+WriteChannel
\ No newline at end of file
diff --git a/api/js/gopher/WriteChannelWithExpiration.html b/api/js/gopher/WriteChannelWithExpiration.html
new file mode 100644
index 00000000..122128e2
--- /dev/null
+++ b/api/js/gopher/WriteChannelWithExpiration.html
@@ -0,0 +1,25 @@
+WriteChannelWithExpiration
\ No newline at end of file
diff --git a/api/js/gopher/impl.html b/api/js/gopher/impl.html
new file mode 100644
index 00000000..43d4f119
--- /dev/null
+++ b/api/js/gopher/impl.html
@@ -0,0 +1,28 @@
+gopher.impl
Object, which can be expired
+(usually - reader or writer in SelectGroup)
+Usage protocol is next:
+capture
+if A inside is used, call markUsed and use A
+if A inside is unused for some reason -- call markFree
+
Object, which can be expired
+(usually - reader or writer in SelectGroup)
+Usage protocol is next:
+capture
+if A inside is used, call markUsed and use A
+if A inside is unused for some reason -- call markFree
\ No newline at end of file
diff --git a/api/js/gopher/impl/AppendReadChannel$InterceptReader.html b/api/js/gopher/impl/AppendReadChannel$InterceptReader.html
new file mode 100644
index 00000000..b94cda59
--- /dev/null
+++ b/api/js/gopher/impl/AppendReadChannel$InterceptReader.html
@@ -0,0 +1,25 @@
+InterceptReader
\ No newline at end of file
diff --git a/api/js/gopher/impl/AppendReadChannel.html b/api/js/gopher/impl/AppendReadChannel.html
new file mode 100644
index 00000000..4a3783c1
--- /dev/null
+++ b/api/js/gopher/impl/AppendReadChannel.html
@@ -0,0 +1,73 @@
+AppendReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/BaseChannel.html b/api/js/gopher/impl/BaseChannel.html
new file mode 100644
index 00000000..cf29c4df
--- /dev/null
+++ b/api/js/gopher/impl/BaseChannel.html
@@ -0,0 +1,78 @@
+BaseChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/BufferedChannel.html b/api/js/gopher/impl/BufferedChannel.html
new file mode 100644
index 00000000..0ca2b737
--- /dev/null
+++ b/api/js/gopher/impl/BufferedChannel.html
@@ -0,0 +1,74 @@
+BufferedChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/ChFlatMappedChannel.html b/api/js/gopher/impl/ChFlatMappedChannel.html
new file mode 100644
index 00000000..fc891322
--- /dev/null
+++ b/api/js/gopher/impl/ChFlatMappedChannel.html
@@ -0,0 +1,77 @@
+ChFlatMappedChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/ChFlatMappedReadChannel.html b/api/js/gopher/impl/ChFlatMappedReadChannel.html
new file mode 100644
index 00000000..dff5f1bd
--- /dev/null
+++ b/api/js/gopher/impl/ChFlatMappedReadChannel.html
@@ -0,0 +1,62 @@
+ChFlatMappedReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/ChFlatMappedTryReadChannel.html b/api/js/gopher/impl/ChFlatMappedTryReadChannel.html
new file mode 100644
index 00000000..2e3d7d90
--- /dev/null
+++ b/api/js/gopher/impl/ChFlatMappedTryReadChannel.html
@@ -0,0 +1,60 @@
+ChFlatMappedTryReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/Expirable$$Capture$$Ready.html b/api/js/gopher/impl/Expirable$$Capture$$Ready.html
new file mode 100644
index 00000000..41921111
--- /dev/null
+++ b/api/js/gopher/impl/Expirable$$Capture$$Ready.html
@@ -0,0 +1,6 @@
+Ready
\ No newline at end of file
diff --git a/api/js/gopher/impl/Expirable$$Capture.html b/api/js/gopher/impl/Expirable$$Capture.html
new file mode 100644
index 00000000..58ddcea4
--- /dev/null
+++ b/api/js/gopher/impl/Expirable$$Capture.html
@@ -0,0 +1,31 @@
+Capture
\ No newline at end of file
diff --git a/api/js/gopher/impl/Expirable$.html b/api/js/gopher/impl/Expirable$.html
new file mode 100644
index 00000000..04e56a66
--- /dev/null
+++ b/api/js/gopher/impl/Expirable$.html
@@ -0,0 +1,19 @@
+Expirable
\ No newline at end of file
diff --git a/api/js/gopher/impl/Expirable.html b/api/js/gopher/impl/Expirable.html
new file mode 100644
index 00000000..a9dcc047
--- /dev/null
+++ b/api/js/gopher/impl/Expirable.html
@@ -0,0 +1,69 @@
+Expirable
Object, which can be expired
+(usually - reader or writer in SelectGroup)
+Usage protocol is next:
+capture
+if A inside is used, call markUsed and use A
+if A inside is unused for some reason -- call markFree
if this object is expired and should be deleted from queue
+(for example: when reader is belong to select group and some other action in this select group was performed)
+
if this object is expired and should be deleted from queue
+(for example: when reader is belong to select group and some other action in this select group was performed)
\ No newline at end of file
diff --git a/api/js/gopher/impl/FilteredAsyncChannel.html b/api/js/gopher/impl/FilteredAsyncChannel.html
new file mode 100644
index 00000000..9983b34e
--- /dev/null
+++ b/api/js/gopher/impl/FilteredAsyncChannel.html
@@ -0,0 +1,77 @@
+FilteredAsyncChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/FilteredAsyncReadChannel$FilteredReader.html b/api/js/gopher/impl/FilteredAsyncReadChannel$FilteredReader.html
new file mode 100644
index 00000000..f88c19ed
--- /dev/null
+++ b/api/js/gopher/impl/FilteredAsyncReadChannel$FilteredReader.html
@@ -0,0 +1,25 @@
+FilteredReader
\ No newline at end of file
diff --git a/api/js/gopher/impl/FilteredAsyncReadChannel.html b/api/js/gopher/impl/FilteredAsyncReadChannel.html
new file mode 100644
index 00000000..a079f665
--- /dev/null
+++ b/api/js/gopher/impl/FilteredAsyncReadChannel.html
@@ -0,0 +1,62 @@
+FilteredAsyncReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/FilteredChannel.html b/api/js/gopher/impl/FilteredChannel.html
new file mode 100644
index 00000000..218fce82
--- /dev/null
+++ b/api/js/gopher/impl/FilteredChannel.html
@@ -0,0 +1,77 @@
+FilteredChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/FilteredReadChannel$FilteredReader.html b/api/js/gopher/impl/FilteredReadChannel$FilteredReader.html
new file mode 100644
index 00000000..81f32625
--- /dev/null
+++ b/api/js/gopher/impl/FilteredReadChannel$FilteredReader.html
@@ -0,0 +1,25 @@
+FilteredReader
\ No newline at end of file
diff --git a/api/js/gopher/impl/FilteredReadChannel.html b/api/js/gopher/impl/FilteredReadChannel.html
new file mode 100644
index 00000000..8e5570d8
--- /dev/null
+++ b/api/js/gopher/impl/FilteredReadChannel.html
@@ -0,0 +1,62 @@
+FilteredReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/JSTime.html b/api/js/gopher/impl/JSTime.html
new file mode 100644
index 00000000..9b9b7c8d
--- /dev/null
+++ b/api/js/gopher/impl/JSTime.html
@@ -0,0 +1,39 @@
+JSTime
\ No newline at end of file
diff --git a/api/js/gopher/impl/MappedAsyncChannel.html b/api/js/gopher/impl/MappedAsyncChannel.html
new file mode 100644
index 00000000..44cd1119
--- /dev/null
+++ b/api/js/gopher/impl/MappedAsyncChannel.html
@@ -0,0 +1,77 @@
+MappedAsyncChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/MappedAsyncReadChannel$MReader.html b/api/js/gopher/impl/MappedAsyncReadChannel$MReader.html
new file mode 100644
index 00000000..5a5a3509
--- /dev/null
+++ b/api/js/gopher/impl/MappedAsyncReadChannel$MReader.html
@@ -0,0 +1,25 @@
+MReader
\ No newline at end of file
diff --git a/api/js/gopher/impl/MappedAsyncReadChannel.html b/api/js/gopher/impl/MappedAsyncReadChannel.html
new file mode 100644
index 00000000..3dde666e
--- /dev/null
+++ b/api/js/gopher/impl/MappedAsyncReadChannel.html
@@ -0,0 +1,62 @@
+MappedAsyncReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/MappedChannel.html b/api/js/gopher/impl/MappedChannel.html
new file mode 100644
index 00000000..d51812fb
--- /dev/null
+++ b/api/js/gopher/impl/MappedChannel.html
@@ -0,0 +1,77 @@
+MappedChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/MappedReadChannel$MReader.html b/api/js/gopher/impl/MappedReadChannel$MReader.html
new file mode 100644
index 00000000..c9a9e959
--- /dev/null
+++ b/api/js/gopher/impl/MappedReadChannel$MReader.html
@@ -0,0 +1,25 @@
+MReader
\ No newline at end of file
diff --git a/api/js/gopher/impl/MappedReadChannel.html b/api/js/gopher/impl/MappedReadChannel.html
new file mode 100644
index 00000000..21f39ca7
--- /dev/null
+++ b/api/js/gopher/impl/MappedReadChannel.html
@@ -0,0 +1,62 @@
+MappedReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/NesteWriterWithExpireTime.html b/api/js/gopher/impl/NesteWriterWithExpireTime.html
new file mode 100644
index 00000000..3a1c46c7
--- /dev/null
+++ b/api/js/gopher/impl/NesteWriterWithExpireTime.html
@@ -0,0 +1,25 @@
+NesteWriterWithExpireTime
\ No newline at end of file
diff --git a/api/js/gopher/impl/NestedWriterWithExpireTimeThrowing.html b/api/js/gopher/impl/NestedWriterWithExpireTimeThrowing.html
new file mode 100644
index 00000000..f607f8cb
--- /dev/null
+++ b/api/js/gopher/impl/NestedWriterWithExpireTimeThrowing.html
@@ -0,0 +1,25 @@
+NestedWriterWithExpireTimeThrowing
\ No newline at end of file
diff --git a/api/js/gopher/impl/OrReadChannel$CommonBase.html b/api/js/gopher/impl/OrReadChannel$CommonBase.html
new file mode 100644
index 00000000..1d738d45
--- /dev/null
+++ b/api/js/gopher/impl/OrReadChannel$CommonBase.html
@@ -0,0 +1,31 @@
+CommonBase
\ No newline at end of file
diff --git a/api/js/gopher/impl/OrReadChannel$CommonReader.html b/api/js/gopher/impl/OrReadChannel$CommonReader.html
new file mode 100644
index 00000000..b6bfb5c5
--- /dev/null
+++ b/api/js/gopher/impl/OrReadChannel$CommonReader.html
@@ -0,0 +1,29 @@
+CommonReader
\ No newline at end of file
diff --git a/api/js/gopher/impl/OrReadChannel$DoneCommonReader.html b/api/js/gopher/impl/OrReadChannel$DoneCommonReader.html
new file mode 100644
index 00000000..f60b3504
--- /dev/null
+++ b/api/js/gopher/impl/OrReadChannel$DoneCommonReader.html
@@ -0,0 +1,29 @@
+DoneCommonReader
\ No newline at end of file
diff --git a/api/js/gopher/impl/OrReadChannel$WrappedReader.html b/api/js/gopher/impl/OrReadChannel$WrappedReader.html
new file mode 100644
index 00000000..e86b4a1e
--- /dev/null
+++ b/api/js/gopher/impl/OrReadChannel$WrappedReader.html
@@ -0,0 +1,25 @@
+WrappedReader
\ No newline at end of file
diff --git a/api/js/gopher/impl/OrReadChannel.html b/api/js/gopher/impl/OrReadChannel.html
new file mode 100644
index 00000000..a65d481e
--- /dev/null
+++ b/api/js/gopher/impl/OrReadChannel.html
@@ -0,0 +1,73 @@
+OrReadChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/PromiseChannel.html b/api/js/gopher/impl/PromiseChannel.html
new file mode 100644
index 00000000..83410adf
--- /dev/null
+++ b/api/js/gopher/impl/PromiseChannel.html
@@ -0,0 +1,74 @@
+PromiseChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/Reader.html b/api/js/gopher/impl/Reader.html
new file mode 100644
index 00000000..7b121826
--- /dev/null
+++ b/api/js/gopher/impl/Reader.html
@@ -0,0 +1,52 @@
+Reader
if this object is expired and should be deleted from queue
+(for example: when reader is belong to select group and some other action in this select group was performed)
+
if this object is expired and should be deleted from queue
+(for example: when reader is belong to select group and some other action in this select group was performed)
\ No newline at end of file
diff --git a/api/js/gopher/impl/SimpleWriter.html b/api/js/gopher/impl/SimpleWriter.html
new file mode 100644
index 00000000..bc00d934
--- /dev/null
+++ b/api/js/gopher/impl/SimpleWriter.html
@@ -0,0 +1,25 @@
+SimpleWriter
\ No newline at end of file
diff --git a/api/js/gopher/impl/SimpleWriterWithExpireTime.html b/api/js/gopher/impl/SimpleWriterWithExpireTime.html
new file mode 100644
index 00000000..a73d3aa3
--- /dev/null
+++ b/api/js/gopher/impl/SimpleWriterWithExpireTime.html
@@ -0,0 +1,25 @@
+SimpleWriterWithExpireTime
\ No newline at end of file
diff --git a/api/js/gopher/impl/UnbufferedChannel.html b/api/js/gopher/impl/UnbufferedChannel.html
new file mode 100644
index 00000000..12c48a93
--- /dev/null
+++ b/api/js/gopher/impl/UnbufferedChannel.html
@@ -0,0 +1,74 @@
+UnbufferedChannel
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
+
blocked read: if currently not element available - wait for one.
+Can be used only inside async block.
+If stream is closed and no values to read left in the stream - throws StreamClosedException
\ No newline at end of file
diff --git a/api/js/gopher/impl/Writer.html b/api/js/gopher/impl/Writer.html
new file mode 100644
index 00000000..caedda7d
--- /dev/null
+++ b/api/js/gopher/impl/Writer.html
@@ -0,0 +1,46 @@
+Writer
if this object is expired and should be deleted from queue
+(for example: when reader is belong to select group and some other action in this select group was performed)
+
if this object is expired and should be deleted from queue
+(for example: when reader is belong to select group and some other action in this select group was performed)
\ No newline at end of file
diff --git a/api/js/gopher/monads.html b/api/js/gopher/monads.html
new file mode 100644
index 00000000..9f279ead
--- /dev/null
+++ b/api/js/gopher/monads.html
@@ -0,0 +1,6 @@
+gopher.monads
\ No newline at end of file
diff --git a/api/js/gopher/monads/ReadChannelCpsMonad.html b/api/js/gopher/monads/ReadChannelCpsMonad.html
new file mode 100644
index 00000000..3e4488c5
--- /dev/null
+++ b/api/js/gopher/monads/ReadChannelCpsMonad.html
@@ -0,0 +1,6 @@
+ReadChannelCpsMonad
\ No newline at end of file
diff --git a/api/js/gopher/monads/ReadTryChannelCpsMonad.html b/api/js/gopher/monads/ReadTryChannelCpsMonad.html
new file mode 100644
index 00000000..6275eec9
--- /dev/null
+++ b/api/js/gopher/monads/ReadTryChannelCpsMonad.html
@@ -0,0 +1,29 @@
+ReadTryChannelCpsMonad
\ No newline at end of file
diff --git a/api/js/gopher/monads/futureToReadChannel.html b/api/js/gopher/monads/futureToReadChannel.html
new file mode 100644
index 00000000..55ec4383
--- /dev/null
+++ b/api/js/gopher/monads/futureToReadChannel.html
@@ -0,0 +1,6 @@
+futureToReadChannel
\ No newline at end of file
diff --git a/api/js/gopher/monads/readChannelToTryReadChannel.html b/api/js/gopher/monads/readChannelToTryReadChannel.html
new file mode 100644
index 00000000..9a0ffb30
--- /dev/null
+++ b/api/js/gopher/monads/readChannelToTryReadChannel.html
@@ -0,0 +1,6 @@
+readChannelToTryReadChannel