From 5846b0c0494d5f6a252d1f236eb9b3cc8e8c76c1 Mon Sep 17 00:00:00 2001 From: Mike Ng Date: Wed, 28 Mar 2018 12:40:56 -0700 Subject: [PATCH 1/6] Add release notes for the beta version. --- packages/optimizely-sdk/CHANGELOG | 33 +++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/packages/optimizely-sdk/CHANGELOG b/packages/optimizely-sdk/CHANGELOG index bc5f2ace4..3d6a3fa05 100644 --- a/packages/optimizely-sdk/CHANGELOG +++ b/packages/optimizely-sdk/CHANGELOG @@ -1,7 +1,36 @@ ------------------------------------------------------------------------------- 2.0.0-beta1 -------------------------------------------------------------------------------- -* Consolidate JS and Node repos and packages into one. +April 15th, 2018 +------------------------------------------------------------------------------- +This major release of the Optimizely SDK introduces APIs for Feature Management. It also introduces some breaking changes listed below. + +### New Features +* Introduces the `isFeatureEnabled` API to determine whether to show a feature to a user or not. +``` +var enabled = optimizelyClient.isFeatureEnabled(‘my_feature_key’, ‘user_1’, userAttributes); + +// to get all enabled features for the user you can call `getEnabledFeatures` +var enabledFeatures = optimizelyClient.getEnabledFeatures(‘user_1’, userAttributes); +``` + +* Introduces Feature Variables to configure or parameterize your feature. There are four variable types: `Integer`, `String`, `Double`, `Boolean`. +``` +var stringVariable = optimizelyClient.getFeatureVariableString(‘my_feature_key’, ‘string_variable_key’, ‘user_1’); +var integerVariable = optimizelyClient.getFeatureVariableInteger(‘my_feature_key’, ‘integer_variable_key’, ‘user_1’); +var doubleVariable = optimizelyClient.getFeatureVariableDouble(‘my_feature_key’, ‘double_variable_key’, ‘user_1’); +var booleanVariable = optimizelyClient.getFeatureVariableBoolean(‘my_feature_key’, ‘boolean_variable_key’, ‘user_1’); +``` + +### Breaking changes +* The `track` API with revenue value as a stand-alone parameter has been removed. The revenue value should be passed in as an entry of the event tags map. The key for the revenue tag is `revenue` and will be treated by Optimizely as the key for analyzing revenue data in results. +``` +var eventTags = { + ‘revenue’: 1200 +}; + +optimizelyClient.track(‘event_key’, ‘user_id’, userAttributes, eventTags); +``` +* The package name has changed from `optimizely-client-sdk` to `optimizely-sdk` as we have consolidated both Node and JavaScript SDKs into one. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- From 14c2580df873d19c958fc800d3206ccde42b4b30 Mon Sep 17 00:00:00 2001 From: Mike Ng Date: Wed, 28 Mar 2018 12:44:49 -0700 Subject: [PATCH 2/6] Add MD extension to changelog. --- packages/optimizely-sdk/{CHANGELOG => CHANGELOG.MD} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename packages/optimizely-sdk/{CHANGELOG => CHANGELOG.MD} (99%) diff --git a/packages/optimizely-sdk/CHANGELOG b/packages/optimizely-sdk/CHANGELOG.MD similarity index 99% rename from packages/optimizely-sdk/CHANGELOG rename to packages/optimizely-sdk/CHANGELOG.MD index 3d6a3fa05..bb51caf4d 100644 --- a/packages/optimizely-sdk/CHANGELOG +++ b/packages/optimizely-sdk/CHANGELOG.MD @@ -1,5 +1,5 @@ ------------------------------------------------------------------------------- -2.0.0-beta1 +## 2.0.0-beta1 April 15th, 2018 ------------------------------------------------------------------------------- This major release of the Optimizely SDK introduces APIs for Feature Management. It also introduces some breaking changes listed below. From 41080e80b1f55f567051bf69d3e4c78da2254cac Mon Sep 17 00:00:00 2001 From: Mike Ng Date: Wed, 28 Mar 2018 12:48:10 -0700 Subject: [PATCH 3/6] Re-format the changelog. --- packages/optimizely-sdk/CHANGELOG.MD | 124 ++++++--------------------- 1 file changed, 26 insertions(+), 98 deletions(-) diff --git a/packages/optimizely-sdk/CHANGELOG.MD b/packages/optimizely-sdk/CHANGELOG.MD index bb51caf4d..425b070cc 100644 --- a/packages/optimizely-sdk/CHANGELOG.MD +++ b/packages/optimizely-sdk/CHANGELOG.MD @@ -1,7 +1,6 @@ -------------------------------------------------------------------------------- ## 2.0.0-beta1 April 15th, 2018 -------------------------------------------------------------------------------- + This major release of the Optimizely SDK introduces APIs for Feature Management. It also introduces some breaking changes listed below. ### New Features @@ -31,187 +30,116 @@ var eventTags = { optimizelyClient.track(‘event_key’, ‘user_id’, userAttributes, eventTags); ``` * The package name has changed from `optimizely-client-sdk` to `optimizely-sdk` as we have consolidated both Node and JavaScript SDKs into one. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.6.0 -------------------------------------------------------------------------------- +## 1.6.0 + * Bump optimizely-server-sdk to version 1.5.0, which includes: - Implemented IP anonymization. - Implemented bucketing IDs. - Implemented notification listeners. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.5.1 -------------------------------------------------------------------------------- +## 1.5.1 * Bump optimizely-server-sdk to version 1.4.2, which includes: - Bug fix to filter out undefined values in attributes and event tags - Remove a duplicated test -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.5.0 -------------------------------------------------------------------------------- +## 1.5.0 * Bump optimizely-server-sdk to version 1.4.0, which includes: - Add support for numeric metrics. - Add getForcedVariation and setForcedVariation methods for client-side variation setting - Bug fix for filtering out null attribute and event tag values -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.4.3 -------------------------------------------------------------------------------- +## 1.4.3 * Default skipJSONValidation to true * Bump optimizely-server-sdk to version 1.3.3, which includes: - Removed JSON Schema Validator from Optimizely constructor - Updated SDK to use new event endpoint - Minor bug fixes -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.4.2 -------------------------------------------------------------------------------- +## 1.4.2 * Minor performance improvements. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.4.1 -------------------------------------------------------------------------------- +## 1.4.1 * Switched to karma/browserstack for cross-browser testing * Removed es6-promise * Bump optimizely-server-sdk to version 1.3.1, which includes: - Minor performance improvements. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.4.0 -------------------------------------------------------------------------------- +## 1.4.0 * Reduce lodash footprint. * Bump optimizely-server-sdk to version 1.3.0, which includes: - Introduced user profile service. - Minor performance and readibility improvements. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.3.5 -------------------------------------------------------------------------------- +## 1.3.5 * Bump optimizely-server-sdk to version 1.2.3, which includes: - Switched to json-schema library which has a smaller footprint. - Refactored order of bucketing logic. - Refactor lodash dependencies. - Fixed error on validation for objects with undefined values for attributes. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.3.4 -------------------------------------------------------------------------------- +## 1.3.4 * Bump optimizely-server-sdk to version 1.2.2, which includes: - Use the 'name' field for tracking event tags instead of 'id'. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.3.3 -------------------------------------------------------------------------------- +## 1.3.3 * Include index.js in package.json files to make sure it gets published regardless of node environment. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.3.2 -------------------------------------------------------------------------------- +## 1.3.2 * Bump to 1.3.2 to re-publish to npm -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.3.1 -------------------------------------------------------------------------------- +## 1.3.1 * Bump optimizely-server-sdk to version 1.2.1, which includes: - Gracefully handle empty traffic allocation ranges. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.3.0 -------------------------------------------------------------------------------- +## 1.3.0 * Bump optimizely-server-sdk to version 1.2.0, which includes: - Introduce support for event tags. - Add optional eventTags argument to track method signature. - Removed optional eventValue argument from track method signature. - Removed optional sessionId argument from activate and track method signatures. - Allow log level config on createInstance method. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.2.2 -------------------------------------------------------------------------------- +## 1.2.2 * Remove .npmignore to consolidate with .gitignore. * Add dist and lib directories to "files" in package.json. -------------------------------------------------------------------------------- -1.2.1 -------------------------------------------------------------------------------- +## 1.2.1 * Fix webpack build error. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.2.0 -------------------------------------------------------------------------------- +## 1.2.0 * Bump optimizely-server-sdk to version 1.1.0, which includes: - Add optional sessionId argument to activate and track method signatures. - Add sessionId and revision to event ticket. - Add 'Launched' status where user gets bucketed but event is not sent to Optimizely. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.1.1 -------------------------------------------------------------------------------- +## 1.1.1 * Bump to optimizely-server-sdk to version 1.0.1, which includes: - Fix bug so conversion event is not sent if user is not bucketed into any experiment. - Bump bluebird version from 3.3.5 to 3.4.6. - Update event endpoint from p13nlog.dz.optimizely to logx.optimizely. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.1.0 -------------------------------------------------------------------------------- +## 1.1.0 * Add global variable name export for use in non-CommonJS environments * Remove redundant lodash core dependency to reduce bundle bloat -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -1.0.0 -------------------------------------------------------------------------------- +## 1.0.0 * Introduce support for Full Stack projects in Optimizely X with no breaking changes from previous version. * Introduce more graceful exception handling in instantiation and core methods. * Update whitelisting to take precedence over audience condition evaluation. * Fix bug activating/tracking with attributes not in the datafile. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -0.1.4 -------------------------------------------------------------------------------- +## 0.1.4 * Add functionality for New Optimizely endpoint. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -0.1.3 -------------------------------------------------------------------------------- +## 0.1.3 * Add environment detection to event builder so it can distinguish between events sent from node or the browser. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -0.1.2 -------------------------------------------------------------------------------- +## 0.1.2 * Add CORS param to prevent browsers from logging cors errors in the console when dispatching events. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -0.1.1 -------------------------------------------------------------------------------- +## 0.1.1 * Remove percentageIncluded field from JSON schema, which is not needed. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -0.1.0 -------------------------------------------------------------------------------- +## 0.1.0 * Beta release of the Javascript SDK for our Optimizely testing solution -------------------------------------------------------------------------------- From c074adda36b7274b80c7bef667b7d38c0d3f1d85 Mon Sep 17 00:00:00 2001 From: Mike Ng Date: Wed, 28 Mar 2018 15:04:37 -0700 Subject: [PATCH 4/6] Move getEnabledFeatures to its own bullet. --- packages/optimizely-sdk/CHANGELOG.MD | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/optimizely-sdk/CHANGELOG.MD b/packages/optimizely-sdk/CHANGELOG.MD index 425b070cc..b409b5cf2 100644 --- a/packages/optimizely-sdk/CHANGELOG.MD +++ b/packages/optimizely-sdk/CHANGELOG.MD @@ -6,28 +6,29 @@ This major release of the Optimizely SDK introduces APIs for Feature Management. ### New Features * Introduces the `isFeatureEnabled` API to determine whether to show a feature to a user or not. ``` -var enabled = optimizelyClient.isFeatureEnabled(‘my_feature_key’, ‘user_1’, userAttributes); +var enabled = optimizelyClient.isFeatureEnabled('my_feature_key', 'user_1', userAttributes); -// to get all enabled features for the user you can call `getEnabledFeatures` -var enabledFeatures = optimizelyClient.getEnabledFeatures(‘user_1’, userAttributes); +* You can also get all the enabled features for the user by calling: +``` +var enabledFeatures = optimizelyClient.getEnabledFeatures('user_1', userAttributes); ``` * Introduces Feature Variables to configure or parameterize your feature. There are four variable types: `Integer`, `String`, `Double`, `Boolean`. ``` -var stringVariable = optimizelyClient.getFeatureVariableString(‘my_feature_key’, ‘string_variable_key’, ‘user_1’); -var integerVariable = optimizelyClient.getFeatureVariableInteger(‘my_feature_key’, ‘integer_variable_key’, ‘user_1’); -var doubleVariable = optimizelyClient.getFeatureVariableDouble(‘my_feature_key’, ‘double_variable_key’, ‘user_1’); -var booleanVariable = optimizelyClient.getFeatureVariableBoolean(‘my_feature_key’, ‘boolean_variable_key’, ‘user_1’); +var stringVariable = optimizelyClient.getFeatureVariableString('my_feature_key', 'string_variable_key', 'user_1'); +var integerVariable = optimizelyClient.getFeatureVariableInteger('my_feature_key', 'integer_variable_key', 'user_1'); +var doubleVariable = optimizelyClient.getFeatureVariableDouble('my_feature_key', 'double_variable_key', 'user_1'); +var booleanVariable = optimizelyClient.getFeatureVariableBoolean('my_feature_key', 'boolean_variable_key', 'user_1'); ``` ### Breaking changes * The `track` API with revenue value as a stand-alone parameter has been removed. The revenue value should be passed in as an entry of the event tags map. The key for the revenue tag is `revenue` and will be treated by Optimizely as the key for analyzing revenue data in results. ``` var eventTags = { - ‘revenue’: 1200 + 'revenue': 1200 }; -optimizelyClient.track(‘event_key’, ‘user_id’, userAttributes, eventTags); +optimizelyClient.track('event_key', 'user_id', userAttributes, eventTags); ``` * The package name has changed from `optimizely-client-sdk` to `optimizely-sdk` as we have consolidated both Node and JavaScript SDKs into one. From 7c0522cb61ede7801cb36d1efc26e4af5c43246e Mon Sep 17 00:00:00 2001 From: Mike Ng Date: Wed, 28 Mar 2018 16:01:04 -0700 Subject: [PATCH 5/6] Fix indentation. --- packages/optimizely-sdk/CHANGELOG.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/optimizely-sdk/CHANGELOG.MD b/packages/optimizely-sdk/CHANGELOG.MD index b409b5cf2..87de87d60 100644 --- a/packages/optimizely-sdk/CHANGELOG.MD +++ b/packages/optimizely-sdk/CHANGELOG.MD @@ -7,6 +7,7 @@ This major release of the Optimizely SDK introduces APIs for Feature Management. * Introduces the `isFeatureEnabled` API to determine whether to show a feature to a user or not. ``` var enabled = optimizelyClient.isFeatureEnabled('my_feature_key', 'user_1', userAttributes); +``` * You can also get all the enabled features for the user by calling: ``` From 10cf380dd7d1848a66af113e0a533be90bef960b Mon Sep 17 00:00:00 2001 From: Mike Ng Date: Wed, 28 Mar 2018 16:08:06 -0700 Subject: [PATCH 6/6] Include refreshed encrypted BS keys for tests on Travis. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ae373bb3b..2f61b33f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,9 +10,9 @@ branches: env: global: # BROWSER_STACK_USERNAME - - secure: OyWUgwuPAxKaf8X627DjZDkp+h5uvLntJYcMTtq4FUTaokKBk7UbNs5MW2pP1rbzHIqEQDuj3WneuODMYpumH/gq9wwFSNgZipHzSbKUWMOPW3njIuN6N9ikkzVijEUh2ljK4wC3BVOWfaatR4J/KTpQTaJ6LanOabCo2StB70bGxfFvrHAAfRAAAGjVyAPovCcuDI4glfdEQa0H95iTKxCpPK9/oDDZCC8pyjHhb7zVin/D2JDPSVlEmiUPanTP3L//ICLKcdL/v3W5b4Sh1nuKFsHMxEXAPTl7/oTkG7hAcIILBmKhQz58P/rgmjSkz5GvC4CbwSOJigQAY7AUTZuW0SYWQh95TiaIXwVMnHSG5ZZiyGgeG8bpQJjn5yAiUViZHHGI7MUUvfxpFFYss2pS/gOWi21Qb5qXrb5qlPWmTLpxhQ6VOTYem/1/KeBIpSwP4+6qjDV+BYZYdrx+YbB4NEdDXGvHvt2gDXc1UhaPfBegWcyoC65iawsKrgTtID0Au+4hwvuZu3o6D0JCh2604+rHMD7OK9pjGjH5FiTI0eY0qhF6Nq3hg2l3GUpkgGH9UNWs6Hs/dJ2fFF34fE9Ki/2c6hZDmYxWqOC8oO5I39ECUq+pG31WdfSmIw9LcgA2AqxqbkXdBK7eYvNXRdg+QQcEx31Yvm5oCsc4lLE= + - secure: WnyM4gMsi2n69O/YZUD/pYwHJXdKDcBv3Hwft2cCw52yYc+z75uuRgdaLKs4BPisckBtnR17dH7hKlPX3HWwjCoqQm1q5qNpbJrArWaEcbotWGF2YFy21ZZ4rKNQmJqdgRj6XFZhLHbncA8v2gQPK7F6GUJ0vsJF/kiTfxAUjefR23oorcKSQrh9BfOxNAYu2Ma92qlaaMmHYbBdlNDM45/EQE+LnPCfboCiJD/5zTYq4Q+XhKLPV01vUDU60pj9ckDNXyLj9X2BwMbAzGAPGE4qTAB/IrMndVsUXblsahtwKQ6yrsUrsdTASz8/3oNkImtY7fqU874jSeG3d7PNBfZs47zkXEVy73ZWNBgM9rzVS5cPaIU3wqpuBoXFntDJcdHQhNTWEYdxmtcTUmxKt5TdUzDhrrkcti2WVLabU3N52aOBeOM0XBpfLkbV+HT6oWi3bNUb+EDMHvCxOxsP4IoEDfFs9HMzNIO3mmC3+2DFbI7s2Mb2oacAut38MbJDYSDTOLL4smG8scA3E0RQO4r8+TNk4aRIMQc7vCKqz7PpbO7Aj9dXSpeHrDmIszSmEoQqmaaGsRBwbXRom2P8fB9FcTbd/wbsfgoFNEPz5DlbtCtCmt0pQMa+3myWveKH52WC5KlFijBSDjYOMUnXbLnj5fK5eKaWp+z6/qcNwU8= # BROWSER_STACK_ACCESS_KEY - - secure: PkWLvFy3SKHXGxKfc4RMTao036tUkYd6lGbHE+I/qgbLG2auZca+q9aHaxvnbIkMOWTcIHrCPRzvIY1Alq2LyH3OziHR5u1I9MA+TIKTpcaZzSXh5qlELwMCOQnEmwJyqAIuQNq0MGiEMhRzKej1yuC7aUnSk+QJJf4vgUNsPU7qfEPXQEVSVmLMgWr/0aIxcqeB0JB+NTNJGDcTJrwvwH9K5zGW19pAIIbwYHLJ2eFth6c9FfCPTfLmbpC0yWujMVea1N6Tbo46aUoFEGE1/wgercJW88AXXiK9Wa2S+801Em4UvERt1wH3k+iRTZTUbia9Bs3KPdYeyiBIoejWiES2zk4U2BVQaHWRO3vR90En7M9f7DoCzDLklOg2ZvSeLQ8XmX/979iIdGMUmVGW5WffYj+O2piWnaPVPeS5VsUPfZFoFfnIDHkTAtI5eDxkpuyKDqJpQr+fM5K4w9A9G0wBDDOIoBVpqjUo3OK7PyUBRyhA3AesK/4E0iWtmIEK3IQRyzVrL9ifwmTA0ikrHIBETslcYF78qUOVXwn+VYyZhJHlakG6SOGWwOl92cZcEf9wGRP8hFgB5f4kZITgNQMRzj/x/K+YPLG4+8V9DBKXYrd6uUaItJ78pE6zdMS3BCduds98FqfsYNn7kfa1CRXtJ3M/SC6ZAFjE/8lhEcg= + - secure: U0GGZw46rJowBtH9gVluIrerB40u2b3uZpH0HsOdLlsXCCaTVk4JXX/JPVPashWAFLC7Enk3UOE4ofeEpVd0wbG6CxtG9/gklc2U2tvkqsdPpFZKaRrXoUzCyyPOmHEC2mXDXctbrncmttM4APaceRfbdTBEZIIfyLJadomjWylA61szFE9IZjvJpiwJO2xa5HI9GVRu3yXJci+riJux+JsDmfJ1hNwv3waMeeg/scddUH0hfgq69ftGs8cpMlYiO20eh32S7uPF7/IJTH1fDJjVKYQZwpypkF6AeI+od5CFTY1ajb25eaBNXThLS0Bo9ZJE/8Sogvon21dEJkt/ClY6R341InbAFXZvz7jyQAisvh0I4zxcu0VUCfh7bEUl6GXMO8VJnyxHEfqB+AIT2RoMXckkhulwiNUsJYH1yJ8mjnLvZq85mWBCp4n4jg0K6Wf46lHpjnHOVpLyLyoFGfiPf90AQVL02AJ3/ia8RkMuj0Ax+AGtiTC/+wy7dsDQOif/VpBNJcx/RciQ24mYOGzAMh4GsUWnXaZ9vXSxliogVNrmIefK5invJ0omv9pIx8NZHTHYGaulh4w6JsliiEq2kH78SlyvSrcsFGTwCY97LLaxiLm/75/Zf+F7LajKC23Fbtnj/LQizitFZqGMJ09DnR52krBAeultqRq8QLM= before_script: - npm install grunt-cli -g install: npm install