Changelog

Version 3.6.0

2024-03-06

  • feature sldb: Optimize the requests to the back end when subscribing ServerlessDb.LongTermSubscriptions that were previously subscribed and are still not expired (WEBCOM-1859)

  • feature sldb: Automatically cancel ServerlessDb.LongTermSubscriptions with a user when s/he logs out (WEBCOM-1960)

  • fix auth: Ensure that authentication callbacks be called after the ServerlessDb (or any other service) ones (WEBCOM-1858)

  • break sldb: Remove the ServerlessDb.EventDescriptor#until and ServerlessDb.EventDescriptor#for methods to set a customized duration for a ServerlessDb.LongTermSubscription (WEBCOM-1859)

  • break auth: Remove the last parameter (first) of the Authentication#subscribe method, which was reserved to advanced usage (should not be used by applications)

Version 3.5.3

2023-07-24

Version 3.5.2

2023-07-19

Version 3.5.1

2023-07-05

  • fix Prevent the Webcom.App factory from mutating the passed option object (WEBCOM-1743)
  • misc Fix some links in the JSDoc

Version 3.5.0

2023-07-03

  • break The constants and static members are now exposed by each Webcom service they relate to, and constants and members exposed on the global Webcom object are deprecated. For example, ServerlessDb.NOW is available via Webcom.ServerlessDb.NOW instead of Webcom.NOW (WEBCOM-1503)
  • feature auth: Strengthen OAuth authentication by computing PKCE Code Challenge with SHA-256 (WEBCOM-1585)
  • feature auth: Suppression of Mobile Connect Spain as authentication provider (WEBCOM-1486).
  • feature sldb*: Introduce LongTermSubscription to support subscriptions through webhook (or push notifications for mobile client SDKs), and manage their local storage on the client with new APIs to get or clear them (WEBCOM-1670 & 1675)
  • feature sldblite: Implement the ServerlessDb.LongTermSubscription#update method for subscriptions of the ServerlessDbLite service, filling a gap wrt. the ServerlessDb service (WEBCOM-1675)
  • fix Throw when creating a WebcomApp with an invalid identifier or invalid options (WEBCOM-1716)
  • fix sldb: Allow a Constraint argument when calling ServerlessDb.ServerlessDbNode#getCache (WEBCOM-1700)
  • misc sldblite: Improve URL encoding of HTTP requests (WEBCOM-1502)
  • misc Update the internal crypto library and add SHA-256 codec to compute digests (WEBCOM-1393)

Version 3.4.1

2023-06-14

  • fix sldb: fix the REST request to the back end to create long-term subscriptions over webhook or push notification channels (WEBCOM-1703)

Version 3.4.0

2022-11-21

  • feature sldblite: add the ServerlessDbLite service, which provides a lighter alternative to the ServerlessDb one (previously known as "datasync" service). This service exclusively uses HTTP REST requests to the Webcom back end, without using any websocket, and handles neither local data cache nor real time connectivity. It also results in a more lightweight package, about 60% smaller than the one embedding the full ServerlessDb service.

Version 3.3.1

2022-10-03

  • fix auth: avoid notifications of unwanted authentication changes during OAuth flows in redirect mode (WEBCOM-1433)

Version 3.3.0

2022-09-19

  • feature datasync: add the ServerlessDb.ON_DISCONNECTION policy for scheduled writing operations (WEBCOM-1343)
  • fix make methods returning a Promise fail this promise instead of throwing an exception in case of parameter checking failure (WEBCOM-1391)
  • fix fix HTTP headers in some requests sent to the Webcom back end

Version 3.2.0

2022-07-28

  • feature datasync: add support of '.item' prefixes for "non fragmentable" data nodes (WEBCOM-1312)

Version 3.1.0

2022-06-08

Version 3.0.0

2022-05-17 This is a new major version, providing an API closer to the Webcom SDK for mobile devices

Version 2.15.14

2022-04-07

  • fix fix the proxy settings in Node.js when no 'no_proxy' environment variable is defined (WEBCOM-1313)

Version 2.15.12

