* Add CRDT Counter
* Implement the Counter
* Remove force cast
* Correct comment typo
* Change access control of CRDTCounter
* Change parameter name
* Add YorkieCountable.swift
* Delete garbage codes
* Move GRPC test unit to integration
* Add CodingKeys to KanbanCard and KanbanColumn
* Add eventStream.send to Document/applyChanges
* Change access modifiers of Client from internal to public
* Sync KanbanViewModel with the server
* Initial Implementation of the Client full features
* Change Indexable to Presence.
* Fix sync loop.
* Add integration tests for client
* Add Integration Test
* Fix Client Timer setting.
* Fix concurrent document syncing. and swiftFormat error.
* Change group task loop to waitForAll
* Add Kanban board to ExampleApp
* Bind Document and KanbanViewModel
* Improve the interfaces of JSONObject and JSONArray
* Remove print
* Remove redandunt codes
* Rename CommonConstant to KanbanLayoutProperty
* Rename some variables
* Remove white spaces in files.
* Change YorkieJSONObjectable from Mirrot to Codable
* Change test codes from subscript access to dynamicMemberLookup access
* Change Document from class to actor for concurrent access to it
Remove redundant codes
Change TimeTicket/lamport and delimiter from var to let
* Change some access modifier of type properties
* Add JSONArray and the tests
* Add test cases to JSONArrayTests
* Apply dynamicMemberLookup to JSONObject
* Add eventStream to Document and DocType
* Fix bugs of JSONArray
* Remove get(keyPath:) from JSONObject
* Add unit tests for Document
* Fix bugs for Heap.delete
* Change type_body_length of SwiftLint
* Add CRDTRoot
* Rename TimeTicket.initialTimeTicket and maxTimeTicket to initial and max
* Add RemoveOperation and SetOperation
* Remove redundant label from some methods in CRDTRoot
* Change some if to guard
* Change Heap based on JS-SDK
* Add RHTPQMapNode
* Change access modifier of var and func in SplayNode
* Remove lint errors
* Remove unnessary comments
* Modify compare method of CRDTArray
* Change some method's names
* Simplify compare method of CRDTArray
* Change Swift-tools-version to 5.7
* Change RHTPQMapNode to be the value of HeaNode
* Change TimeTicket/toIDString to private
* Change setActor to mutating
* Chagne CRDTElement type class to protocol
* Change `release` and `purge` to `delete`
* Add isEmpty to Heap
* Add Collection/subscript(safe:) function
* Apply isEmpty of Heap to RHTPQMap
* Change chekcing nodes.count to isEmpty in Heap
* Add the empty_count rule to SwiftLint
This commit implements primitives for creating CRDT datatypes such as
TimeTicket, ActorID, CRDTElement, and so on.
We found a problem with the JS SDK using lamport as Uint64 and this
commit fixed it with Int64.
This commit is working similarly to the JS SDK, so some codes may not
fit into Swift conventions. But we are going to take the whole
structure from JS SDK and apply it to Swift convention at once.