Commit Graph

362 Commits

Author SHA1 Message Date
Mark Rowe c2de29ab0c Fix an issue where `Realm.open` would complain about the Realm already
being open with a different schema version

In order to correctly open read-only synchronized Realms, `Realm.open`
would open the Realm without specifying a schema or schema version, wait
for any remote changes to be downloaded (if appropriate), and then
re-open the Realm with the specified schema and schema version. This
would lead to an exception about the Realm being open with a different
schema version if the Realm had previously been opened with a different
schema version, due to the way `RealmCoordinator` caches information
about the schema of open Realms.

We address this by making two changes:
1. `Realm.open` for non-synchronized Realms no longer goes through
`_waitForDownload`. This means the dance described above where the Realm
is opened twice is not used for local Realms.
2. `_waitForDownload` no longer keeps the `Realm` alive until after its
callback has returned. It instead keeps the `SyncSession` alive. This is
sufficient to avoid the connection being torn down and having to
reconnect when `_waitForDownload`'s callback later opens the Realm with
the correct schema and schema version, while also allowing for
`RealmCoordinator`'s cached information to be cleared when the
schemaless Realm is closed prior to the Realm being reopened.

In addition, tests have been added that reproduced the problem in both a
local and sync context.
2017-12-18 14:54:08 -08:00
Yavor Georgiev 4e6cb299b3
Add disableFormatUpgrade to Realm configuration (#1566) 2017-12-14 07:53:03 +01:00
Kenneth Geisshirt aed1ea104b
Adding property Realm.isClosed. (#1560)
* Adding property Realm.isClosed.
2017-12-13 10:09:26 +01:00
Kræn Hansen 70004b9304 Checking the content-type of authentication responses (#1556)
* Checking the content-type of authentication responses
* Adding a changelog entry
* Fixing changelog typos and line endings
2017-12-07 10:36:24 +01:00
Thomas Goyne 8faf94918b Use the sync label as the multiplex identifier 2017-11-16 16:36:58 -08:00
blagoev c68c3983cf format the code 2017-11-14 11:08:40 +02:00
blagoev 9bcfa35bba fix js code 2017-11-14 08:58:21 +02:00
blagoev ba2309a540 revert the promise resolve 2017-11-13 23:31:33 +02:00
blagoev 3e65994474 remove debug code 2017-11-13 22:53:27 +02:00
blagoev c3ac7ac81d fix iOS code 2017-11-13 22:52:50 +02:00
blagoev f10df2164c fix RN Android debugger 2017-11-13 14:19:59 +02:00
blagoev 7b49cf89ef android debugger looper fixes 2017-11-13 14:16:46 +02:00
Mark Rowe 848a5b1c09 Expose an object's internal object ID, and allow fetching an object by its object ID (#1460)
* Expose an object's internal object ID, and allow fetching an object by its object ID
* Throw an exception if methods related to object IDs are used on non-synced Realms.
* Use `std::stoull` to ensure we can return the entire range of possible values.
* Add tests for _objectId() / _objectForObjectId().
* Adding change log
* Skip ObjectIdTests.testSynced for non-Node.
2017-11-08 11:22:59 +01:00
Kenneth Geisshirt e81d8589ae
Post-release feedback on client reset (#1372) (#1459)
* Post-release feedback on client reset (#1372)
* Using error.name instead
2017-11-06 13:51:33 +01:00
Kræn Hansen 1de8fbbf39 Update index.d.ts (#1458) 2017-11-03 16:02:34 +01:00
Kenneth Geisshirt d858c4e87a Updating documentation of realmAtPath 2017-11-01 14:44:40 +01:00
Michel Albers 0a43df6860 remove uneccessary blank line 2017-10-25 18:16:59 +02:00
Michel Albers f98eb7a4ec Fix "realm constructor not defined" in JS remote debugging mode 2017-10-25 18:16:23 +02:00
blagoev 0b5aa68c62 Revert "Merge pull request #1409 from realm/kneth/bugfix/invalid-token"
This reverts commit 4055c9e047, reversing
changes made to d6b3fcb8b1.
2017-10-17 00:51:47 +03:00
blagoev 863e80643b Merge branch 'master' into fix-partial-sync-config-ts-definition 2017-10-16 15:17:19 +03:00
blagoev f534d64382 fix partial in ts definitions 2017-10-16 12:48:07 +03:00
Kenneth Geisshirt 7e85220e47 Merge branch 'kneth/bugfix/invalid-token' of github.com:realm/realm-js into kneth/bugfix/invalid-token 2017-10-13 18:18:05 +02:00
Kenneth Geisshirt 28c51335d2 Ugly hack. 2017-10-13 18:12:30 +02:00
Kenneth Geisshirt fca7cd4566 wip 2017-10-13 14:39:28 +02:00
Mark Rowe 5ea64ef4b3 Merge pull request #1402 from realm/mar/simplify-wait-for-download
Remove configuration handling from Realm._waitForDownload
2017-10-11 09:56:49 -07:00
Mark Rowe 718ee3296c Fix how _waitForDownload is treated by the RPC code. 2017-10-11 09:29:53 -07:00
Kenneth Geisshirt 6bc5a45272 Merge pull request #1403 from realm/tg/skip-analytics-modules
Check for REALM_DISABLE_ANALYTICS earlier in submit-analytics.js
2017-10-11 15:19:56 +02:00
Thomas Goyne 643c19ea75 Add support for aggregates on arrays of primitives (#1401)
* Fix an unused variable warning in js_sync.hpp
* Add support for aggregates on arrays of primitives
* Update documentation and typescript declarations
* Update collection.js
2017-10-11 14:54:52 +02:00
Mark Rowe 0249722a02 Remove configuration handling from `Realm._waitForDownload`
There's no reason for `_waitForDownload` to be responsible for
constructing a new Realm instance when we can instead use the
constructor for that. This eliminates the potential for different
handling of the Realm configuration between `_waitForDownload` and `new
Realm`, which was responsible for various issues (#1391, #1392, #1393).
In turn, this requires that `_waitForDownload` become an instance method.

In addition, we update `Realm.openAsync` and `getSpecialPurposeRealm` to
delegate to `Realm.open` rather than reimplementing equivalent logic
themselves.

Finally, the private mechanism for registering a download progress
handler as part of the sync configuration (`_onDownloadProgress`) is
removed in favor of the public API (`progress()` on the promise returned
by `Realm.open`).
2017-10-10 21:16:23 -07:00
Thomas Goyne f4b96a1782 Check for REALM_DISABLE_ANALYTICS earlier in submit-analytics.js
Node's `require()` is synchronous and somewhat slow, so importing the modules
for submit-analytics.js ends up being about half of the runtime of
`require('realm')`. With this change, when analytics is disabled, nearly all of
the time spent on `require('realm')` (~100ms on my machine) is spent in
node-pre-gyp-related functionality for loading the native module.
2017-10-10 16:27:32 -07:00
Ashwin Phatak 4bcef8baff Add support for bulk updates (#808) 2017-10-10 16:25:47 +05:30
blagoev 5c9b254b4a fix sync error (#1379)
* fix sync error
2017-10-04 11:29:32 +02:00
blagoev aefd81ccf7 Kneth/fix partial sync (#1383)
* fix typo in subscribeToObjects
* Fix partial sync test
* Swap error and result order in callback
* Use correct url
2017-10-04 11:28:50 +02:00
Kenneth Geisshirt 19d05c2021 Merge `master` into `2.0.x` (#1377)
* Add 'deleteRealmIfMigrationNeeded' to configuration to delete a Realm if migration needed (#502)
* Minor update due to changes in objec store
2017-10-03 13:37:21 +02:00
Kenneth Geisshirt 53fec37e84 Frozen results during iteration. (#1368)
* Frozen results during iteration.
* Adding a note about iterators are frozen.
2017-10-02 23:15:19 +02:00
Kenneth Geisshirt 7c5572b451 Removing deprecated setAccessToken(). (#1371) 2017-10-02 21:03:29 +02:00
Kenneth Geisshirt feb59ae859 Partial sync (#1361) 2017-10-02 20:29:36 +02:00
Kenneth Geisshirt fe121ea27b Client reset (#1341) 2017-10-02 19:44:24 +02:00
blagoev 33c4a886d0 Merge pull request #1367 from realm/getGrantedPermissions-docs-fix
Get granted permissions docs fix
2017-10-02 18:20:08 +03:00
blagoev f4d32eba06 Pr review 2017-10-02 17:10:58 +03:00
blagoev 9fde587211 throw Error object always 2017-10-02 13:29:53 +03:00
blagoev b4bc50aacf Fix error message handling 2017-10-02 11:52:45 +03:00
blagoev b8fc18e7e9 Fix RPC server to include exception message 2017-10-02 11:15:28 +03:00
blagoev 49f65cd4da fix RPC server to handle exceptions in requests and return them as son values 2017-10-01 12:24:23 +03:00
blagoev 6e016b3e69 Remove dead code 2017-10-01 12:23:04 +03:00
blagoev 4a73b242af fix docs and TS definitions 2017-10-01 08:50:31 +03:00
blagoev 6349d22f55 Merge branch '2.0.x' into kneth/v1_v2-upgrade 2017-09-30 17:21:24 +03:00
Kenneth Geisshirt e109e32ac4 Merge branch 'master' of github.com:realm/realm-js into kneth/master-to-2.0.x 2017-09-30 09:55:14 +02:00
blagoev 6d9f85759e Fix IncompatibleSyncedRealm support 2017-09-29 21:43:04 +03:00
Ashwin Phatak 199210eb68 Add support for aggregates on collections (#807) (#1350) 2017-09-29 16:53:37 +05:30
blagoev 8e984feedb Merge branch '2.0.x' into kneth/v1_v2-upgrade 2017-09-29 12:42:27 +03:00
Thomas Goyne 154d259326 Update typescript declarations for arrays of primitives (#1359) 2017-09-28 15:03:56 -07:00
blagoev 3bf61963e8 Merge branch '2.0.x' into kneth/v1_v2-upgrade 2017-09-28 10:38:09 +03:00
blagoev 37105e7f00 Merge branch '2.0.x' into kneth/lazy-enable-sync 2017-09-28 10:29:37 +03:00
blagoev 7e048a9bee Merge pull request #1338 from realm/fix-accountInfo-2.0
Fix account info 2.0
2017-09-28 10:08:47 +03:00
blagoev 3b00719aaa Enable _adminUser in RN debug context 2017-09-28 01:26:20 +03:00
Mark Rowe 666d606914 Specify a timeout when making the HTTP request to refresh access tokens. (#1356)
* Specify a timeout when making the HTTP request to refresh access tokens.

Without the timeout, some requests are silently never made.

Fixes realm/realm-js-private#338.

* Add a changelog entry.
2017-09-27 22:52:14 +02:00
Kenneth Geisshirt 2caa14abf2 Don't expose an initializer function. 2017-09-27 20:16:44 +02:00
Kenneth Geisshirt fba3b3fc38 Merge branch '2.0.x' of github.com:realm/realm-js into kneth/v1_v2-upgrade 2017-09-27 18:10:39 +02:00
Kenneth Geisshirt f94f351bfb Adding documentation, TS definition and change log. 2017-09-27 17:53:09 +02:00
Kenneth Geisshirt 20defad505 Merge branch '2.0.x' of github.com:realm/realm-js into fix-accountInfo-2.0 2017-09-27 10:01:20 +02:00
Thomas Goyne cf0f0d127f Align the error thrown for assigning to read-only collection properties 2017-09-26 13:43:01 -07:00
Thomas Goyne 741d19458b Pass negative indices over the RPC bridge rather than special-casing -1 2017-09-26 13:43:01 -07:00
Thomas Goyne d1248b6676 Add RPC handling for the type and optional properties 2017-09-26 13:43:01 -07:00
Kenneth Geisshirt b676201e03 Alignment of permission schemas with ROS 2 (#1344)
* Alignment of permission schemas with ROS 2
2017-09-26 11:23:36 +02:00
Ashwin Phatak e1b70c2f57 Workaround for RN >= 0.49 metro-bundler check for single string literal argument to require() (#1342) 2017-09-26 10:00:31 +05:30
Thomas Goyne 2298609ce5 Merge remote-tracking branch 'origin/master' into tg/merge-master-to-2.0.x
* 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
  ...
2017-09-25 09:40:56 -07:00
Kenneth Geisshirt 49392bd4c6 Merge branch '2.0.x' of github.com:realm/realm-js into kneth/v1_v2-upgrade 2017-09-25 16:04:43 +02:00
Kenneth Geisshirt 61ad47faf5 Fixing a few typos 2017-09-25 16:03:14 +02:00
Kenneth Geisshirt b1fb8ece57 Fix typo 2017-09-23 10:37:15 +02:00
Kenneth Geisshirt 39fe8c6280 Creating a proper IncompatibleSyncedRealmError class. 2017-09-23 00:05:33 +02:00
blagoev ec6e700d33 fix retrieveAccount endpoint 2017-09-22 20:10:04 +03:00
Morten Krogh 508a547898 Typescript definition for ssl_verify_callback. 2017-09-22 13:52:49 +02:00
Thomas Goyne c0db1a6eff Merge pull request #1315 from realm/tg/test-realm-errors
Check the exception message in all Realm tests which assert an exception is thrown
2017-09-19 07:40:48 -07:00
Kenneth Geisshirt eeb78d8e1b Merge branch 'master' of github.com:realm/realm-js into 2.0.x 2017-09-18 09:46:36 +02:00
Thomas Goyne 742ff99003 Use the same error messages in the RPC code as the regular code 2017-09-15 15:00:13 -07:00
Kenneth Geisshirt b3ff7ada62 Documenting sync.config properties (#1312)
* Documenting sync.config properties
* Updating TypeScript definitions
2017-09-15 15:22:44 +02:00
Kenneth Geisshirt 8606d37141 Fixes to issues reported by eslint (#1313) 2017-09-14 10:35:02 +02:00
astigsen 208aa8ee46 Added support for in-memory realms (#1304)
* Added support for in-memory realms
2017-09-13 20:42:23 +02:00
blagoev 064b487c07 Merge branch 'master' into blagoev/promise3 2017-09-13 14:27:04 +03:00
blagoev f7db865458 Fix typescript definitions
Fixes #1306
2017-09-13 12:37:44 +03:00
Kenneth Geisshirt 6444f3fa6f Adding missing instructions to TypeScript definitions (#1301) 2017-09-13 09:21:26 +02:00
blagoev ba9321834b Fix _authenticate method to use promises only 2017-09-12 23:04:20 +03:00
blagoev eba51066d9 fix AuthError object 2017-09-12 23:02:14 +03:00
blagoev 115a2c9902 add deprecated warnings 2017-09-12 20:38:43 +03:00
blagoev 3fbd1291e1 fix _authenticate call to always pass the json object 2017-09-12 20:26:08 +03:00
Maximilian Alexander 78515e3b48 adding promisified apis 2017-09-12 20:10:52 +03:00
Kenneth Geisshirt eac393571d checkTypes() must only check the shortest array (#1297)
* Allow optional arguments when checking types
2017-09-12 15:17:59 +02:00
Kenneth Geisshirt 12a8cd5398 Adding missing TypeScript declaration of setFeatureToken (#1295)
* Adding missing TypeScript declaration of setFeatureToken
2017-09-12 14:28:16 +02:00
Ashwin Phatak 532f517ded Add Realm.deleteModel API (#573) 2017-09-12 14:45:36 +05:30
blagoev 9d02165db1 update typescript definitions 2017-09-11 15:50:44 +03:00
blagoev 0214dff951 fix possible hang on iOS 2017-09-11 15:50:44 +03:00
blagoev 43d8f2967f Fix typo 2017-09-11 15:50:44 +03:00
blagoev f8bac2d24a Fix Chrome Debugger for RN 2017-09-11 15:50:44 +03:00
blagoev e5ebb75d22 add typescript definitions 2017-09-11 15:50:44 +03:00
blagoev e1cebe073a add progress notifications api 2017-09-11 15:50:44 +03:00
Kenneth Geisshirt 356033a8c4 Merge branch 'tg/update-object-store' of github.com:realm/realm-js into 2.0.x 2017-09-08 14:56:01 +02:00
Kenneth Geisshirt 38bceddfb1 Add missing TypeScript declaration (#1285)
* Adding missing TypeScript declaration
2017-09-08 10:19:13 +02:00
Ashwin Phatak 119cd79e5d Add Realm.deleteFile API (#363) 2017-09-07 10:12:59 +05:30
Kenneth Geisshirt 0c61716c08 Fix accessToken (#1275) 2017-09-01 11:53:52 +02:00