2022-03-28

  • fix auth: allow an HTML page to directly call the Webcom#authWithOAuth method without looping infinitely (WEBCOM-1301)

Version 2.15.11

2022-02-17

  • fix datasync: make the client automatically reconnect when the server shuts down the websocket because of ping timeout (WEBCOM-1270)

Version 2.15.10

2022-02-03

  • misc remove the dependency to the request external library in Node.js (WEBCOM-1208)

Version 2.15.9

2022-02-02

  • fix make the import of the Webcom library return directly the Webcom class (WEBCOM-1255)
  • fix simplify the external event management (online/offline) especially for the Android SDK wrapper (WEBCOM-1245)

Version 2.15.8

2022-01-31

  • fix update the build chain components (webpack 5)

Version 2.15.7

2022-01-24

  • misc update the build chain components (webpack, babel) and shrink a bit the generated JS library

Version 2.15.6

2022-01-18

  • feature datasync: prevent the subscription callbacks from being called with data from the local cache when the subscription is done while the websocket is being established (WEBCOM-1152)

Version 2.15.5

2022-01-12

  • fix datasync: make cancelled queries keep the sibling data within the local cache (WEBCOM-1227)

Version 2.15.4

2022-01-10

  • feature datasync: send the specified keep alive period (in the datasync service options) to the websocket endpoint (WEBCOM-947) and check its range (between 30s and 5m)

Version 2.15.3

2021-12-08

  • fix datasync: add a parameter to the Webcom#unsubscribe method to request that a revocation is notified, and make this method return the updated Subscription object (WEBCOM-1192)
  • fix datasync: prevent the notified data snapshots (sent to subscription callbacks) to include child nodes with null values (WEBCOM-1190)

Version 2.15.2

2021-10-04

  • fix datasync: make the DatasyncService#offlineData include the running transactions, which have not yet been sent to the back end (WEBCOM-712)

  • break remove the support for JSONP, all browsers must now provide the XMLHttpRequest class

  • misc improve the internal API to inject window, document, XMLHttpRequest, localStorage dependencies into the Webcom library

Version 2.15.1

2021-09-27

  • fix datasync: fix the Webcom#transaction method when called with a "server value" (WEBCOM-1122)
  • fix datasync: fix the OnDisconnect#set and OnDisconnect#update methods when called with "server values" (WEBCOM-1122)
  • fix datasync: make the Webcom#transaction method properly notify the subscriptions when the transaction value is acknowledged by the back end (WEBCOM-1124)
  • fix datasync: make the Webcom#transaction method report the value acknowledged by the back end at the end of the transaction to the completion callback function and keep this value within the local cache (WEBCOM-1124)
  • fix auth: no longer log sensible authentication data at INFO level when resuming state (WEBCOM-1125)

Version 2.15.0

