Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@mozilla/nimbus-shared

Package Overview
Dependencies
Maintainers
15
Versions
28
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mozilla/nimbus-shared - npm Package Compare versions

Comparing version 1.6.2 to 1.7.0

272

dist/data.json

@@ -59,2 +59,89 @@ {

"experiment-recipe-samples": {
"android-96-multifeature": {
"appId": "org.mozilla.firefox",
"appName": "fenix",
"application": "org.mozilla.fenix",
"arguments": {},
"branches": [
{
"features": [
{
"enabled": false,
"featureId": "fenix-default-browser",
"value": {}
},
{
"enabled": true,
"featureId": "homescreen",
"value": {
"sections-enabled": {
"jumpBackIn": false,
"pocket": false,
"recentExplorations": false,
"recentlySaved": false,
"topSites": true
}
}
}
],
"ratio": 1,
"slug": "control"
},
{
"features": [
{
"enabled": true,
"featureId": "fenix-default-browser",
"value": {}
},
{
"enabled": true,
"featureId": "homescreen",
"value": {
"sections-enabled": {
"jumpBackIn": true,
"pocket": true,
"recentExplorations": true,
"recentlySaved": true,
"topSites": true
}
}
}
],
"ratio": 1,
"slug": "default_browser_newtab_banner"
}
],
"bucketConfig": {
"count": 10000,
"namespace": "firefox-android-multifeature-test",
"randomizationUnit": "nimbus_id",
"start": 0,
"total": 10000
},
"channel": "nightly",
"endDate": null,
"featureIds": [
"fenix-default-browser",
"homescreen"
],
"id": "firefox-android-multifeature-test",
"isEnrollmentPaused": false,
"outcomes": [
{
"priority": "secondary",
"slug": "default-browser"
}
],
"probeSets": [],
"proposedDuration": 28,
"proposedEnrollment": 7,
"referenceBranch": "control",
"schemaVersion": "1.6.2",
"slug": "firefox-android-multifeature-test",
"startDate": "2021-11-01",
"targeting": "true",
"userFacingDescription": "firefox-android-multifeature-test",
"userFacingName": "firefox-android-multifeature-test"
},
"desktop-90": {

@@ -250,84 +337,171 @@ "appId": "firefox-desktop",

},
"desktop-95": {
"slug": "testing-multifeature-desktop",
"desktop-95-multifeature": {
"appId": "firefox-desktop",
"appName": "firefox_desktop",
"channel": "",
"endDate": null,
"application": "firefox-desktop",
"arguments": {},
"branches": [
{
"slug": "control",
"ratio": 1,
"feature": {
"value": {},
"enabled": true,
"featureId": "no-feature-firefox-desktop"
"featureId": "unused-feature-id-for-legacy-support",
"enabled": false,
"value": {}
},
"features": [
{
"value": {
"enabled": false
},
"featureId": "aboutwelcome"
"enabled": true,
"featureId": "pocketNewtab",
"value": {}
},
{
"featureId": "upgradeDialog",
"value": {
"infoTitle": "This is control",
"infoTitleEnabled": true
},
"featureId": "privatebrowsing"
"enabled": false
}
}
]
],
"ratio": 1,
"slug": "control"
},
{
"slug": "treatment-a",
"ratio": 1,
"feature": {
"value": {},
"enabled": true,
"featureId": "no-feature-firefox-desktop"
"featureId": "unused-feature-id-for-legacy-support",
"enabled": false,
"value": {}
},
"features": [
{
"enabled": true,
"featureId": "pocketNewtab",
"value": {
"enabled": false
},
"featureId": "aboutwelcome"
"compactLayout": true,
"lastCardMessageEnabled": true,
"loadMore": true,
"newFooterSection": true
}
},
{
"featureId": "upgradeDialog",
"value": {
"infoTitle": "This is treatment",
"infoTitleEnabled": true
},
"featureId": "privatebrowsing"
"enabled": true
}
}
]
],
"ratio": 1,
"slug": "treatment"
}
],
"bucketConfig": {
"count": 10000,
"namespace": "firefox-desktop-multifeature-test",
"randomizationUnit": "normandy_id",
"start": 0,
"total": 10000
},
"channel": "nightly",
"endDate": null,
"featureIds": [
"upgradeDialog",
"pocketNewtab"
],
"id": "mr2-upgrade-spotlight-holdback",
"isEnrollmentPaused": false,
"outcomes": [],
"probeSets": [],
"proposedDuration": 63,
"proposedEnrollment": 7,
"referenceBranch": "control",
"schemaVersion": "1.6.2",
"slug": "firefox-desktop-multifeature-test",
"startDate": "2021-10-26",
"targeting": "true",
"userFacingDescription": "Experimenting on onboarding content when you upgrade Firefox.",
"userFacingName": "MR2 Upgrade Spotlight Holdback"
},
"ios-39-multifeature": {
"appId": "org.mozilla.ios.Firefox",
"appName": "firefox_ios",
"application": "org.mozilla.ios.Firefox",
"arguments": {},
"probeSets": [],
"startDate": null,
"targeting": "version|versionCompare('95.!') >= 0 && 'app.shield.optoutstudies.enabled'|preferenceValue",
"featureIds": [
"privatebrowsing",
"aboutwelcome"
"branches": [
{
"features": [
{
"enabled": true,
"featureId": "onboarding-default-browser",
"value": {
"should-hide-title-image": false
}
},
{
"enabled": true,
"featureId": "homescreen",
"value": {
"sections-enabled": {
"jumpBackIn": false,
"libraryShortcuts": true,
"recentlySaved": false
}
}
}
],
"ratio": 1,
"slug": "control"
},
{
"features": [
{
"enabled": true,
"featureId": "onboarding-default-browser",
"value": {
"should-hide-title-image": true
}
},
{
"enabled": true,
"featureId": "homescreen",
"value": {
"sections-enabled": {
"jumpBackIn": true,
"libraryShortcuts": false,
"recentlySaved": true
}
}
}
],
"ratio": 1,
"slug": "treatment"
}
],
"application": "firefox-desktop",
"bucketConfig": {
"count": 5000,
"count": 10000,
"namespace": "firefox-ios-multifeature-test",
"randomizationUnit": "nimbus_id",
"start": 0,
"total": 10000,
"namespace": "firefox-desktop-no-feature-firefox-desktop-2",
"randomizationUnit": "normandy_id"
"total": 10000
},
"schemaVersion": "1.5.0",
"userFacingName": "Testing Multifeature Desktop",
"referenceBranch": "control",
"channel": "release",
"endDate": null,
"featureIds": [
"onboarding-default-browser",
"homescreen"
],
"id": "firefox-ios-multifeature-test",
"isEnrollmentPaused": false,
"outcomes": [
{
"priority": "secondary",
"slug": "default_browser"
}
],
"probeSets": [],
"proposedDuration": 28,
"isEnrollmentPaused": false,
"proposedEnrollment": 7,
"userFacingDescription": "Testing Multifeature Desktop",
"id": "testing-multifeature-desktop",
"last_modified": 1635342922069
"referenceBranch": "control",
"schemaVersion": "1.6.2",
"slug": "firefox-ios-multifeature-test",
"startDate": "2021-11-01",
"targeting": "true",
"userFacingDescription": "firefox-ios-multifeature-test",
"userFacingName": "firefox-ios-multifeature-test"
},

@@ -334,0 +508,0 @@ "mobile-a-a": {

@@ -48,2 +48,57 @@ export declare const data: {

"experiment-recipe-samples": {
"android-96-multifeature": {
appId: string;
appName: string;
application: string;
arguments: {};
branches: {
features: ({
enabled: boolean;
featureId: string;
value: {
"sections-enabled"?: undefined;
};
} | {
enabled: boolean;
featureId: string;
value: {
"sections-enabled": {
jumpBackIn: boolean;
pocket: boolean;
recentExplorations: boolean;
recentlySaved: boolean;
topSites: boolean;
};
};
})[];
ratio: number;
slug: string;
}[];
bucketConfig: {
count: number;
namespace: string;
randomizationUnit: string;
start: number;
total: number;
};
channel: string;
endDate: null;
featureIds: string[];
id: string;
isEnrollmentPaused: boolean;
outcomes: {
priority: string;
slug: string;
}[];
probeSets: never[];
proposedDuration: number;
proposedEnrollment: number;
referenceBranch: string;
schemaVersion: string;
slug: string;
startDate: string;
targeting: string;
userFacingDescription: string;
userFacingName: string;
};
"desktop-90": {

@@ -234,55 +289,136 @@ appId: string;

};
"desktop-95": {
slug: string;
"desktop-95-multifeature": {
appId: string;
appName: string;
channel: string;
endDate: null;
branches: {
slug: string;
ratio: number;
application: string;
arguments: {};
branches: ({
feature: {
featureId: string;
enabled: boolean;
value: {};
};
features: ({
enabled: boolean;
featureId: string;
};
features: ({
value: {
enabled?: undefined;
};
} | {
featureId: string;
value: {
enabled: boolean;
infoTitle?: undefined;
infoTitleEnabled?: undefined;
};
enabled?: undefined;
})[];
ratio: number;
slug: string;
} | {
feature: {
featureId: string;
} | {
enabled: boolean;
value: {};
};
features: ({
enabled: boolean;
featureId: string;
value: {
infoTitle: string;
infoTitleEnabled: boolean;
compactLayout: boolean;
lastCardMessageEnabled: boolean;
loadMore: boolean;
newFooterSection: boolean;
enabled?: undefined;
};
} | {
featureId: string;
value: {
enabled: boolean;
compactLayout?: undefined;
lastCardMessageEnabled?: undefined;
loadMore?: undefined;
newFooterSection?: undefined;
};
enabled?: undefined;
})[];
}[];
ratio: number;
slug: string;
})[];
bucketConfig: {
count: number;
namespace: string;
randomizationUnit: string;
start: number;
total: number;
};
channel: string;
endDate: null;
featureIds: string[];
id: string;
isEnrollmentPaused: boolean;
outcomes: never[];
arguments: {};
probeSets: never[];
startDate: null;
proposedDuration: number;
proposedEnrollment: number;
referenceBranch: string;
schemaVersion: string;
slug: string;
startDate: string;
targeting: string;
featureIds: string[];
userFacingDescription: string;
userFacingName: string;
};
"ios-39-multifeature": {
appId: string;
appName: string;
application: string;
arguments: {};
branches: {
features: ({
enabled: boolean;
featureId: string;
value: {
"should-hide-title-image": boolean;
"sections-enabled"?: undefined;
};
} | {
enabled: boolean;
featureId: string;
value: {
"sections-enabled": {
jumpBackIn: boolean;
libraryShortcuts: boolean;
recentlySaved: boolean;
};
"should-hide-title-image"?: undefined;
};
})[];
ratio: number;
slug: string;
}[];
bucketConfig: {
count: number;
namespace: string;
randomizationUnit: string;
start: number;
total: number;
namespace: string;
randomizationUnit: string;
};
schemaVersion: string;
userFacingName: string;
referenceBranch: string;
channel: string;
endDate: null;
featureIds: string[];
id: string;
isEnrollmentPaused: boolean;
outcomes: {
priority: string;
slug: string;
}[];
probeSets: never[];
proposedDuration: number;
isEnrollmentPaused: boolean;
proposedEnrollment: number;
referenceBranch: string;
schemaVersion: string;
slug: string;
startDate: string;
targeting: string;
userFacingDescription: string;
id: string;
last_modified: number;
userFacingName: string;
};

@@ -289,0 +425,0 @@ "mobile-a-a": {

126

dist/src/_generated/data.js

@@ -32,3 +32,39 @@ "use strict";

}, "experiment-recipe-samples": {
"desktop-90": {
"android-96-multifeature": {
"appId": "org.mozilla.firefox", "appName": "fenix", "application": "org.mozilla.fenix", "arguments": {}, "branches": [
{
"features": [
{
"enabled": false, "featureId": "fenix-default-browser", "value": {}
}, {
"enabled": true, "featureId": "homescreen", "value": {
"sections-enabled": {
"jumpBackIn": false, "pocket": false, "recentExplorations": false, "recentlySaved": false, "topSites": true
}
}
}
], "ratio": 1, "slug": "control"
}, {
"features": [
{
"enabled": true, "featureId": "fenix-default-browser", "value": {}
}, {
"enabled": true, "featureId": "homescreen", "value": {
"sections-enabled": {
"jumpBackIn": true, "pocket": true, "recentExplorations": true, "recentlySaved": true, "topSites": true
}
}
}
], "ratio": 1, "slug": "default_browser_newtab_banner"
}
], "bucketConfig": {
"count": 10000, "namespace": "firefox-android-multifeature-test", "randomizationUnit": "nimbus_id", "start": 0, "total": 10000
}, "channel": "nightly", "endDate": null, "featureIds": [
"fenix-default-browser", "homescreen"
], "id": "firefox-android-multifeature-test", "isEnrollmentPaused": false, "outcomes": [
{
"priority": "secondary", "slug": "default-browser"
}
], "probeSets": [], "proposedDuration": 28, "proposedEnrollment": 7, "referenceBranch": "control", "schemaVersion": "1.6.2", "slug": "firefox-android-multifeature-test", "startDate": "2021-11-01", "targeting": "true", "userFacingDescription": "firefox-android-multifeature-test", "userFacingName": "firefox-android-multifeature-test"
}, "desktop-90": {
"appId": "firefox-desktop", "appName": "firefox_desktop", "application": "firefox-desktop", "arguments": {}, "branches": [

@@ -103,38 +139,76 @@ {

], "id": "firefox-vpn-test-1629", "isEnrollmentPaused": true, "outcomes": [], "proposedDuration": 45, "proposedEnrollment": 7, "referenceBranch": "control", "schemaVersion": "2.0.0", "slug": "firefox-vpn-test-1629", "startDate": "2021-07-27", "targeting": "browserSettings.update.channel == \"release\" && version|versionCompare('90.!') >= 0 && 'app.shield.optoutstudies.enabled'|preferenceValue && !hasActiveEnterprisePolicies && locale in ['en-CA', 'en-GB', 'en-US'] && region in ['US']", "userFacingDescription": "Testing out the private browsing page with different images and copy.", "userFacingName": "firefox vpn test 1629"
}, "desktop-95": {
"slug": "testing-multifeature-desktop", "appId": "firefox-desktop", "appName": "firefox_desktop", "channel": "", "endDate": null, "branches": [
}, "desktop-95-multifeature": {
"appId": "firefox-desktop", "appName": "firefox_desktop", "application": "firefox-desktop", "arguments": {}, "branches": [
{
"slug": "control", "ratio": 1, "feature": {
"value": {}, "enabled": true, "featureId": "no-feature-firefox-desktop"
"feature": {
"featureId": "unused-feature-id-for-legacy-support", "enabled": false, "value": {}
}, "features": [
{
"value": {
"enabled": true, "featureId": "pocketNewtab", "value": {}
}, {
"featureId": "upgradeDialog", "value": {
"enabled": false
}, "featureId": "aboutwelcome"
}, {
"value": {
"infoTitle": "This is control", "infoTitleEnabled": true
}, "featureId": "privatebrowsing"
}
}
]
], "ratio": 1, "slug": "control"
}, {
"slug": "treatment-a", "ratio": 1, "feature": {
"value": {}, "enabled": true, "featureId": "no-feature-firefox-desktop"
"feature": {
"featureId": "unused-feature-id-for-legacy-support", "enabled": false, "value": {}
}, "features": [
{
"value": {
"enabled": false
}, "featureId": "aboutwelcome"
"enabled": true, "featureId": "pocketNewtab", "value": {
"compactLayout": true, "lastCardMessageEnabled": true, "loadMore": true, "newFooterSection": true
}
}, {
"value": {
"infoTitle": "This is treatment", "infoTitleEnabled": true
}, "featureId": "privatebrowsing"
"featureId": "upgradeDialog", "value": {
"enabled": true
}
}
]
], "ratio": 1, "slug": "treatment"
}
], "outcomes": [], "arguments": {}, "probeSets": [], "startDate": null, "targeting": "version|versionCompare('95.!') >= 0 && 'app.shield.optoutstudies.enabled'|preferenceValue", "featureIds": [
"privatebrowsing", "aboutwelcome"
], "application": "firefox-desktop", "bucketConfig": {
"count": 5000, "start": 0, "total": 10000, "namespace": "firefox-desktop-no-feature-firefox-desktop-2", "randomizationUnit": "normandy_id"
}, "schemaVersion": "1.5.0", "userFacingName": "Testing Multifeature Desktop", "referenceBranch": "control", "proposedDuration": 28, "isEnrollmentPaused": false, "proposedEnrollment": 7, "userFacingDescription": "Testing Multifeature Desktop", "id": "testing-multifeature-desktop", "last_modified": 1635342922069
], "bucketConfig": {
"count": 10000, "namespace": "firefox-desktop-multifeature-test", "randomizationUnit": "normandy_id", "start": 0, "total": 10000
}, "channel": "nightly", "endDate": null, "featureIds": [
"upgradeDialog", "pocketNewtab"
], "id": "mr2-upgrade-spotlight-holdback", "isEnrollmentPaused": false, "outcomes": [], "probeSets": [], "proposedDuration": 63, "proposedEnrollment": 7, "referenceBranch": "control", "schemaVersion": "1.6.2", "slug": "firefox-desktop-multifeature-test", "startDate": "2021-10-26", "targeting": "true", "userFacingDescription": "Experimenting on onboarding content when you upgrade Firefox.", "userFacingName": "MR2 Upgrade Spotlight Holdback"
}, "ios-39-multifeature": {
"appId": "org.mozilla.ios.Firefox", "appName": "firefox_ios", "application": "org.mozilla.ios.Firefox", "arguments": {}, "branches": [
{
"features": [
{
"enabled": true, "featureId": "onboarding-default-browser", "value": {
"should-hide-title-image": false
}
}, {
"enabled": true, "featureId": "homescreen", "value": {
"sections-enabled": {
"jumpBackIn": false, "libraryShortcuts": true, "recentlySaved": false
}
}
}
], "ratio": 1, "slug": "control"
}, {
"features": [
{
"enabled": true, "featureId": "onboarding-default-browser", "value": {
"should-hide-title-image": true
}
}, {
"enabled": true, "featureId": "homescreen", "value": {
"sections-enabled": {
"jumpBackIn": true, "libraryShortcuts": false, "recentlySaved": true
}
}
}
], "ratio": 1, "slug": "treatment"
}
], "bucketConfig": {
"count": 10000, "namespace": "firefox-ios-multifeature-test", "randomizationUnit": "nimbus_id", "start": 0, "total": 10000
}, "channel": "release", "endDate": null, "featureIds": [
"onboarding-default-browser", "homescreen"
], "id": "firefox-ios-multifeature-test", "isEnrollmentPaused": false, "outcomes": [
{
"priority": "secondary", "slug": "default_browser"
}
], "probeSets": [], "proposedDuration": 28, "proposedEnrollment": 7, "referenceBranch": "control", "schemaVersion": "1.6.2", "slug": "firefox-ios-multifeature-test", "startDate": "2021-11-01", "targeting": "true", "userFacingDescription": "firefox-ios-multifeature-test", "userFacingName": "firefox-ios-multifeature-test"
}, "mobile-a-a": {

@@ -141,0 +215,0 @@ "schemaVersion": "0.1.0", "id": "mobile-a-a-example", "slug": "mobile-a-a-example", "application": "reference_browser", "appId": "org.mozilla.reference.browser", "appName": "reference_browser", "featureIds": [

@@ -49,3 +49,3 @@ /**

/** Branch configuration for the experiment */
branches: Array<Branch>;
branches: Array<SingleFeatureBranch> | Array<MultiFeatureDesktopBranch> | Array<MultiFeatureMobileBranch>;
/**

@@ -120,3 +120,8 @@ * JEXL expression used to filter experiments based on locale, geo, etc.

}
interface Branch {
interface SingleFeatureBranch {
/**
* Firefox Desktop <95
* Firefox Android <96
* Firefox iOS <39
*/
/** Identifier for the branch */

@@ -132,10 +137,52 @@ slug: string;

/**
* Firefox Desktop <95
* A single feature configuration
*/
feature: FeatureConfig;
}
interface MultiFeatureDesktopBranch {
/**
* Firefox Desktop >=95
*/
features?: Array<FeatureConfig>;
/** Identifier for the branch */
slug: string;
/**
* Relative ratio of population for the branch (e.g. if branch A=1 and branch B=3,
* branch A would get 25% of the population)
* @asType integer
* @default 1
*/
ratio: number;
/**
* The feature key must be provided with valid values to prevent crashes if the DTO
* is encountered by Desktop clients earlier than version 95.
*/
feature: {
featureId: "unused-feature-id-for-legacy-support";
enabled: false;
value: Record<string, unknown>;
};
/**
* An array of feature configurations
*/
features: Array<FeatureConfig>;
}
interface MultiFeatureMobileBranch {
/**
* Firefox Android >=96
* Firefox iOS >=39
*/
/** Identifier for the branch */
slug: string;
/**
* Relative ratio of population for the branch (e.g. if branch A=1 and branch B=3,
* branch A would get 25% of the population)
* @asType integer
* @default 1
*/
ratio: number;
/**
* An array of feature configurations
*/
features: Array<FeatureConfig>;
}
interface Outcome {

@@ -142,0 +189,0 @@ /** Identifier for the outcome */

{
"name": "@mozilla/nimbus-shared",
"version": "1.6.2",
"version": "1.7.0",
"license": "MPL-2.0",

@@ -5,0 +5,0 @@ "engines": {

@@ -107,71 +107,169 @@ {

"branches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Identifier for the branch"
},
"ratio": {
"type": "integer",
"description": "Relative ratio of population for the branch (e.g. if branch A=1 and branch B=3, branch A would get 25% of the population)",
"default": 1
},
"feature": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"featureId": {
"slug": {
"type": "string",
"description": "The identifier for the feature flag"
"description": "Identifier for the branch"
},
"enabled": {
"type": "boolean",
"description": "This can be used to turn the whole feature on/off"
"ratio": {
"type": "integer",
"description": "Relative ratio of population for the branch (e.g. if branch A=1 and branch B=3, branch A would get 25% of the population)",
"default": 1
},
"value": {
"feature": {
"type": "object",
"additionalProperties": {},
"description": "Optional extra params for the feature (this should be validated against a schema)"
"properties": {
"featureId": {
"type": "string",
"description": "The identifier for the feature flag"
},
"enabled": {
"type": "boolean",
"description": "This can be used to turn the whole feature on/off"
},
"value": {
"type": "object",
"additionalProperties": {},
"description": "Optional extra params for the feature (this should be validated against a schema)"
}
},
"required": [
"featureId",
"value"
],
"description": "A single feature configuration"
}
},
"required": [
"featureId",
"value"
],
"description": "Firefox Desktop <95"
},
"features": {
"type": "array",
"items": {
"type": "object",
"properties": {
"featureId": {
"type": "string",
"description": "The identifier for the feature flag"
"slug",
"ratio",
"feature"
]
}
},
{
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Identifier for the branch"
},
"ratio": {
"type": "integer",
"description": "Relative ratio of population for the branch (e.g. if branch A=1 and branch B=3, branch A would get 25% of the population)",
"default": 1
},
"feature": {
"type": "object",
"properties": {
"featureId": {
"type": "string",
"const": "unused-feature-id-for-legacy-support"
},
"enabled": {
"type": "boolean",
"const": false
},
"value": {
"type": "object",
"additionalProperties": {}
}
},
"enabled": {
"type": "boolean",
"description": "This can be used to turn the whole feature on/off"
"required": [
"featureId",
"enabled",
"value"
],
"description": "The feature key must be provided with valid values to prevent crashes if the DTO is encountered by Desktop clients earlier than version 95."
},
"features": {
"type": "array",
"items": {
"type": "object",
"properties": {
"featureId": {
"type": "string",
"description": "The identifier for the feature flag"
},
"enabled": {
"type": "boolean",
"description": "This can be used to turn the whole feature on/off"
},
"value": {
"type": "object",
"additionalProperties": {},
"description": "Optional extra params for the feature (this should be validated against a schema)"
}
},
"required": [
"featureId",
"value"
]
},
"value": {
"description": "An array of feature configurations"
}
},
"required": [
"slug",
"ratio",
"feature",
"features"
]
}
},
{
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Identifier for the branch"
},
"ratio": {
"type": "integer",
"description": "Relative ratio of population for the branch (e.g. if branch A=1 and branch B=3, branch A would get 25% of the population)",
"default": 1
},
"features": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {},
"description": "Optional extra params for the feature (this should be validated against a schema)"
}
},
"required": [
"featureId",
"value"
]
"properties": {
"featureId": {
"type": "string",
"description": "The identifier for the feature flag"
},
"enabled": {
"type": "boolean",
"description": "This can be used to turn the whole feature on/off"
},
"value": {
"type": "object",
"additionalProperties": {},
"description": "Optional extra params for the feature (this should be validated against a schema)"
}
},
"required": [
"featureId",
"value"
]
},
"description": "An array of feature configurations"
}
},
"description": "Firefox Desktop >=95"
"required": [
"slug",
"ratio",
"features"
]
}
},
"required": [
"slug",
"ratio",
"feature"
]
},
}
],
"description": "Branch configuration for the experiment"

@@ -178,0 +276,0 @@ },

@@ -29,3 +29,39 @@ export const data = {

}, "experiment-recipe-samples": {
"desktop-90": {
"android-96-multifeature": {
"appId": "org.mozilla.firefox", "appName": "fenix", "application": "org.mozilla.fenix", "arguments": {}, "branches": [
{
"features": [
{
"enabled": false, "featureId": "fenix-default-browser", "value": {}
}, {
"enabled": true, "featureId": "homescreen", "value": {
"sections-enabled": {
"jumpBackIn": false, "pocket": false, "recentExplorations": false, "recentlySaved": false, "topSites": true
}
}
}
], "ratio": 1, "slug": "control"
}, {
"features": [
{
"enabled": true, "featureId": "fenix-default-browser", "value": {}
}, {
"enabled": true, "featureId": "homescreen", "value": {
"sections-enabled": {
"jumpBackIn": true, "pocket": true, "recentExplorations": true, "recentlySaved": true, "topSites": true
}
}
}
], "ratio": 1, "slug": "default_browser_newtab_banner"
}
], "bucketConfig": {
"count": 10000, "namespace": "firefox-android-multifeature-test", "randomizationUnit": "nimbus_id", "start": 0, "total": 10000
}, "channel": "nightly", "endDate": null, "featureIds": [
"fenix-default-browser", "homescreen"
], "id": "firefox-android-multifeature-test", "isEnrollmentPaused": false, "outcomes": [
{
"priority": "secondary", "slug": "default-browser"
}
], "probeSets": [], "proposedDuration": 28, "proposedEnrollment": 7, "referenceBranch": "control", "schemaVersion": "1.6.2", "slug": "firefox-android-multifeature-test", "startDate": "2021-11-01", "targeting": "true", "userFacingDescription": "firefox-android-multifeature-test", "userFacingName": "firefox-android-multifeature-test"
}, "desktop-90": {
"appId": "firefox-desktop", "appName": "firefox_desktop", "application": "firefox-desktop", "arguments": {}, "branches": [

@@ -100,38 +136,76 @@ {

], "id": "firefox-vpn-test-1629", "isEnrollmentPaused": true, "outcomes": [], "proposedDuration": 45, "proposedEnrollment": 7, "referenceBranch": "control", "schemaVersion": "2.0.0", "slug": "firefox-vpn-test-1629", "startDate": "2021-07-27", "targeting": "browserSettings.update.channel == \"release\" && version|versionCompare('90.!') >= 0 && 'app.shield.optoutstudies.enabled'|preferenceValue && !hasActiveEnterprisePolicies && locale in ['en-CA', 'en-GB', 'en-US'] && region in ['US']", "userFacingDescription": "Testing out the private browsing page with different images and copy.", "userFacingName": "firefox vpn test 1629"
}, "desktop-95": {
"slug": "testing-multifeature-desktop", "appId": "firefox-desktop", "appName": "firefox_desktop", "channel": "", "endDate": null, "branches": [
}, "desktop-95-multifeature": {
"appId": "firefox-desktop", "appName": "firefox_desktop", "application": "firefox-desktop", "arguments": {}, "branches": [
{
"slug": "control", "ratio": 1, "feature": {
"value": {}, "enabled": true, "featureId": "no-feature-firefox-desktop"
"feature": {
"featureId": "unused-feature-id-for-legacy-support", "enabled": false, "value": {}
}, "features": [
{
"value": {
"enabled": true, "featureId": "pocketNewtab", "value": {}
}, {
"featureId": "upgradeDialog", "value": {
"enabled": false
}, "featureId": "aboutwelcome"
}, {
"value": {
"infoTitle": "This is control", "infoTitleEnabled": true
}, "featureId": "privatebrowsing"
}
}
]
], "ratio": 1, "slug": "control"
}, {
"slug": "treatment-a", "ratio": 1, "feature": {
"value": {}, "enabled": true, "featureId": "no-feature-firefox-desktop"
"feature": {
"featureId": "unused-feature-id-for-legacy-support", "enabled": false, "value": {}
}, "features": [
{
"value": {
"enabled": false
}, "featureId": "aboutwelcome"
"enabled": true, "featureId": "pocketNewtab", "value": {
"compactLayout": true, "lastCardMessageEnabled": true, "loadMore": true, "newFooterSection": true
}
}, {
"value": {
"infoTitle": "This is treatment", "infoTitleEnabled": true
}, "featureId": "privatebrowsing"
"featureId": "upgradeDialog", "value": {
"enabled": true
}
}
]
], "ratio": 1, "slug": "treatment"
}
], "outcomes": [], "arguments": {}, "probeSets": [], "startDate": null, "targeting": "version|versionCompare('95.!') >= 0 && 'app.shield.optoutstudies.enabled'|preferenceValue", "featureIds": [
"privatebrowsing", "aboutwelcome"
], "application": "firefox-desktop", "bucketConfig": {
"count": 5000, "start": 0, "total": 10000, "namespace": "firefox-desktop-no-feature-firefox-desktop-2", "randomizationUnit": "normandy_id"
}, "schemaVersion": "1.5.0", "userFacingName": "Testing Multifeature Desktop", "referenceBranch": "control", "proposedDuration": 28, "isEnrollmentPaused": false, "proposedEnrollment": 7, "userFacingDescription": "Testing Multifeature Desktop", "id": "testing-multifeature-desktop", "last_modified": 1635342922069
], "bucketConfig": {
"count": 10000, "namespace": "firefox-desktop-multifeature-test", "randomizationUnit": "normandy_id", "start": 0, "total": 10000
}, "channel": "nightly", "endDate": null, "featureIds": [
"upgradeDialog", "pocketNewtab"
], "id": "mr2-upgrade-spotlight-holdback", "isEnrollmentPaused": false, "outcomes": [], "probeSets": [], "proposedDuration": 63, "proposedEnrollment": 7, "referenceBranch": "control", "schemaVersion": "1.6.2", "slug": "firefox-desktop-multifeature-test", "startDate": "2021-10-26", "targeting": "true", "userFacingDescription": "Experimenting on onboarding content when you upgrade Firefox.", "userFacingName": "MR2 Upgrade Spotlight Holdback"
}, "ios-39-multifeature": {
"appId": "org.mozilla.ios.Firefox", "appName": "firefox_ios", "application": "org.mozilla.ios.Firefox", "arguments": {}, "branches": [
{
"features": [
{
"enabled": true, "featureId": "onboarding-default-browser", "value": {
"should-hide-title-image": false
}
}, {
"enabled": true, "featureId": "homescreen", "value": {
"sections-enabled": {
"jumpBackIn": false, "libraryShortcuts": true, "recentlySaved": false
}
}
}
], "ratio": 1, "slug": "control"
}, {
"features": [
{
"enabled": true, "featureId": "onboarding-default-browser", "value": {
"should-hide-title-image": true
}
}, {
"enabled": true, "featureId": "homescreen", "value": {
"sections-enabled": {
"jumpBackIn": true, "libraryShortcuts": false, "recentlySaved": true
}
}
}
], "ratio": 1, "slug": "treatment"
}
], "bucketConfig": {
"count": 10000, "namespace": "firefox-ios-multifeature-test", "randomizationUnit": "nimbus_id", "start": 0, "total": 10000
}, "channel": "release", "endDate": null, "featureIds": [
"onboarding-default-browser", "homescreen"
], "id": "firefox-ios-multifeature-test", "isEnrollmentPaused": false, "outcomes": [
{
"priority": "secondary", "slug": "default_browser"
}
], "probeSets": [], "proposedDuration": 28, "proposedEnrollment": 7, "referenceBranch": "control", "schemaVersion": "1.6.2", "slug": "firefox-ios-multifeature-test", "startDate": "2021-11-01", "targeting": "true", "userFacingDescription": "firefox-ios-multifeature-test", "userFacingName": "firefox-ios-multifeature-test"
}, "mobile-a-a": {

@@ -138,0 +212,0 @@ "schemaVersion": "0.1.0", "id": "mobile-a-a-example", "slug": "mobile-a-a-example", "application": "reference_browser", "appId": "org.mozilla.reference.browser", "appName": "reference_browser", "featureIds": [

@@ -61,3 +61,6 @@ /**

/** Branch configuration for the experiment */
branches: Array<Branch>;
branches:
| Array<SingleFeatureBranch>
| Array<MultiFeatureDesktopBranch>
| Array<MultiFeatureMobileBranch>;

@@ -147,3 +150,9 @@ /**

interface Branch {
interface SingleFeatureBranch {
/**
* Firefox Desktop <95
* Firefox Android <96
* Firefox iOS <39
*/
/** Identifier for the branch */

@@ -161,12 +170,62 @@ slug: string;

/**
* Firefox Desktop <95
* A single feature configuration
*/
feature: FeatureConfig;
}
interface MultiFeatureDesktopBranch {
/**
* Firefox Desktop >=95
*/
features?: Array<FeatureConfig>;
/** Identifier for the branch */
slug: string;
/**
* Relative ratio of population for the branch (e.g. if branch A=1 and branch B=3,
* branch A would get 25% of the population)
* @asType integer
* @default 1
*/
ratio: number;
/**
* The feature key must be provided with valid values to prevent crashes if the DTO
* is encountered by Desktop clients earlier than version 95.
*/
feature: {
featureId: "unused-feature-id-for-legacy-support";
enabled: false;
value: Record<string, unknown>;
};
/**
* An array of feature configurations
*/
features: Array<FeatureConfig>;
}
interface MultiFeatureMobileBranch {
/**
* Firefox Android >=96
* Firefox iOS >=39
*/
/** Identifier for the branch */
slug: string;
/**
* Relative ratio of population for the branch (e.g. if branch A=1 and branch B=3,
* branch A would get 25% of the population)
* @asType integer
* @default 1
*/
ratio: number;
/**
* An array of feature configurations
*/
features: Array<FeatureConfig>;
}
interface Outcome {

@@ -173,0 +232,0 @@ /** Identifier for the outcome */

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc