* origin/master: (23 commits)
Fix api doc error
fix progress notifications registrations
Fix typo in Github issue template
Fix port conflict between RN >= 0.48 and RPC server (#1294)
Disable testAddListener when running in chrome
Ensure RN has an event loop running for async tests
Make permission tests better handle server delays
Fix race conditions in testAddListener
Separate build and test steps in xcode to reduce chance of hitting "Early unexpected exit"
Ignore errors when sourcing nvm.sh
Don't forward arguments to nvh.sh
Skip sourcing nvm.sh if it's already available
Fix some shellcheck warnings
Ensure node 6.5.0 is installed on CI
Build realm from source for each test-runner test
Improve error reporting for incorrect argument counts for Realm methods
Use the same error messages in the RPC code as the regular code
Silence an unused variable warning when building with sync disabled
Check the exception message in all Realm tests which assert an exception is thrown
Don't discard the actual error message in validated_get_X
...
The callback is used to let JS code decide whether the server's SSL
certificate should be accepted or rejected. The ssl_verify_callback
function is only applicable for platforms using OpenSSL.
Report the expected and actual arg counts for too many arguments, and behave
more like normal JS when too few are supplied (i.e. complain about the next
argument being undefined rather than just saying 'Invalid arguments').
Cuts the time taken to run the react native tests on my machine from 198
seconds to 41 seconds. Probably has a similar impact on the react native
debugger performance.
Cuts the time taken to run the react native tests on my machine from 198
seconds to 41 seconds. Probably has a similar impact on the react native
debugger performance.
Instead of manually allocating a chunk of memory and asking V8 to create an ArrayBuffer around it, have V8 create an ArrayBuffer with its own allocator and copy the data in it. (fixes#1197)
Remove an extra copy when reading data from ArrayBufferViews.
Remove TODOs for Node.js versions older than 4.
Instead of rethrowing the JavaScript error emitted from a callback function, we should instead pass it to `node::FatalException`.
Callbacks are employed when there is no other JavaScript frame on the stack prior so rethrowing the JS error as a C++ exception is not going to propagate the error back to JavaScript. `node::FatalException` will raise the `uncaughtError` event on the `process` object , print the error and stacktrace, and alert the debugger is there is one attached. This would make our async callbacks behave consistently with Node’s own async callbacks such as `setTimeout` when encountering an error.
* Make it possible to assign a List or Results to a List property.
The change made in #1069 to improve error messages when values of
incorrect types were assigned to a given property was being too
narrow in the types it accepted for list properties, allowing only
arrays. Lists and Results are now accepted once more.
* Update CHANGELOG.md
* Add support for linkingObjects
* Test linkingObjects
* Borrow names helper from list tests
* include computed properties when serializing the schema for the RN debugger
* add API docs
* review comments
* Expose admin users to JS (#1100)
The JS binding used to conflate `SyncUser::is_admin()` with the user being created by calling `Realm.Sync.User.adminToken()`, but now that we expose a user’s role on the server under `is_admin()` this supposition is no longer correct.
#1097 attempted to fix one such case, but fixing it only uncovered another: in `UserClass<T>::all_users()`. I’ve gone through all the callsites of `SyncUser::is_admin()` to make sure they don’t assume an admin token user.
* [1.8.3] Bump version
* add linkingObjects method to Realm.Object
* changelog
The JS binding used to conflate `SyncUser::is_admin()` with the user being created by calling `Realm.Sync.User.adminToken()`, but now that we expose a user’s role on the server under `is_admin()` this supposition is no longer correct.
#1097 attempted to fix one such case, but fixing it only uncovered another: in `UserClass<T>::all_users()`. I’ve gone through all the callsites of `SyncUser::is_admin()` to make sure they don’t assume an admin token user.
* Add and adopt `Value::is_binary` / `Value::to_binary` / `Value::from_binary`.
These methods allow conversions between `BinaryData` and the equivalent
JavaScript types without using `NativeAccessor`. Instead,
`NativeAccessor` now itself delegates to these methods.
* Have `NativeAccessor::value_for_property` and `RealmObjectClass::set_property`
verify that values are valid for the property in question.
If not, we throw an exception that includes the name and type of the
property in question.
`NativeAccessor` is changed to always hold a reference to a `Realm` and
an `ObjectSchema` in order to make this validation possible.
* Fix the Windows build.
* Remove an unused, incorrect forward declaration of a template class
named `Realm` that caused ambiguity with object store's `Realm` class.
* Disambiguate between `realm::js::PropertyType` and
`realm::PropertyType`.
* Update CHANGELOG.md
FIXME: We'll need to update to sync v1.9.2 once it is available as
v1.9.1 does not include core v2.8.1. This may result in the missing
symbols on Linux problem only being fixed when sync is disabled.
implementation.
This matches what core uses for integers, and avoids ambiguity that
otherwise results when `int64_t` is declared as `long` rather than `long long`.
Tweak the signature on some of the accessor methods to take
`JSEngine::Value`s by value rather than by const reference. Some Node
APIs appear to assume that only non-const objects will be used.