2021-08-30

  • feature datasync: control the local data cache policy by the value returned by completion callbacks: the data watched by a completed subscription may either be forgotten, kept or kept and still watched in background (WEBCOM-670)
  • misc datasync: deprecate the Query#offPreservingOfflineData method, the local cache policy is now controlled by the return value of the completion callbacks
  • break datasync: subscriptions are no longer persisted (in DatasyncService#offlineData) so that they can no longer be restored at start (WEBCOM-679)

Version 2.14.2

2021-07-20

  • fix datasync: fix the Promise returned by the Query#get method when the DatasyncService.completeSubscriptionOnCancelation option is true

Version 2.14.1

2021-07-08

  • feature datasync: rename cancelCallback into completionCallback in subscription callbacks and call this completionCallback with null when its subscription is canceled by the app (WEBCOM-597)
  • fix datasync: when subscribing to an unknown data node (i.e. with no value in the local cache) while offline, return a not acknowledged value (WEBCOM-1070)
  • fix datasync: when a callback subscription is revoked by the back end, clean its related data from the cache, just as when the subscription is canceled by the app (WEBCOM-597)
  • misc auth: improve the security of the retrieval of the authentication result in case of an OAuth redirected call-flow, using a PKCE-like protocol (WEBCOM-999)
  • break auth: when signing in using OAuth, the access token has moved under the AuthenticationService.AuthenticationDetails#extra property and is no longer saved in the local storage (the app has to do so explicitly if needed) (WEBCOM-604)

Version 2.14.0

2021-04-29

  • feature datasync: replace the Query#once with the Query#get one, simpler to use
  • feature datasync: improve the child_ack events when the value of a child node results from updating its parent node (WEBCOM-982)
  • fix datasync: when called with n event types and a callback, Query#off now cancels n corresponding subscriptions instead of only one (WEBCOM-987)
  • fix datasync: when the WebSocket is disconnected (WEBCOM-988):
    • pass an error to the callback of pending non-idempotent operations (including "increment"),
    • as soon as a new WebSocket is established, replay the pending authentication and idempotent operations (including "put" and "merge")
  • fix datasync: remove all websocket-related timers when the websocket is disconnected (to avoid handle leaks in the javascript event-loop)
  • fix auth: in browser environments, make the resuming of OAuth2 session (at the end of the redirection flow) properly catch rejected promises that wrap the underlying REST request
  • misc improve the internal API to inject dependencies into the Webcom library
  • misc start a long-term task to shrink the code of the Webcom library

Version 2.13.1

2021-03-10

  • fix datasync: fix the transaction function, so that the passed onComplete callback is called even in case of failure

Version 2.13.0

2021-02-11

  • feature datasync: add the Webcom#increment method to increment atomically the value of a data node (WEBCOM-818)
  • fix datasync: fix the raise of "child_ack" events to subscriptions using constraints or "queries" (WEBCOM-889)
  • misc improve the fix the MockedMember.returns method of the internal mock API to return sucessive values

Version 2.12.0

2020-12-17

  • feature datasync: add 2 new subscription events "value_ack" and "child_ack" to be notified of synchronization changes between the local cache and the Webcom back end (WEBCOM-567). Extend the DataSnapshot class with the acknowledged() method to retrieve the source of the received notification (WEBCOM-561).
  • feature new logging system, exposed via Webcom.Log. The old one (using the "logging_enabled" setter in the session storage doesn't work any longer).
  • fix auth: interpret a wrong imported authentication state as unauthenticated instead of throwing

Version 2.11.12

2020-12-02

  • fix datasync: make the authentication subscription from datasync be notified after all other ones, so that subscriptions to the datasync service are guaranteed to read a consistent state updated by other applicative subscriptions to the authentication service.

Version 2.11.10

2020-10-22

  • fix datasync: prevent "onComplete" callbacks from being called twice for write operations in certain circumstances, e.g. while logging out (WEBCOM-638)

Version 2.11.9

2020-10-19

  • fix datasync: switch the ".info/connection/initializing" property off when the network goes down or when the WS is explicitly disconnected (WEBCOM-320)

Version 2.11.8

2020-10-12

  • feature datasync: extend the ".info/connection/initializing" property to every web socket connection attempt and not only the initial one (WEBCOM-320)

Version 2.11.7

2020-10-08

  • feature datasync: add the "initializing" property to ".info/connection" to handle the transient state during the initial web socket connection attempt (WEBCOM-320)
  • fix datasync: make the Query#cleanOfflineData method clean the cache in addition to cancelling all implicit subscriptions (WEBCOM-664)

Version 2.11.6

2020-09-24

  • fix datasync: fix the exception thrown by the Query#cleanOfflineData method
  • fix auth: resolve the promises returned by authentication functions after notifying all subscribers of the resulting authentication changes

Version 2.11.5

2020-09-08

  • fix remove a buggy and redundant log in the implementation of REST requests for node.js

Version 2.11.4

2020-09-02

  • fix datasync: fix the Webcom#unsubscribe method (the underlying REST request was buggy)

Version 2.11.3

2020-08-05

  • fix fix the target of mocked static functions in the internal mock API

Version 2.11.2

2020-07-29

Version 2.11.1

2020-07-02

  • fix auth: fix the multifactor authentication that was broken

Version 2.11.0

2020-07-02

  • fix auth: run the OAuth2 call flow using a session id generated locally on the client and private to the client (WEBCOM-599)
  • feature datasync: start refactoring the API on a per-service basis:
    • add the AuthenticationService and DatasyncService classes and the WebcomBase#authenticator and WebcomBase#datasync properties to access them
    • move Webcom#goOnline, Webcom#goOffline, Webcom#shouldBeOnline, Webcom#persist methods to DatasyncService#connect, DatasyncService#disconnect, DatasyncService#shouldBeConnected and DatasyncService#persist
    • move Webcom#authState property to AuthenticationService#currentState
    • update the format of options passed to the Webcom constructor (to be continued)
    • prepare a new global logging mechanism (to be continued)
  • feature datasync: add DatasyncService#offlineData, DatasyncService#cleanOfflineData and Query#offPreservingOfflineData to properly preserve data within the local cache when unwatching them (WEBCOM-575)
  • feature datasync: manage the loss of authentication at web-socket reconnection (WEBCOM-575)
  • feature datasync: add the ".info/authentication" virtual node to make it possible to watch the full authentication state real-time
  • feature datasync: add the ".info/connection" virtual node that gathers the deprecated ".info/connected" and ".info/serverTimeOffset" nodes
  • misc improve the internal mock API (add the MockedMember#member property to retrieve the mocked object)
  • misc auth: simplify the internal implementation of the OAuth2 call-flow, no longer using the WinChan library
  • misc datasync: move the Webcom#name, Webcom#name and Webcom#parent methods to the Query class

Version 2.10.4

2020-05-12

  • fix datasync: restore a private method reserved for mobile Software Development Kits

Version 2.10.3

2020-05-11

  • feature datasync: add a path parameter to Webcom.root() in order to get references with an absolute path specification, and move this method into the Query class (WEBCOM-572)
  • fix datasync: fix the restoration of persisted data at start-up (WEBCOM-562)

Version 2.10.2

2020-04-07

  • feature datasync: add the virtual ".info/reachable" node to check the device network connectivity (WEBCOM-547)
  • fix datasync: fix an exception thrown in special conditions when a subscription is revoked by the back end (WEBCOM-551)
  • fix datasync: fix the cancellation callback when a subscription with an empty startAt query is revoked by the back end (WEBCOM-551)

Version 2.10.1

2020-03-26

  • feature auth: add an option to Webcom.authWithOAuth() in order to control the redirection behavior (WEBCOM-451)
  • fix datasync: fix the lock on websocket when attempting to run online with the goOnline() function (WEBCOM-541)
  • fix datasync: fix missing or wrongs calls to child_changed subscription callbacks in some synchronization cases (WEBCOM-533)
  • fix remove trailing spaces from formatted logs

Version 2.10.0

2020-03-04

  • feature datasync: add the web-hook subscription API (WEBCOM-487)
  • misc doc: improve the ergonomic design of Javascript Reference documentation page
  • misc add an internal mock API for unit tests of wrapping SDK like iOS or Android (WEBCOM-400)

Version 2.9.7

2020-03-03

  • fix remove the URI validation for https proxy in nodejs, which was buggy with some URIs (WEBCOM-532)

Version 2.9.6

2020-02-17

  • fix datasync: remove the usage of the String.prototype.startsWith() and Array.prototype.findIndex() methods, which are not supported by IE11 (WEBCOM-527)

Version 2.9.4

2020-02-12 datasync: fix the reading of updated data from the server that contains nodes with keys starting with the ".list." special prefix (WEBCOM-521)

Version 2.9.3

2020-02-03 (port fixes from 2.8.1)

Version 2.8.1

2020-02-03

  • fix doc: Remove the private sections that appeared within the public reference doc

Version 2.9.2

2020-01-22

  • fix datasync: fix the Webcom#update method when working offline in persistent mode (WEBCOM-472)
  • fix auth: fix the Webcom#updateIdentityProfile method when passing no data or a null data
  • misc auth: pass the token to decode within header to the REST request (WEBCOM-457)

Version 2.9.1

2020-01-07

  • fix datasync: reject hashed path segments containing forbidden characters in the Webcom#child method (WEBCOM-305)

Version 2.9.0

2020-01-07

  • feature datasync: interpret special path segments (".", "..", "#...", ".list....") in the Webcom#child method (WEBCOM-305)
  • feature datasync: route the opening of web-sockets on the datasync/v2 route (WEBCOM-224)
  • fix auth: make the Webcom#removeAuthCallback method actually return a boolean as described in the documentation
  • fix auth: make the Webcom#logout method call the passed callback even in offline mode (WEBCOM-455)
  • fix auth: fix the URL returned by Webcom#avatarURL method for the "facebook" provider
  • fix doc: generate a target="_blank" attribute for all external href links in the javascript documentation (WEBCOM-404)

Version 2.8.0

2019-11-21

  • feature datasync: deprecate the Webcom#resume method, it is now called automatically when creating the first Webcom instance for a given application
  • feature auth: add the Webcom#addAuthCallback and Webcom#removeAuthCallback methods and deprecate the Webcom#registerAuthCallback and Webcom#unregisterAuthCallback methods
  • feature auth: add the Webcom#authState property to get the current authentication state
  • feature datasync: add the Webcom#pushIdToDateTime method to retrieve the timestamp associated to a push id
  • feature auth: add the Webcom#avatarURL method to get a user's avatar from the auth details passed to the authentication callbacks
  • feature auth: add the Webcom#useCurrentContextForNextAuthOperation and Webcom#useNewContextForNextAuthOperation methods to turn sign-in and sign-up operations in multi- or single-factor modes (WEBCOM-117)
  • feature auth: add the Webcom#addIdentity method and depreciate Webcom#addAccount
  • feature auth: add the Webcom#authInternally method, which manages both authentication with email/password and authentication with phone, and deprecate Webcom#authWithPassword and Webcom#authWithPhone
  • feature datasync: implement a ping-pong mechanism on the websocket to watch its disconnection in cases the OS doesn't send the offline event (WEBCOM-217)
  • feature datasync: make the Webcom#persist method return a boolean indicating whether some data have been actually persisted
  • feature datasync: make the api.Query#on and api.Query#once methods accept a list of event types (WEBCOM-302)
  • feature datasync: add an a valueFormat option to the Webcom#transaction method to pass a api.DataSnapshot object instead of a JSON object to the update function
  • feature datasync: make Webcom#set, Webcom#update, Webcom#push, Webcom#remove, Webcom#transaction, api.Query#on, api.Query#once methods pass errors to their callback functions instead of throwing them
  • feature add the api.WebcomApp class to represent a Webcom app associated to a Webcom platform
  • feature add a constructor signature to the Webcom class that accepts a api.WebcomApp descriptor
  • feature datasync: add a {@code goOnline} option to the Webcom constructor to prevent the websocket to be established at startup (WEBCOM-218)
  • fix datasync: make the Webcom#persist function save pending write operations together with locally cached data (WEBCOM-258)
  • fix datasync: a new subscription doesn't call its callbacks on cached data when it requires to send a listen command to the server and the websocket is already established (WEBCOM-245)
  • fix datasync: fix queries combining api.Query#startAt and api.Query#limit constraints when the queried node has already an ongoing subscription (WEBCOM-249)
  • fix datasync: fixed queries with api.Query#startAt and {link api.Query#limit} (WEBCOM-249)
  • fix datasync: make Webcom#goOnline and Webcom#goOffline switch on or off only the websocket associated to the Webcom instance (WEBCOM-218)
  • fix datasync: make a websocket switched off by Webcom#goOffline stay off until the next call to Webcom#goOnline, even if the network comes online (WEBCOM-218)
  • fix datasync: make each websocket save its own authentication state without collision with each other (WEBCOM-218)
  • fix datasync: make the local authentication callbacks passed to the Webcom#authXXX methods not require a datasync websocket to be called (WEBCOM-218)
  • misc datasync: use the new /datasync/v2 route to establish the websocket (WEBCOM-228)

Version 2.7.1

2019-03-27

  • feature datasync: add Webcom#shouldBeOnline to get the websocket connectivity state expected by the user
  • fix auth: fix the promise returned by the new Webcom#updateIdentityProfile function
  • misc update dependencies of nodejs version: faye-websocket (0.11.1), request (2.88.0), babel-runtime (6.26.0)

Version 2.7.0

2019-03-13

Version 2.6.1

2018-09-19

  • fix fix some REST request that were failing in nodejs
  • misc doc: replace bower with node in the quickreference guide

Version 2.6.0

2018-09-12

  • feature datasync: add a persistent mode to make it possible to work offline
  • fix datasync: make several queries on the same node work together
  • fix datasync: properly initialize the online monitor when run on Android
  • fix datasync: adapt the promises returned by the Webcom API to work properly with iOS native callbacks
  • misc doc: fix typo in wakeup doc

Version 2.5.0

2018-08-23

Version 2.4.1

2018-08-23

  • misc doc: fix typo in equalsTo Quary SDK method
  • misc doc: fix typo in REST API tutorial
  • misc doc: fix android api doc references

(doc fixes only)

Version 2.4.0

2018-07-09

Version 2.3.2

2018-06-21

  • fix a mis-wired test was randomly crashing the websocket initialization in NodeJs

Version 2.3.1

2018-06-15

  • fix auth: fix the Promise returned by authWithPrivateKey()

Version 2.3.0

2018-06-06

  • feature auth: authentication with a custom 3rd-party identity provider
  • fix auth: improve the management of rejected promises when using ES5-callback style
  • misc doc: update tutorials with OIDC and custom login

Version 2.2.1

2018-05-29

  • fix auth: fix POST requests in nodejs, with forms including a JSON object field

Version 2.2.0

2018-04-05

  • feature datasync: add queries api.Query#limit, api.Query#endAt, api.Query#startAt and api.Query#equalTo methods

Version 2.1.0

2018-03-12

Version 2.0.0

2018-01-18

  • feature auth: add authentication with Mobile Connect for some Orange countries (France, Spain, Morocco, Jordan, Madagascar)
  • feature auth: add support for Orange-Wassup authentication (used by mobile SDKs that encapsulate the javascript SDK)
  • break auth: some error message codes have changed for authentication-related operations
  • feature auth: improve the error message of XHR requests in case of network error

 


 

Older versions

These versions are no longer supported and may not work anymore.

Version 1.3.2

2017-06-29

  • feature auth: add authentication with login-oauth2
  • feature auth: add an optional user-profile option to the authWithPassword method
  • feature auth: add the authWithToken and authWithPrivateKey methods and deprecate the auth method
  • feature auth: use the callback function passed to authXXX methods act as a (local) Promise-callback and no longer register it as a global authentication callback
  • fix auth: fix transport for REST request in nodejs
  • fix datasync: fix transaction method when the hash of the data to update has changed
  • break auth: deprecate the unauth method, use Webcom#logout instead

Version 1.2.4

2017-02-16

  • fix proxy usage with nodejs

Version 1.2.3

2017-02-08

  • fix proxy support for node. Uses HTTPS_PROXY or https_proxy environment variable.

Version 1.2.2

2017-01-17

  • feature auth: add anonymous login feature
  • feature datasync: add the transaction method

Version 1.0.3

2016-07-06

  • fix fix crash on react-native: returns empty useragent if navigator.useragent undefined

Version 1.0.1

2016-06-09

  • break change namespace URL
  • Before : https://webcom.orange.com/base/YOUR_NAMESPACE
  • Now : https://io.datasync.orange.com/base/YOUR_NAMESPACE
  • fix auth: use XHR for login purpose with Safari browsers

Version 0.2.3

2015-11-23

  • feature add proxy support for nodejs:

Use HTTPS_PROXY env variable to set a proxy, for example:

  • http://proxy.example.com
  • http://username:password@proxy.example.com (with auth)
show
deprecated