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

@mozilla/nimbus-shared

Package Overview
Dependencies
Maintainers
9
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 0.0.9 to 1.0.0

schemas/experiments/NimbusExperiment.json

15

CHANGELOG.md
# Changelog
## Version 1.0.0
### Major Changes
- New schema format that corresponds to a per-record `schemaVersion`
## Version 0.1.0
### Minor Changes
- Added platforms field to Experiment type
([#113](https://github.com/mozilla/nimbus-shared/issues/113))
- Removed userId from randomization unit choices
([#110](https://github.com/mozilla/nimbus-shared/issues/110))
## Version 0.0.9

@@ -4,0 +19,0 @@

141

dist/data.json

@@ -27,24 +27,29 @@ {

"preset": {
"filter_expression": "env.version|versionCompare('{minFirefoxVersion}') >= 0",
"targeting": "[{randomizationUnit}, \"{bucketNamespace}\"]|bucketSample({bucketStart}, {bucketCount}, {bucketTotal}) && {audienceTargeting}",
"arguments": {
"proposedDuration": 28,
"proposedEnrollment": 7,
"branches": [
{
"slug": "control",
"ratio": 1,
"proposedDuration": 28,
"proposedEnrollment": 7,
"branches": [
{
"slug": "control",
"ratio": 1,
"feature": {
"featureId": "cfr",
"enabled": true,
"value": null
},
{
"slug": "treatment",
"ratio": 1,
}
},
{
"slug": "treatment",
"ratio": 1,
"feature": {
"featureId": "cfr",
"enabled": true,
"value": null
}
],
"bucketConfig": {
"randomizationUnit": "userId",
"count": 100,
"total": 10000
}
],
"bucketConfig": {
"randomizationUnit": "normandy_id",
"count": 100,
"total": 10000
}

@@ -55,38 +60,74 @@ }

"experiment-recipe-samples": {
"mobile-a-a": {
"schemaVersion": "0.1.0",
"id": "mobile-a-a-example",
"slug": "mobile-a-a-example",
"application": "reference-browser",
"userFacingName": "Mobile A/A Example",
"userFacingDescription": "An A/A Test to validate the Rust SDK",
"isEnrollmentPaused": false,
"bucketConfig": {
"randomizationUnit": "nimbus_id",
"namespace": "mobile-a-a-example",
"start": 0,
"count": 5000,
"total": 10000
},
"startDate": null,
"endDate": null,
"proposedEnrollment": 7,
"referenceBranch": "control",
"probeSets": [],
"branches": [
{
"slug": "control",
"ratio": 1
},
{
"slug": "treatment-variation-b",
"ratio": 1
}
]
},
"pull-factor": {
"id": "ABOUTWELCOME-PULL-FACTOR-REINFORCEMENT-76-RELEASE",
"enabled": true,
"filter_expression": "(env.version >= '76.' && env.version < '77.' && env.channel == 'release' && !(env.telemetry.main.environment.profile.creationDate < ('2020-05-13'|date / 1000 / 60 / 60 / 24))) || (locale == 'en-US' && [userId, \"aboutwelcome-pull-factor-reinforcement-76-release\"]|bucketSample(0, 2000, 10000) && (!('trailhead.firstrun.didSeeAboutWelcome'|preferenceValue) || 'bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77' in activeExperiments))",
"arguments": {
"slug": "bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77",
"userFacingName": "About:Welcome Pull Factor Reinforcement",
"userFacingDescription": "4 branch experiment different variants of about:welcome with a goal of testing new experiment framework and get insights on whether reinforcing pull-factors improves retention. Test deployment of multiple branches using new experiment framework",
"isEnrollmentPaused": true,
"active": true,
"bucketConfig": {
"randomizationUnit": "normandy_id",
"namespace": "bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77",
"start": 0,
"count": 2000,
"total": 10000
"schemaVersion": "0.1.0",
"id": "message-aboutwelcome-pull-factor-reinforcement",
"slug": "message-aboutwelcome-pull-factor-reinforcement",
"application": "firefox-desktop",
"userFacingName": "About:Welcome Pull Factor Reinforcement",
"userFacingDescription": "4 branch experiment different variants of about:welcome with a goal of testing new experiment framework and get insights on whether reinforcing pull-factors improves retention. Test deployment of multiple branches using new experiment framework",
"isEnrollmentPaused": true,
"bucketConfig": {
"randomizationUnit": "normandy_id",
"namespace": "message-aboutwelcome-pull-factor-reinforcement",
"start": 0,
"count": 2000,
"total": 10000
},
"startDate": "2020-06-17T23:20:47.230Z",
"endDate": null,
"proposedDuration": 28,
"proposedEnrollment": 7,
"referenceBranch": "control",
"probeSets": [],
"branches": [
{
"slug": "control",
"ratio": 1,
"feature": {
"featureId": "cfr",
"enabled": true,
"value": null
}
},
"startDate": "2020-06-17T23:20:47.230Z",
"endDate": null,
"proposedDuration": 28,
"proposedEnrollment": 7,
"referenceBranch": "control",
"features": [],
"branches": [
{
"slug": "control",
"ratio": 1,
"value": {}
},
{
"slug": "treatment-variation-b",
"ratio": 1,
"value": {}
{
"slug": "treatment-variation-b",
"ratio": 1,
"feature": {
"featureId": "cfr",
"enabled": true,
"value": null
}
]
}
}
]
}

@@ -93,0 +134,0 @@ },

@@ -1,2 +0,2 @@

import { ExperimentRecipe } from "../types/experiments";
import { NimbusExperiment } from "../types/experiments";
declare type RecursivePartial<T> = {

@@ -13,4 +13,4 @@ [P in keyof T]?: T[P] extends Array<infer U> ? Array<RecursivePartial<U>> : T[P] extends {

declare const presets: {
[id: string]: Preset<ExperimentRecipe>;
[id: string]: Preset<NimbusExperiment>;
};
export default presets;

@@ -8,16 +8,17 @@ "use strict";

preset: {
filter_expression: "env.version|versionCompare('{minFirefoxVersion}') >= 0",
targeting: '[{randomizationUnit}, "{bucketNamespace}"]|bucketSample({bucketStart}, {bucketCount}, {bucketTotal}) && {audienceTargeting}',
arguments: {
proposedDuration: 28,
proposedEnrollment: 7,
branches: [
{ slug: "control", ratio: 1, value: null },
{ slug: "treatment", ratio: 1, value: null },
],
bucketConfig: {
randomizationUnit: "userId",
count: 100,
total: 10000,
proposedDuration: 28,
proposedEnrollment: 7,
branches: [
{ slug: "control", ratio: 1, feature: { featureId: "cfr", enabled: true, value: null } },
{
slug: "treatment",
ratio: 1,
feature: { featureId: "cfr", enabled: true, value: null },
},
],
bucketConfig: {
randomizationUnit: "normandy_id",
count: 100,
total: 10000,
},

@@ -24,0 +25,0 @@ },

@@ -27,17 +27,18 @@ export declare const data: {

preset: {
filter_expression: string;
targeting: string;
arguments: {
proposedDuration: number;
proposedEnrollment: number;
branches: {
slug: string;
ratio: number;
proposedDuration: number;
proposedEnrollment: number;
branches: {
slug: string;
ratio: number;
feature: {
featureId: string;
enabled: boolean;
value: null;
}[];
bucketConfig: {
randomizationUnit: string;
count: number;
total: number;
};
}[];
bucketConfig: {
randomizationUnit: string;
count: number;
total: number;
};

@@ -48,31 +49,57 @@ };

"experiment-recipe-samples": {
"mobile-a-a": {
schemaVersion: string;
id: string;
slug: string;
application: string;
userFacingName: string;
userFacingDescription: string;
isEnrollmentPaused: boolean;
bucketConfig: {
randomizationUnit: string;
namespace: string;
start: number;
count: number;
total: number;
};
startDate: null;
endDate: null;
proposedEnrollment: number;
referenceBranch: string;
probeSets: never[];
branches: {
slug: string;
ratio: number;
}[];
};
"pull-factor": {
schemaVersion: string;
id: string;
enabled: boolean;
filter_expression: string;
arguments: {
slug: string;
application: string;
userFacingName: string;
userFacingDescription: string;
isEnrollmentPaused: boolean;
bucketConfig: {
randomizationUnit: string;
namespace: string;
start: number;
count: number;
total: number;
};
startDate: string;
endDate: null;
proposedDuration: number;
proposedEnrollment: number;
referenceBranch: string;
probeSets: never[];
branches: {
slug: string;
userFacingName: string;
userFacingDescription: string;
isEnrollmentPaused: boolean;
active: boolean;
bucketConfig: {
randomizationUnit: string;
namespace: string;
start: number;
count: number;
total: number;
ratio: number;
feature: {
featureId: string;
enabled: boolean;
value: null;
};
startDate: string;
endDate: null;
proposedDuration: number;
proposedEnrollment: number;
referenceBranch: string;
features: never[];
branches: {
slug: string;
ratio: number;
value: {};
}[];
};
}[];
};

@@ -79,0 +106,0 @@ };

@@ -16,12 +16,14 @@ "use strict";

"name": "A/A Experiment", "description": "A design for diagnostic testing of targeting or enrollment. Fixed to 1% of the population.", "preset": {
"filter_expression": "env.version|versionCompare('{minFirefoxVersion}') >= 0", "targeting": "[{randomizationUnit}, \"{bucketNamespace}\"]|bucketSample({bucketStart}, {bucketCount}, {bucketTotal}) && {audienceTargeting}", "arguments": {
"proposedDuration": 28, "proposedEnrollment": 7, "branches": [
{
"slug": "control", "ratio": 1, "value": null
}, {
"slug": "treatment", "ratio": 1, "value": null
"targeting": "[{randomizationUnit}, \"{bucketNamespace}\"]|bucketSample({bucketStart}, {bucketCount}, {bucketTotal}) && {audienceTargeting}", "proposedDuration": 28, "proposedEnrollment": 7, "branches": [
{
"slug": "control", "ratio": 1, "feature": {
"featureId": "cfr", "enabled": true, "value": null
}
], "bucketConfig": {
"randomizationUnit": "userId", "count": 100, "total": 10000
}, {
"slug": "treatment", "ratio": 1, "feature": {
"featureId": "cfr", "enabled": true, "value": null
}
}
], "bucketConfig": {
"randomizationUnit": "normandy_id", "count": 100, "total": 10000
}

@@ -31,14 +33,26 @@ }

}, "experiment-recipe-samples": {
"pull-factor": {
"id": "ABOUTWELCOME-PULL-FACTOR-REINFORCEMENT-76-RELEASE", "enabled": true, "filter_expression": "(env.version >= '76.' && env.version < '77.' && env.channel == 'release' && !(env.telemetry.main.environment.profile.creationDate < ('2020-05-13'|date / 1000 / 60 / 60 / 24))) || (locale == 'en-US' && [userId, \"aboutwelcome-pull-factor-reinforcement-76-release\"]|bucketSample(0, 2000, 10000) && (!('trailhead.firstrun.didSeeAboutWelcome'|preferenceValue) || 'bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77' in activeExperiments))", "arguments": {
"slug": "bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77", "userFacingName": "About:Welcome Pull Factor Reinforcement", "userFacingDescription": "4 branch experiment different variants of about:welcome with a goal of testing new experiment framework and get insights on whether reinforcing pull-factors improves retention. Test deployment of multiple branches using new experiment framework", "isEnrollmentPaused": true, "active": true, "bucketConfig": {
"randomizationUnit": "normandy_id", "namespace": "bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77", "start": 0, "count": 2000, "total": 10000
}, "startDate": "2020-06-17T23:20:47.230Z", "endDate": null, "proposedDuration": 28, "proposedEnrollment": 7, "referenceBranch": "control", "features": [], "branches": [
{
"slug": "control", "ratio": 1, "value": {}
}, {
"slug": "treatment-variation-b", "ratio": 1, "value": {}
"mobile-a-a": {
"schemaVersion": "0.1.0", "id": "mobile-a-a-example", "slug": "mobile-a-a-example", "application": "reference-browser", "userFacingName": "Mobile A/A Example", "userFacingDescription": "An A/A Test to validate the Rust SDK", "isEnrollmentPaused": false, "bucketConfig": {
"randomizationUnit": "nimbus_id", "namespace": "mobile-a-a-example", "start": 0, "count": 5000, "total": 10000
}, "startDate": null, "endDate": null, "proposedEnrollment": 7, "referenceBranch": "control", "probeSets": [], "branches": [
{
"slug": "control", "ratio": 1
}, {
"slug": "treatment-variation-b", "ratio": 1
}
]
}, "pull-factor": {
"schemaVersion": "0.1.0", "id": "message-aboutwelcome-pull-factor-reinforcement", "slug": "message-aboutwelcome-pull-factor-reinforcement", "application": "firefox-desktop", "userFacingName": "About:Welcome Pull Factor Reinforcement", "userFacingDescription": "4 branch experiment different variants of about:welcome with a goal of testing new experiment framework and get insights on whether reinforcing pull-factors improves retention. Test deployment of multiple branches using new experiment framework", "isEnrollmentPaused": true, "bucketConfig": {
"randomizationUnit": "normandy_id", "namespace": "message-aboutwelcome-pull-factor-reinforcement", "start": 0, "count": 2000, "total": 10000
}, "startDate": "2020-06-17T23:20:47.230Z", "endDate": null, "proposedDuration": 28, "proposedEnrollment": 7, "referenceBranch": "control", "probeSets": [], "branches": [
{
"slug": "control", "ratio": 1, "feature": {
"featureId": "cfr", "enabled": true, "value": null
}
]
}
}, {
"slug": "treatment-variation-b", "ratio": 1, "feature": {
"featureId": "cfr", "enabled": true, "value": null
}
}
]
}

@@ -45,0 +59,0 @@ }, "features": {

import { SchemaResult } from "../typeGuards";
import type { Audience } from "../../types/targeting";
import type { FoodColors } from "../../types/test";
import type { MultiPreferenceExperimentArguments, ConsoleLogArguments, BranchedAddonStudyArguments, PreferenceExperimentArguments, PreferenceRolloutArguments, NormandyRecipe, MessagingExperimentArguments, PreferenceRollbackArguments, AddonRolloutArguments, ShowHeartbeatArguments, AddonRollbackArguments, OptOutStudyArguments } from "../../types/normandy";
import type { NimbusExperiment } from "../../types/experiments";
import type { Feature } from "../../types/features";
import type { Experiment, ExperimentRecipe } from "../../types/experiments";
import type { TriggerActionSchemas, SimpleCFRMessage, SpecialMessageActionSchemas } from "../../types/messaging";
import type { ShowHeartbeatArguments, BranchedAddonStudyArguments, PreferenceRolloutArguments, AddonRolloutArguments, PreferenceExperimentArguments, PreferenceRollbackArguments, MultiPreferenceExperimentArguments, ConsoleLogArguments, NormandyRecipe, AddonRollbackArguments, MessagingExperimentArguments, OptOutStudyArguments } from "../../types/normandy";
export declare function targeting_isAudience(obj: object): obj is Audience;
export declare function targeting_checkAudience(obj: object): SchemaResult;
export declare function targeting_assertAudience(obj: object): asserts obj is Audience;
import type { Audience } from "../../types/targeting";
import type { SimpleCFRMessage, TriggerActionSchemas, SpecialMessageActionSchemas } from "../../types/messaging";
export declare function test_isFoodColors(obj: object): obj is FoodColors;
export declare function test_checkFoodColors(obj: object): SchemaResult;
export declare function test_assertFoodColors(obj: object): asserts obj is FoodColors;
export declare function features_isFeature(obj: object): obj is Feature;
export declare function features_checkFeature(obj: object): SchemaResult;
export declare function features_assertFeature(obj: object): asserts obj is Feature;
export declare function experiments_isExperiment(obj: object): obj is Experiment;
export declare function experiments_checkExperiment(obj: object): SchemaResult;
export declare function experiments_assertExperiment(obj: object): asserts obj is Experiment;
export declare function experiments_isExperimentRecipe(obj: object): obj is ExperimentRecipe;
export declare function experiments_checkExperimentRecipe(obj: object): SchemaResult;
export declare function experiments_assertExperimentRecipe(obj: object): asserts obj is ExperimentRecipe;
export declare function messaging_isTriggerActionSchemas(obj: object): obj is TriggerActionSchemas;
export declare function messaging_checkTriggerActionSchemas(obj: object): SchemaResult;
export declare function messaging_assertTriggerActionSchemas(obj: object): asserts obj is TriggerActionSchemas;
export declare function messaging_isSimpleCFRMessage(obj: object): obj is SimpleCFRMessage;
export declare function messaging_checkSimpleCFRMessage(obj: object): SchemaResult;
export declare function messaging_assertSimpleCFRMessage(obj: object): asserts obj is SimpleCFRMessage;
export declare function messaging_isSpecialMessageActionSchemas(obj: object): obj is SpecialMessageActionSchemas;
export declare function messaging_checkSpecialMessageActionSchemas(obj: object): SchemaResult;
export declare function messaging_assertSpecialMessageActionSchemas(obj: object): asserts obj is SpecialMessageActionSchemas;
export declare function normandy_isShowHeartbeatArguments(obj: object): obj is ShowHeartbeatArguments;
export declare function normandy_checkShowHeartbeatArguments(obj: object): SchemaResult;
export declare function normandy_assertShowHeartbeatArguments(obj: object): asserts obj is ShowHeartbeatArguments;
export declare function normandy_isMultiPreferenceExperimentArguments(obj: object): obj is MultiPreferenceExperimentArguments;
export declare function normandy_checkMultiPreferenceExperimentArguments(obj: object): SchemaResult;
export declare function normandy_assertMultiPreferenceExperimentArguments(obj: object): asserts obj is MultiPreferenceExperimentArguments;
export declare function normandy_isConsoleLogArguments(obj: object): obj is ConsoleLogArguments;
export declare function normandy_checkConsoleLogArguments(obj: object): SchemaResult;
export declare function normandy_assertConsoleLogArguments(obj: object): asserts obj is ConsoleLogArguments;
export declare function normandy_isBranchedAddonStudyArguments(obj: object): obj is BranchedAddonStudyArguments;
export declare function normandy_checkBranchedAddonStudyArguments(obj: object): SchemaResult;
export declare function normandy_assertBranchedAddonStudyArguments(obj: object): asserts obj is BranchedAddonStudyArguments;
export declare function normandy_isPreferenceExperimentArguments(obj: object): obj is PreferenceExperimentArguments;
export declare function normandy_checkPreferenceExperimentArguments(obj: object): SchemaResult;
export declare function normandy_assertPreferenceExperimentArguments(obj: object): asserts obj is PreferenceExperimentArguments;
export declare function normandy_isPreferenceRolloutArguments(obj: object): obj is PreferenceRolloutArguments;
export declare function normandy_checkPreferenceRolloutArguments(obj: object): SchemaResult;
export declare function normandy_assertPreferenceRolloutArguments(obj: object): asserts obj is PreferenceRolloutArguments;
export declare function normandy_isNormandyRecipe(obj: object): obj is NormandyRecipe;
export declare function normandy_checkNormandyRecipe(obj: object): SchemaResult;
export declare function normandy_assertNormandyRecipe(obj: object): asserts obj is NormandyRecipe;
export declare function normandy_isMessagingExperimentArguments(obj: object): obj is MessagingExperimentArguments;
export declare function normandy_checkMessagingExperimentArguments(obj: object): SchemaResult;
export declare function normandy_assertMessagingExperimentArguments(obj: object): asserts obj is MessagingExperimentArguments;
export declare function normandy_isPreferenceRollbackArguments(obj: object): obj is PreferenceRollbackArguments;
export declare function normandy_checkPreferenceRollbackArguments(obj: object): SchemaResult;
export declare function normandy_assertPreferenceRollbackArguments(obj: object): asserts obj is PreferenceRollbackArguments;
export declare function normandy_isAddonRolloutArguments(obj: object): obj is AddonRolloutArguments;
export declare function normandy_checkAddonRolloutArguments(obj: object): SchemaResult;
export declare function normandy_assertAddonRolloutArguments(obj: object): asserts obj is AddonRolloutArguments;
export declare function normandy_isPreferenceExperimentArguments(obj: object): obj is PreferenceExperimentArguments;
export declare function normandy_checkPreferenceExperimentArguments(obj: object): SchemaResult;
export declare function normandy_assertPreferenceExperimentArguments(obj: object): asserts obj is PreferenceExperimentArguments;
export declare function normandy_isPreferenceRollbackArguments(obj: object): obj is PreferenceRollbackArguments;
export declare function normandy_checkPreferenceRollbackArguments(obj: object): SchemaResult;
export declare function normandy_assertPreferenceRollbackArguments(obj: object): asserts obj is PreferenceRollbackArguments;
export declare function normandy_isMultiPreferenceExperimentArguments(obj: object): obj is MultiPreferenceExperimentArguments;
export declare function normandy_checkMultiPreferenceExperimentArguments(obj: object): SchemaResult;
export declare function normandy_assertMultiPreferenceExperimentArguments(obj: object): asserts obj is MultiPreferenceExperimentArguments;
export declare function normandy_isConsoleLogArguments(obj: object): obj is ConsoleLogArguments;
export declare function normandy_checkConsoleLogArguments(obj: object): SchemaResult;
export declare function normandy_assertConsoleLogArguments(obj: object): asserts obj is ConsoleLogArguments;
export declare function normandy_isNormandyRecipe(obj: object): obj is NormandyRecipe;
export declare function normandy_checkNormandyRecipe(obj: object): SchemaResult;
export declare function normandy_assertNormandyRecipe(obj: object): asserts obj is NormandyRecipe;
export declare function normandy_isShowHeartbeatArguments(obj: object): obj is ShowHeartbeatArguments;
export declare function normandy_checkShowHeartbeatArguments(obj: object): SchemaResult;
export declare function normandy_assertShowHeartbeatArguments(obj: object): asserts obj is ShowHeartbeatArguments;
export declare function normandy_isAddonRollbackArguments(obj: object): obj is AddonRollbackArguments;
export declare function normandy_checkAddonRollbackArguments(obj: object): SchemaResult;
export declare function normandy_assertAddonRollbackArguments(obj: object): asserts obj is AddonRollbackArguments;
export declare function normandy_isMessagingExperimentArguments(obj: object): obj is MessagingExperimentArguments;
export declare function normandy_checkMessagingExperimentArguments(obj: object): SchemaResult;
export declare function normandy_assertMessagingExperimentArguments(obj: object): asserts obj is MessagingExperimentArguments;
export declare function normandy_isOptOutStudyArguments(obj: object): obj is OptOutStudyArguments;
export declare function normandy_checkOptOutStudyArguments(obj: object): SchemaResult;
export declare function normandy_assertOptOutStudyArguments(obj: object): asserts obj is OptOutStudyArguments;
export declare function experiments_isNimbusExperiment(obj: object): obj is NimbusExperiment;
export declare function experiments_checkNimbusExperiment(obj: object): SchemaResult;
export declare function experiments_assertNimbusExperiment(obj: object): asserts obj is NimbusExperiment;
export declare function features_isFeature(obj: object): obj is Feature;
export declare function features_checkFeature(obj: object): SchemaResult;
export declare function features_assertFeature(obj: object): asserts obj is Feature;
export declare function targeting_isAudience(obj: object): obj is Audience;
export declare function targeting_checkAudience(obj: object): SchemaResult;
export declare function targeting_assertAudience(obj: object): asserts obj is Audience;
export declare function messaging_isSimpleCFRMessage(obj: object): obj is SimpleCFRMessage;
export declare function messaging_checkSimpleCFRMessage(obj: object): SchemaResult;
export declare function messaging_assertSimpleCFRMessage(obj: object): asserts obj is SimpleCFRMessage;
export declare function messaging_isTriggerActionSchemas(obj: object): obj is TriggerActionSchemas;
export declare function messaging_checkTriggerActionSchemas(obj: object): SchemaResult;
export declare function messaging_assertTriggerActionSchemas(obj: object): asserts obj is TriggerActionSchemas;
export declare function messaging_isSpecialMessageActionSchemas(obj: object): obj is SpecialMessageActionSchemas;
export declare function messaging_checkSpecialMessageActionSchemas(obj: object): SchemaResult;
export declare function messaging_assertSpecialMessageActionSchemas(obj: object): asserts obj is SpecialMessageActionSchemas;
"use strict";
/* eslint-disable @typescript-eslint/ban-types */
Object.defineProperty(exports, "__esModule", { value: true });
exports.normandy_assertOptOutStudyArguments = exports.normandy_checkOptOutStudyArguments = exports.normandy_isOptOutStudyArguments = exports.normandy_assertMessagingExperimentArguments = exports.normandy_checkMessagingExperimentArguments = exports.normandy_isMessagingExperimentArguments = exports.normandy_assertAddonRollbackArguments = exports.normandy_checkAddonRollbackArguments = exports.normandy_isAddonRollbackArguments = exports.normandy_assertNormandyRecipe = exports.normandy_checkNormandyRecipe = exports.normandy_isNormandyRecipe = exports.normandy_assertConsoleLogArguments = exports.normandy_checkConsoleLogArguments = exports.normandy_isConsoleLogArguments = exports.normandy_assertMultiPreferenceExperimentArguments = exports.normandy_checkMultiPreferenceExperimentArguments = exports.normandy_isMultiPreferenceExperimentArguments = exports.normandy_assertPreferenceRollbackArguments = exports.normandy_checkPreferenceRollbackArguments = exports.normandy_isPreferenceRollbackArguments = exports.normandy_assertPreferenceExperimentArguments = exports.normandy_checkPreferenceExperimentArguments = exports.normandy_isPreferenceExperimentArguments = exports.normandy_assertAddonRolloutArguments = exports.normandy_checkAddonRolloutArguments = exports.normandy_isAddonRolloutArguments = exports.normandy_assertPreferenceRolloutArguments = exports.normandy_checkPreferenceRolloutArguments = exports.normandy_isPreferenceRolloutArguments = exports.normandy_assertBranchedAddonStudyArguments = exports.normandy_checkBranchedAddonStudyArguments = exports.normandy_isBranchedAddonStudyArguments = exports.normandy_assertShowHeartbeatArguments = exports.normandy_checkShowHeartbeatArguments = exports.normandy_isShowHeartbeatArguments = exports.messaging_assertSpecialMessageActionSchemas = exports.messaging_checkSpecialMessageActionSchemas = exports.messaging_isSpecialMessageActionSchemas = exports.messaging_assertSimpleCFRMessage = exports.messaging_checkSimpleCFRMessage = exports.messaging_isSimpleCFRMessage = exports.messaging_assertTriggerActionSchemas = exports.messaging_checkTriggerActionSchemas = exports.messaging_isTriggerActionSchemas = exports.experiments_assertExperimentRecipe = exports.experiments_checkExperimentRecipe = exports.experiments_isExperimentRecipe = exports.experiments_assertExperiment = exports.experiments_checkExperiment = exports.experiments_isExperiment = exports.features_assertFeature = exports.features_checkFeature = exports.features_isFeature = exports.test_assertFoodColors = exports.test_checkFoodColors = exports.test_isFoodColors = exports.targeting_assertAudience = exports.targeting_checkAudience = exports.targeting_isAudience = void 0;
exports.messaging_assertSpecialMessageActionSchemas = exports.messaging_checkSpecialMessageActionSchemas = exports.messaging_isSpecialMessageActionSchemas = exports.messaging_assertTriggerActionSchemas = exports.messaging_checkTriggerActionSchemas = exports.messaging_isTriggerActionSchemas = exports.messaging_assertSimpleCFRMessage = exports.messaging_checkSimpleCFRMessage = exports.messaging_isSimpleCFRMessage = exports.targeting_assertAudience = exports.targeting_checkAudience = exports.targeting_isAudience = exports.features_assertFeature = exports.features_checkFeature = exports.features_isFeature = exports.experiments_assertNimbusExperiment = exports.experiments_checkNimbusExperiment = exports.experiments_isNimbusExperiment = exports.normandy_assertOptOutStudyArguments = exports.normandy_checkOptOutStudyArguments = exports.normandy_isOptOutStudyArguments = exports.normandy_assertAddonRollbackArguments = exports.normandy_checkAddonRollbackArguments = exports.normandy_isAddonRollbackArguments = exports.normandy_assertShowHeartbeatArguments = exports.normandy_checkShowHeartbeatArguments = exports.normandy_isShowHeartbeatArguments = exports.normandy_assertAddonRolloutArguments = exports.normandy_checkAddonRolloutArguments = exports.normandy_isAddonRolloutArguments = exports.normandy_assertPreferenceRollbackArguments = exports.normandy_checkPreferenceRollbackArguments = exports.normandy_isPreferenceRollbackArguments = exports.normandy_assertMessagingExperimentArguments = exports.normandy_checkMessagingExperimentArguments = exports.normandy_isMessagingExperimentArguments = exports.normandy_assertNormandyRecipe = exports.normandy_checkNormandyRecipe = exports.normandy_isNormandyRecipe = exports.normandy_assertPreferenceRolloutArguments = exports.normandy_checkPreferenceRolloutArguments = exports.normandy_isPreferenceRolloutArguments = exports.normandy_assertPreferenceExperimentArguments = exports.normandy_checkPreferenceExperimentArguments = exports.normandy_isPreferenceExperimentArguments = exports.normandy_assertBranchedAddonStudyArguments = exports.normandy_checkBranchedAddonStudyArguments = exports.normandy_isBranchedAddonStudyArguments = exports.normandy_assertConsoleLogArguments = exports.normandy_checkConsoleLogArguments = exports.normandy_isConsoleLogArguments = exports.normandy_assertMultiPreferenceExperimentArguments = exports.normandy_checkMultiPreferenceExperimentArguments = exports.normandy_isMultiPreferenceExperimentArguments = exports.test_assertFoodColors = exports.test_checkFoodColors = exports.test_isFoodColors = void 0;
const typeGuards_1 = require("../typeGuards");
function targeting_isAudience(obj) { return typeGuards_1.isSchema("targeting/Audience", obj); }
exports.targeting_isAudience = targeting_isAudience;
function targeting_checkAudience(obj) { return typeGuards_1.checkSchema("targeting/Audience", obj); }
exports.targeting_checkAudience = targeting_checkAudience;
function targeting_assertAudience(obj) { return typeGuards_1.assertSchema("targeting/Audience", obj); }
exports.targeting_assertAudience = targeting_assertAudience;
function test_isFoodColors(obj) { return typeGuards_1.isSchema("test/FoodColors", obj); }

@@ -18,44 +12,14 @@ exports.test_isFoodColors = test_isFoodColors;

exports.test_assertFoodColors = test_assertFoodColors;
function features_isFeature(obj) { return typeGuards_1.isSchema("features/Feature", obj); }
exports.features_isFeature = features_isFeature;
function features_checkFeature(obj) { return typeGuards_1.checkSchema("features/Feature", obj); }
exports.features_checkFeature = features_checkFeature;
function features_assertFeature(obj) { return typeGuards_1.assertSchema("features/Feature", obj); }
exports.features_assertFeature = features_assertFeature;
function experiments_isExperiment(obj) { return typeGuards_1.isSchema("experiments/Experiment", obj); }
exports.experiments_isExperiment = experiments_isExperiment;
function experiments_checkExperiment(obj) { return typeGuards_1.checkSchema("experiments/Experiment", obj); }
exports.experiments_checkExperiment = experiments_checkExperiment;
function experiments_assertExperiment(obj) { return typeGuards_1.assertSchema("experiments/Experiment", obj); }
exports.experiments_assertExperiment = experiments_assertExperiment;
function experiments_isExperimentRecipe(obj) { return typeGuards_1.isSchema("experiments/ExperimentRecipe", obj); }
exports.experiments_isExperimentRecipe = experiments_isExperimentRecipe;
function experiments_checkExperimentRecipe(obj) { return typeGuards_1.checkSchema("experiments/ExperimentRecipe", obj); }
exports.experiments_checkExperimentRecipe = experiments_checkExperimentRecipe;
function experiments_assertExperimentRecipe(obj) { return typeGuards_1.assertSchema("experiments/ExperimentRecipe", obj); }
exports.experiments_assertExperimentRecipe = experiments_assertExperimentRecipe;
function messaging_isTriggerActionSchemas(obj) { return typeGuards_1.isSchema("messaging/TriggerActionSchemas", obj); }
exports.messaging_isTriggerActionSchemas = messaging_isTriggerActionSchemas;
function messaging_checkTriggerActionSchemas(obj) { return typeGuards_1.checkSchema("messaging/TriggerActionSchemas", obj); }
exports.messaging_checkTriggerActionSchemas = messaging_checkTriggerActionSchemas;
function messaging_assertTriggerActionSchemas(obj) { return typeGuards_1.assertSchema("messaging/TriggerActionSchemas", obj); }
exports.messaging_assertTriggerActionSchemas = messaging_assertTriggerActionSchemas;
function messaging_isSimpleCFRMessage(obj) { return typeGuards_1.isSchema("messaging/SimpleCFRMessage", obj); }
exports.messaging_isSimpleCFRMessage = messaging_isSimpleCFRMessage;
function messaging_checkSimpleCFRMessage(obj) { return typeGuards_1.checkSchema("messaging/SimpleCFRMessage", obj); }
exports.messaging_checkSimpleCFRMessage = messaging_checkSimpleCFRMessage;
function messaging_assertSimpleCFRMessage(obj) { return typeGuards_1.assertSchema("messaging/SimpleCFRMessage", obj); }
exports.messaging_assertSimpleCFRMessage = messaging_assertSimpleCFRMessage;
function messaging_isSpecialMessageActionSchemas(obj) { return typeGuards_1.isSchema("messaging/SpecialMessageActionSchemas", obj); }
exports.messaging_isSpecialMessageActionSchemas = messaging_isSpecialMessageActionSchemas;
function messaging_checkSpecialMessageActionSchemas(obj) { return typeGuards_1.checkSchema("messaging/SpecialMessageActionSchemas", obj); }
exports.messaging_checkSpecialMessageActionSchemas = messaging_checkSpecialMessageActionSchemas;
function messaging_assertSpecialMessageActionSchemas(obj) { return typeGuards_1.assertSchema("messaging/SpecialMessageActionSchemas", obj); }
exports.messaging_assertSpecialMessageActionSchemas = messaging_assertSpecialMessageActionSchemas;
function normandy_isShowHeartbeatArguments(obj) { return typeGuards_1.isSchema("normandy/ShowHeartbeatArguments", obj); }
exports.normandy_isShowHeartbeatArguments = normandy_isShowHeartbeatArguments;
function normandy_checkShowHeartbeatArguments(obj) { return typeGuards_1.checkSchema("normandy/ShowHeartbeatArguments", obj); }
exports.normandy_checkShowHeartbeatArguments = normandy_checkShowHeartbeatArguments;
function normandy_assertShowHeartbeatArguments(obj) { return typeGuards_1.assertSchema("normandy/ShowHeartbeatArguments", obj); }
exports.normandy_assertShowHeartbeatArguments = normandy_assertShowHeartbeatArguments;
function normandy_isMultiPreferenceExperimentArguments(obj) { return typeGuards_1.isSchema("normandy/MultiPreferenceExperimentArguments", obj); }
exports.normandy_isMultiPreferenceExperimentArguments = normandy_isMultiPreferenceExperimentArguments;
function normandy_checkMultiPreferenceExperimentArguments(obj) { return typeGuards_1.checkSchema("normandy/MultiPreferenceExperimentArguments", obj); }
exports.normandy_checkMultiPreferenceExperimentArguments = normandy_checkMultiPreferenceExperimentArguments;
function normandy_assertMultiPreferenceExperimentArguments(obj) { return typeGuards_1.assertSchema("normandy/MultiPreferenceExperimentArguments", obj); }
exports.normandy_assertMultiPreferenceExperimentArguments = normandy_assertMultiPreferenceExperimentArguments;
function normandy_isConsoleLogArguments(obj) { return typeGuards_1.isSchema("normandy/ConsoleLogArguments", obj); }
exports.normandy_isConsoleLogArguments = normandy_isConsoleLogArguments;
function normandy_checkConsoleLogArguments(obj) { return typeGuards_1.checkSchema("normandy/ConsoleLogArguments", obj); }
exports.normandy_checkConsoleLogArguments = normandy_checkConsoleLogArguments;
function normandy_assertConsoleLogArguments(obj) { return typeGuards_1.assertSchema("normandy/ConsoleLogArguments", obj); }
exports.normandy_assertConsoleLogArguments = normandy_assertConsoleLogArguments;
function normandy_isBranchedAddonStudyArguments(obj) { return typeGuards_1.isSchema("normandy/BranchedAddonStudyArguments", obj); }

@@ -67,2 +31,8 @@ exports.normandy_isBranchedAddonStudyArguments = normandy_isBranchedAddonStudyArguments;

exports.normandy_assertBranchedAddonStudyArguments = normandy_assertBranchedAddonStudyArguments;
function normandy_isPreferenceExperimentArguments(obj) { return typeGuards_1.isSchema("normandy/PreferenceExperimentArguments", obj); }
exports.normandy_isPreferenceExperimentArguments = normandy_isPreferenceExperimentArguments;
function normandy_checkPreferenceExperimentArguments(obj) { return typeGuards_1.checkSchema("normandy/PreferenceExperimentArguments", obj); }
exports.normandy_checkPreferenceExperimentArguments = normandy_checkPreferenceExperimentArguments;
function normandy_assertPreferenceExperimentArguments(obj) { return typeGuards_1.assertSchema("normandy/PreferenceExperimentArguments", obj); }
exports.normandy_assertPreferenceExperimentArguments = normandy_assertPreferenceExperimentArguments;
function normandy_isPreferenceRolloutArguments(obj) { return typeGuards_1.isSchema("normandy/PreferenceRolloutArguments", obj); }

@@ -74,2 +44,20 @@ exports.normandy_isPreferenceRolloutArguments = normandy_isPreferenceRolloutArguments;

exports.normandy_assertPreferenceRolloutArguments = normandy_assertPreferenceRolloutArguments;
function normandy_isNormandyRecipe(obj) { return typeGuards_1.isSchema("normandy/NormandyRecipe", obj); }
exports.normandy_isNormandyRecipe = normandy_isNormandyRecipe;
function normandy_checkNormandyRecipe(obj) { return typeGuards_1.checkSchema("normandy/NormandyRecipe", obj); }
exports.normandy_checkNormandyRecipe = normandy_checkNormandyRecipe;
function normandy_assertNormandyRecipe(obj) { return typeGuards_1.assertSchema("normandy/NormandyRecipe", obj); }
exports.normandy_assertNormandyRecipe = normandy_assertNormandyRecipe;
function normandy_isMessagingExperimentArguments(obj) { return typeGuards_1.isSchema("normandy/MessagingExperimentArguments", obj); }
exports.normandy_isMessagingExperimentArguments = normandy_isMessagingExperimentArguments;
function normandy_checkMessagingExperimentArguments(obj) { return typeGuards_1.checkSchema("normandy/MessagingExperimentArguments", obj); }
exports.normandy_checkMessagingExperimentArguments = normandy_checkMessagingExperimentArguments;
function normandy_assertMessagingExperimentArguments(obj) { return typeGuards_1.assertSchema("normandy/MessagingExperimentArguments", obj); }
exports.normandy_assertMessagingExperimentArguments = normandy_assertMessagingExperimentArguments;
function normandy_isPreferenceRollbackArguments(obj) { return typeGuards_1.isSchema("normandy/PreferenceRollbackArguments", obj); }
exports.normandy_isPreferenceRollbackArguments = normandy_isPreferenceRollbackArguments;
function normandy_checkPreferenceRollbackArguments(obj) { return typeGuards_1.checkSchema("normandy/PreferenceRollbackArguments", obj); }
exports.normandy_checkPreferenceRollbackArguments = normandy_checkPreferenceRollbackArguments;
function normandy_assertPreferenceRollbackArguments(obj) { return typeGuards_1.assertSchema("normandy/PreferenceRollbackArguments", obj); }
exports.normandy_assertPreferenceRollbackArguments = normandy_assertPreferenceRollbackArguments;
function normandy_isAddonRolloutArguments(obj) { return typeGuards_1.isSchema("normandy/AddonRolloutArguments", obj); }

@@ -81,32 +69,8 @@ exports.normandy_isAddonRolloutArguments = normandy_isAddonRolloutArguments;

exports.normandy_assertAddonRolloutArguments = normandy_assertAddonRolloutArguments;
function normandy_isPreferenceExperimentArguments(obj) { return typeGuards_1.isSchema("normandy/PreferenceExperimentArguments", obj); }
exports.normandy_isPreferenceExperimentArguments = normandy_isPreferenceExperimentArguments;
function normandy_checkPreferenceExperimentArguments(obj) { return typeGuards_1.checkSchema("normandy/PreferenceExperimentArguments", obj); }
exports.normandy_checkPreferenceExperimentArguments = normandy_checkPreferenceExperimentArguments;
function normandy_assertPreferenceExperimentArguments(obj) { return typeGuards_1.assertSchema("normandy/PreferenceExperimentArguments", obj); }
exports.normandy_assertPreferenceExperimentArguments = normandy_assertPreferenceExperimentArguments;
function normandy_isPreferenceRollbackArguments(obj) { return typeGuards_1.isSchema("normandy/PreferenceRollbackArguments", obj); }
exports.normandy_isPreferenceRollbackArguments = normandy_isPreferenceRollbackArguments;
function normandy_checkPreferenceRollbackArguments(obj) { return typeGuards_1.checkSchema("normandy/PreferenceRollbackArguments", obj); }
exports.normandy_checkPreferenceRollbackArguments = normandy_checkPreferenceRollbackArguments;
function normandy_assertPreferenceRollbackArguments(obj) { return typeGuards_1.assertSchema("normandy/PreferenceRollbackArguments", obj); }
exports.normandy_assertPreferenceRollbackArguments = normandy_assertPreferenceRollbackArguments;
function normandy_isMultiPreferenceExperimentArguments(obj) { return typeGuards_1.isSchema("normandy/MultiPreferenceExperimentArguments", obj); }
exports.normandy_isMultiPreferenceExperimentArguments = normandy_isMultiPreferenceExperimentArguments;
function normandy_checkMultiPreferenceExperimentArguments(obj) { return typeGuards_1.checkSchema("normandy/MultiPreferenceExperimentArguments", obj); }
exports.normandy_checkMultiPreferenceExperimentArguments = normandy_checkMultiPreferenceExperimentArguments;
function normandy_assertMultiPreferenceExperimentArguments(obj) { return typeGuards_1.assertSchema("normandy/MultiPreferenceExperimentArguments", obj); }
exports.normandy_assertMultiPreferenceExperimentArguments = normandy_assertMultiPreferenceExperimentArguments;
function normandy_isConsoleLogArguments(obj) { return typeGuards_1.isSchema("normandy/ConsoleLogArguments", obj); }
exports.normandy_isConsoleLogArguments = normandy_isConsoleLogArguments;
function normandy_checkConsoleLogArguments(obj) { return typeGuards_1.checkSchema("normandy/ConsoleLogArguments", obj); }
exports.normandy_checkConsoleLogArguments = normandy_checkConsoleLogArguments;
function normandy_assertConsoleLogArguments(obj) { return typeGuards_1.assertSchema("normandy/ConsoleLogArguments", obj); }
exports.normandy_assertConsoleLogArguments = normandy_assertConsoleLogArguments;
function normandy_isNormandyRecipe(obj) { return typeGuards_1.isSchema("normandy/NormandyRecipe", obj); }
exports.normandy_isNormandyRecipe = normandy_isNormandyRecipe;
function normandy_checkNormandyRecipe(obj) { return typeGuards_1.checkSchema("normandy/NormandyRecipe", obj); }
exports.normandy_checkNormandyRecipe = normandy_checkNormandyRecipe;
function normandy_assertNormandyRecipe(obj) { return typeGuards_1.assertSchema("normandy/NormandyRecipe", obj); }
exports.normandy_assertNormandyRecipe = normandy_assertNormandyRecipe;
function normandy_isShowHeartbeatArguments(obj) { return typeGuards_1.isSchema("normandy/ShowHeartbeatArguments", obj); }
exports.normandy_isShowHeartbeatArguments = normandy_isShowHeartbeatArguments;
function normandy_checkShowHeartbeatArguments(obj) { return typeGuards_1.checkSchema("normandy/ShowHeartbeatArguments", obj); }
exports.normandy_checkShowHeartbeatArguments = normandy_checkShowHeartbeatArguments;
function normandy_assertShowHeartbeatArguments(obj) { return typeGuards_1.assertSchema("normandy/ShowHeartbeatArguments", obj); }
exports.normandy_assertShowHeartbeatArguments = normandy_assertShowHeartbeatArguments;
function normandy_isAddonRollbackArguments(obj) { return typeGuards_1.isSchema("normandy/AddonRollbackArguments", obj); }

@@ -118,8 +82,2 @@ exports.normandy_isAddonRollbackArguments = normandy_isAddonRollbackArguments;

exports.normandy_assertAddonRollbackArguments = normandy_assertAddonRollbackArguments;
function normandy_isMessagingExperimentArguments(obj) { return typeGuards_1.isSchema("normandy/MessagingExperimentArguments", obj); }
exports.normandy_isMessagingExperimentArguments = normandy_isMessagingExperimentArguments;
function normandy_checkMessagingExperimentArguments(obj) { return typeGuards_1.checkSchema("normandy/MessagingExperimentArguments", obj); }
exports.normandy_checkMessagingExperimentArguments = normandy_checkMessagingExperimentArguments;
function normandy_assertMessagingExperimentArguments(obj) { return typeGuards_1.assertSchema("normandy/MessagingExperimentArguments", obj); }
exports.normandy_assertMessagingExperimentArguments = normandy_assertMessagingExperimentArguments;
function normandy_isOptOutStudyArguments(obj) { return typeGuards_1.isSchema("normandy/OptOutStudyArguments", obj); }

@@ -131,1 +89,37 @@ exports.normandy_isOptOutStudyArguments = normandy_isOptOutStudyArguments;

exports.normandy_assertOptOutStudyArguments = normandy_assertOptOutStudyArguments;
function experiments_isNimbusExperiment(obj) { return typeGuards_1.isSchema("experiments/NimbusExperiment", obj); }
exports.experiments_isNimbusExperiment = experiments_isNimbusExperiment;
function experiments_checkNimbusExperiment(obj) { return typeGuards_1.checkSchema("experiments/NimbusExperiment", obj); }
exports.experiments_checkNimbusExperiment = experiments_checkNimbusExperiment;
function experiments_assertNimbusExperiment(obj) { return typeGuards_1.assertSchema("experiments/NimbusExperiment", obj); }
exports.experiments_assertNimbusExperiment = experiments_assertNimbusExperiment;
function features_isFeature(obj) { return typeGuards_1.isSchema("features/Feature", obj); }
exports.features_isFeature = features_isFeature;
function features_checkFeature(obj) { return typeGuards_1.checkSchema("features/Feature", obj); }
exports.features_checkFeature = features_checkFeature;
function features_assertFeature(obj) { return typeGuards_1.assertSchema("features/Feature", obj); }
exports.features_assertFeature = features_assertFeature;
function targeting_isAudience(obj) { return typeGuards_1.isSchema("targeting/Audience", obj); }
exports.targeting_isAudience = targeting_isAudience;
function targeting_checkAudience(obj) { return typeGuards_1.checkSchema("targeting/Audience", obj); }
exports.targeting_checkAudience = targeting_checkAudience;
function targeting_assertAudience(obj) { return typeGuards_1.assertSchema("targeting/Audience", obj); }
exports.targeting_assertAudience = targeting_assertAudience;
function messaging_isSimpleCFRMessage(obj) { return typeGuards_1.isSchema("messaging/SimpleCFRMessage", obj); }
exports.messaging_isSimpleCFRMessage = messaging_isSimpleCFRMessage;
function messaging_checkSimpleCFRMessage(obj) { return typeGuards_1.checkSchema("messaging/SimpleCFRMessage", obj); }
exports.messaging_checkSimpleCFRMessage = messaging_checkSimpleCFRMessage;
function messaging_assertSimpleCFRMessage(obj) { return typeGuards_1.assertSchema("messaging/SimpleCFRMessage", obj); }
exports.messaging_assertSimpleCFRMessage = messaging_assertSimpleCFRMessage;
function messaging_isTriggerActionSchemas(obj) { return typeGuards_1.isSchema("messaging/TriggerActionSchemas", obj); }
exports.messaging_isTriggerActionSchemas = messaging_isTriggerActionSchemas;
function messaging_checkTriggerActionSchemas(obj) { return typeGuards_1.checkSchema("messaging/TriggerActionSchemas", obj); }
exports.messaging_checkTriggerActionSchemas = messaging_checkTriggerActionSchemas;
function messaging_assertTriggerActionSchemas(obj) { return typeGuards_1.assertSchema("messaging/TriggerActionSchemas", obj); }
exports.messaging_assertTriggerActionSchemas = messaging_assertTriggerActionSchemas;
function messaging_isSpecialMessageActionSchemas(obj) { return typeGuards_1.isSchema("messaging/SpecialMessageActionSchemas", obj); }
exports.messaging_isSpecialMessageActionSchemas = messaging_isSpecialMessageActionSchemas;
function messaging_checkSpecialMessageActionSchemas(obj) { return typeGuards_1.checkSchema("messaging/SpecialMessageActionSchemas", obj); }
exports.messaging_checkSpecialMessageActionSchemas = messaging_checkSpecialMessageActionSchemas;
function messaging_assertSpecialMessageActionSchemas(obj) { return typeGuards_1.assertSchema("messaging/SpecialMessageActionSchemas", obj); }
exports.messaging_assertSpecialMessageActionSchemas = messaging_assertSpecialMessageActionSchemas;
/**
* The experiment definition accessible to Firefox via Remote Settings.
* It is compatible with ExperimentManager.
* The experiment definition accessible to:
* 1. The Nimbus SDK via Remote Settings
* 2. Jetstream via the Experimenter API
*/
export interface ExperimentRecipe {
/** A unique identifier for the Recipe */
id: string;
/** JEXL expression defined in an Audience */
filter_expression: string;
export interface NimbusExperiment {
/**
* JEXL expression using messaging system environment
* @deprecated */
targeting?: string;
/** Is the experiment enabled? */
enabled: boolean;
/** Experiment definition */
arguments: Experiment;
}
export interface Experiment {
* Version of the NimbusExperiment schema this experiment refers to
*/
schemaVersion: string;
/** Unique identifier for the experiment */
slug: string;
/** Publically-accesible name of the experiment */
/**
* Unique identifier for the experiment. This is a duplicate of slug, but is a required field
* for all Remote Settings records.
*/
id: string;
/** A specific product such as Firefox Desktop or Fenix that supports Nimbus experiments */
application: string;
/** Public name of the experiment displayed on "about:studies" */
userFacingName: string;
/** Short public description of the experiment */
/** Short public description of the experiment displayed on on "about:studies" */
userFacingDescription: string;
/** Is the experiment currently live in production? i.e., published to remote settings? */
active: boolean;
/** Are we continuing to enroll new users into the experiment? */
/**
* When this property is set to true, the the SDK should not enroll new users
* into the experiment that have not already been enrolled.
*/
isEnrollmentPaused: boolean;
/** Bucketing configuration */
bucketConfig: BucketConfig;
/** A list of feature slugs relevant to the experiment analysis */
features: Array<string>;
/** A list of probe set slugs relevant to the experiment analysis */
probeSets: Array<string>;
/** Branch configuration for the experiment */
branches: Array<Branch>;
/**
* JEXL expression used to filter experiments based on locale, geo, etc.
*/
targeting?: string;
/**
* Actual publish date of the experiment
* Note that this value is expected to be null in Remote Settings.
* @format date-time
*/
startDate: string;
startDate: string | null;
/**
* Actual end date of the experiment
* Actual end date of the experiment.
* Note that this value is expected to be null in Remote Settings.
* @format date-time
*/
endDate: string | null;
/** Duration of the experiment from the start date in days */
proposedDuration: number;
/** Duration of enrollment from the start date in days */
/**
* Duration of the experiment from the start date in days.
* Note that this property is only used during the analysis phase (not by the SDK)
* @asType integer
*/
proposedDuration?: number;
/**
* This represents the number of days that we expect to enroll new users.
* Note that this property is only used during the analysis phase (not by the SDK)
* @asType integer
*/
proposedEnrollment: number;
/** The slug of the reference branch */
/** The slug of the reference branch (that is, which branch we consider "control") */
referenceBranch: string | null;
/**
* This is NOT used by Nimbus, but has special functionality in Remote Settings.
* See https://remote-settings.readthedocs.io/en/latest/target-filters.html#how
*/
filter_expression?: string;
}
interface BucketConfig {
/**
* The randomization unit. Note that client_id is not yet implemented.
* @default "normandy_id"
* A unique, stable identifier for the user used as an input to bucket hashing
*/
randomizationUnit: "client_id" | "normandy_id" | "userId";
randomizationUnit: string;
/** Additional inputs to the hashing function */
namespace: string;
/** Index of start of the range of buckets */
/**
* Index of start of the range of buckets
* @asType integer
* */
start: number;
/** Number of buckets to check */
/**
* Number of buckets to check
* @asType integer
* */
count: number;
/**
* Total number of buckets
* Total number of buckets. You can assume this will always be 10000.
* @asType integer
* @default 10000 */
total: number;
}
interface FeatureConfig {
/** The identifier for the feature flag */
featureId: string;
/** This can be used to turn the whole feature on/off */
enabled: boolean;
/** Optional extra params for the feature (this should be validated against a schema) */
value: {
[key: string]: unknown;
} | null;
}
interface Branch {

@@ -76,15 +110,8 @@ /** Identifier for the branch */

* branch A would get 25% of the population)
* @asType integer
* @default 1
*/
ratio: number;
/**
* Used to indicate a type of branch value
* @deprecated
*/
group?: Array<"cfr" | "aboutwelcome">;
/** The variant payload. TODO: This will be more strictly validated. */
value: {
[key: string]: unknown;
} | null;
feature?: FeatureConfig;
}
export {};

@@ -211,2 +211,11 @@ declare type FluentId = {

entrypoint: string;
/** Adds extra parameters to the FXA URL using URLSearchParams.append
* e.g. {foo: "bar"} would result in <FXA_url>?foo=bar
*
* @default {}
*
*/
extraParams?: {
[key: string]: string;
};
};

@@ -213,0 +222,0 @@ }

@@ -5,3 +5,2 @@ export interface Audience {

targeting?: string;
filter_expression?: string;
/**

@@ -8,0 +7,0 @@ * A boolean BigQuery SQL expression expressing whether a single row in telemetry.main would have

{
"name": "@mozilla/nimbus-shared",
"version": "0.0.9",
"version": "1.0.0",
"license": "MPL-2.0",

@@ -32,3 +32,3 @@ "engines": {

"mocha": "^7.2.0",
"node-fetch": "^2.6.0",
"node-fetch": "^2.6.1",
"npm-run-all": "^4.1.5",

@@ -35,0 +35,0 @@ "prettier": "^2.0.5",

@@ -851,2 +851,10 @@ {

"description": "Adds entrypoint={your value} to the FXA URL"
},
"extraParams": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Adds extra parameters to the FXA URL using URLSearchParams.append\ne.g. {foo: \"bar\"} would result in <FXA_url>?foo=bar",
"default": {}
}

@@ -853,0 +861,0 @@ },

@@ -336,2 +336,10 @@ {

"description": "Adds entrypoint={your value} to the FXA URL"
},
"extraParams": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Adds extra parameters to the FXA URL using URLSearchParams.append\ne.g. {foo: \"bar\"} would result in <FXA_url>?foo=bar",
"default": {}
}

@@ -338,0 +346,0 @@ },

@@ -17,5 +17,2 @@ {

},
"filter_expression": {
"type": "string"
},
"desktop_telemetry": {

@@ -22,0 +19,0 @@ "type": "string",

@@ -13,12 +13,14 @@ export const data = {

"name": "A/A Experiment", "description": "A design for diagnostic testing of targeting or enrollment. Fixed to 1% of the population.", "preset": {
"filter_expression": "env.version|versionCompare('{minFirefoxVersion}') >= 0", "targeting": "[{randomizationUnit}, \"{bucketNamespace}\"]|bucketSample({bucketStart}, {bucketCount}, {bucketTotal}) && {audienceTargeting}", "arguments": {
"proposedDuration": 28, "proposedEnrollment": 7, "branches": [
{
"slug": "control", "ratio": 1, "value": null
}, {
"slug": "treatment", "ratio": 1, "value": null
"targeting": "[{randomizationUnit}, \"{bucketNamespace}\"]|bucketSample({bucketStart}, {bucketCount}, {bucketTotal}) && {audienceTargeting}", "proposedDuration": 28, "proposedEnrollment": 7, "branches": [
{
"slug": "control", "ratio": 1, "feature": {
"featureId": "cfr", "enabled": true, "value": null
}
], "bucketConfig": {
"randomizationUnit": "userId", "count": 100, "total": 10000
}, {
"slug": "treatment", "ratio": 1, "feature": {
"featureId": "cfr", "enabled": true, "value": null
}
}
], "bucketConfig": {
"randomizationUnit": "normandy_id", "count": 100, "total": 10000
}

@@ -28,14 +30,26 @@ }

}, "experiment-recipe-samples": {
"pull-factor": {
"id": "ABOUTWELCOME-PULL-FACTOR-REINFORCEMENT-76-RELEASE", "enabled": true, "filter_expression": "(env.version >= '76.' && env.version < '77.' && env.channel == 'release' && !(env.telemetry.main.environment.profile.creationDate < ('2020-05-13'|date / 1000 / 60 / 60 / 24))) || (locale == 'en-US' && [userId, \"aboutwelcome-pull-factor-reinforcement-76-release\"]|bucketSample(0, 2000, 10000) && (!('trailhead.firstrun.didSeeAboutWelcome'|preferenceValue) || 'bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77' in activeExperiments))", "arguments": {
"slug": "bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77", "userFacingName": "About:Welcome Pull Factor Reinforcement", "userFacingDescription": "4 branch experiment different variants of about:welcome with a goal of testing new experiment framework and get insights on whether reinforcing pull-factors improves retention. Test deployment of multiple branches using new experiment framework", "isEnrollmentPaused": true, "active": true, "bucketConfig": {
"randomizationUnit": "normandy_id", "namespace": "bug-1637316-message-aboutwelcome-pull-factor-reinforcement-76-rel-release-76-77", "start": 0, "count": 2000, "total": 10000
}, "startDate": "2020-06-17T23:20:47.230Z", "endDate": null, "proposedDuration": 28, "proposedEnrollment": 7, "referenceBranch": "control", "features": [], "branches": [
{
"slug": "control", "ratio": 1, "value": {}
}, {
"slug": "treatment-variation-b", "ratio": 1, "value": {}
"mobile-a-a": {
"schemaVersion": "0.1.0", "id": "mobile-a-a-example", "slug": "mobile-a-a-example", "application": "reference-browser", "userFacingName": "Mobile A/A Example", "userFacingDescription": "An A/A Test to validate the Rust SDK", "isEnrollmentPaused": false, "bucketConfig": {
"randomizationUnit": "nimbus_id", "namespace": "mobile-a-a-example", "start": 0, "count": 5000, "total": 10000
}, "startDate": null, "endDate": null, "proposedEnrollment": 7, "referenceBranch": "control", "probeSets": [], "branches": [
{
"slug": "control", "ratio": 1
}, {
"slug": "treatment-variation-b", "ratio": 1
}
]
}, "pull-factor": {
"schemaVersion": "0.1.0", "id": "message-aboutwelcome-pull-factor-reinforcement", "slug": "message-aboutwelcome-pull-factor-reinforcement", "application": "firefox-desktop", "userFacingName": "About:Welcome Pull Factor Reinforcement", "userFacingDescription": "4 branch experiment different variants of about:welcome with a goal of testing new experiment framework and get insights on whether reinforcing pull-factors improves retention. Test deployment of multiple branches using new experiment framework", "isEnrollmentPaused": true, "bucketConfig": {
"randomizationUnit": "normandy_id", "namespace": "message-aboutwelcome-pull-factor-reinforcement", "start": 0, "count": 2000, "total": 10000
}, "startDate": "2020-06-17T23:20:47.230Z", "endDate": null, "proposedDuration": 28, "proposedEnrollment": 7, "referenceBranch": "control", "probeSets": [], "branches": [
{
"slug": "control", "ratio": 1, "feature": {
"featureId": "cfr", "enabled": true, "value": null
}
]
}
}, {
"slug": "treatment-variation-b", "ratio": 1, "feature": {
"featureId": "cfr", "enabled": true, "value": null
}
}
]
}

@@ -42,0 +56,0 @@ }, "features": {

/* eslint-disable @typescript-eslint/ban-types */
import { checkSchema, isSchema, assertSchema, SchemaResult } from "../typeGuards";
import type { Audience } from "../../types/targeting";
import type { FoodColors } from "../../types/test";
import type { MultiPreferenceExperimentArguments, ConsoleLogArguments, BranchedAddonStudyArguments, PreferenceExperimentArguments, PreferenceRolloutArguments, NormandyRecipe, MessagingExperimentArguments, PreferenceRollbackArguments, AddonRolloutArguments, ShowHeartbeatArguments, AddonRollbackArguments, OptOutStudyArguments } from "../../types/normandy";
import type { NimbusExperiment } from "../../types/experiments";
import type { Feature } from "../../types/features";
import type { Experiment, ExperimentRecipe } from "../../types/experiments";
import type { TriggerActionSchemas, SimpleCFRMessage, SpecialMessageActionSchemas } from "../../types/messaging";
import type { ShowHeartbeatArguments, BranchedAddonStudyArguments, PreferenceRolloutArguments, AddonRolloutArguments, PreferenceExperimentArguments, PreferenceRollbackArguments, MultiPreferenceExperimentArguments, ConsoleLogArguments, NormandyRecipe, AddonRollbackArguments, MessagingExperimentArguments, OptOutStudyArguments } from "../../types/normandy";
import type { Audience } from "../../types/targeting";
import type { SimpleCFRMessage, TriggerActionSchemas, SpecialMessageActionSchemas } from "../../types/messaging";
export function targeting_isAudience(obj: object): obj is Audience { return isSchema("targeting/Audience", obj); }
export function targeting_checkAudience(obj: object): SchemaResult { return checkSchema("targeting/Audience", obj); }
export function targeting_assertAudience(obj: object): asserts obj is Audience { return assertSchema("targeting/Audience", obj); }
export function test_isFoodColors(obj: object): obj is FoodColors { return isSchema("test/FoodColors", obj); }

@@ -21,37 +16,12 @@ export function test_checkFoodColors(obj: object): SchemaResult { return checkSchema("test/FoodColors", obj); }

export function features_isFeature(obj: object): obj is Feature { return isSchema("features/Feature", obj); }
export function features_checkFeature(obj: object): SchemaResult { return checkSchema("features/Feature", obj); }
export function features_assertFeature(obj: object): asserts obj is Feature { return assertSchema("features/Feature", obj); }
export function normandy_isMultiPreferenceExperimentArguments(obj: object): obj is MultiPreferenceExperimentArguments { return isSchema("normandy/MultiPreferenceExperimentArguments", obj); }
export function normandy_checkMultiPreferenceExperimentArguments(obj: object): SchemaResult { return checkSchema("normandy/MultiPreferenceExperimentArguments", obj); }
export function normandy_assertMultiPreferenceExperimentArguments(obj: object): asserts obj is MultiPreferenceExperimentArguments { return assertSchema("normandy/MultiPreferenceExperimentArguments", obj); }
export function experiments_isExperiment(obj: object): obj is Experiment { return isSchema("experiments/Experiment", obj); }
export function experiments_checkExperiment(obj: object): SchemaResult { return checkSchema("experiments/Experiment", obj); }
export function experiments_assertExperiment(obj: object): asserts obj is Experiment { return assertSchema("experiments/Experiment", obj); }
export function normandy_isConsoleLogArguments(obj: object): obj is ConsoleLogArguments { return isSchema("normandy/ConsoleLogArguments", obj); }
export function normandy_checkConsoleLogArguments(obj: object): SchemaResult { return checkSchema("normandy/ConsoleLogArguments", obj); }
export function normandy_assertConsoleLogArguments(obj: object): asserts obj is ConsoleLogArguments { return assertSchema("normandy/ConsoleLogArguments", obj); }
export function experiments_isExperimentRecipe(obj: object): obj is ExperimentRecipe { return isSchema("experiments/ExperimentRecipe", obj); }
export function experiments_checkExperimentRecipe(obj: object): SchemaResult { return checkSchema("experiments/ExperimentRecipe", obj); }
export function experiments_assertExperimentRecipe(obj: object): asserts obj is ExperimentRecipe { return assertSchema("experiments/ExperimentRecipe", obj); }
export function messaging_isTriggerActionSchemas(obj: object): obj is TriggerActionSchemas { return isSchema("messaging/TriggerActionSchemas", obj); }
export function messaging_checkTriggerActionSchemas(obj: object): SchemaResult { return checkSchema("messaging/TriggerActionSchemas", obj); }
export function messaging_assertTriggerActionSchemas(obj: object): asserts obj is TriggerActionSchemas { return assertSchema("messaging/TriggerActionSchemas", obj); }
export function messaging_isSimpleCFRMessage(obj: object): obj is SimpleCFRMessage { return isSchema("messaging/SimpleCFRMessage", obj); }
export function messaging_checkSimpleCFRMessage(obj: object): SchemaResult { return checkSchema("messaging/SimpleCFRMessage", obj); }
export function messaging_assertSimpleCFRMessage(obj: object): asserts obj is SimpleCFRMessage { return assertSchema("messaging/SimpleCFRMessage", obj); }
export function messaging_isSpecialMessageActionSchemas(obj: object): obj is SpecialMessageActionSchemas { return isSchema("messaging/SpecialMessageActionSchemas", obj); }
export function messaging_checkSpecialMessageActionSchemas(obj: object): SchemaResult { return checkSchema("messaging/SpecialMessageActionSchemas", obj); }
export function messaging_assertSpecialMessageActionSchemas(obj: object): asserts obj is SpecialMessageActionSchemas { return assertSchema("messaging/SpecialMessageActionSchemas", obj); }
export function normandy_isShowHeartbeatArguments(obj: object): obj is ShowHeartbeatArguments { return isSchema("normandy/ShowHeartbeatArguments", obj); }
export function normandy_checkShowHeartbeatArguments(obj: object): SchemaResult { return checkSchema("normandy/ShowHeartbeatArguments", obj); }
export function normandy_assertShowHeartbeatArguments(obj: object): asserts obj is ShowHeartbeatArguments { return assertSchema("normandy/ShowHeartbeatArguments", obj); }
export function normandy_isBranchedAddonStudyArguments(obj: object): obj is BranchedAddonStudyArguments { return isSchema("normandy/BranchedAddonStudyArguments", obj); }

@@ -62,2 +32,7 @@ export function normandy_checkBranchedAddonStudyArguments(obj: object): SchemaResult { return checkSchema("normandy/BranchedAddonStudyArguments", obj); }

export function normandy_isPreferenceExperimentArguments(obj: object): obj is PreferenceExperimentArguments { return isSchema("normandy/PreferenceExperimentArguments", obj); }
export function normandy_checkPreferenceExperimentArguments(obj: object): SchemaResult { return checkSchema("normandy/PreferenceExperimentArguments", obj); }
export function normandy_assertPreferenceExperimentArguments(obj: object): asserts obj is PreferenceExperimentArguments { return assertSchema("normandy/PreferenceExperimentArguments", obj); }
export function normandy_isPreferenceRolloutArguments(obj: object): obj is PreferenceRolloutArguments { return isSchema("normandy/PreferenceRolloutArguments", obj); }

@@ -68,10 +43,10 @@ export function normandy_checkPreferenceRolloutArguments(obj: object): SchemaResult { return checkSchema("normandy/PreferenceRolloutArguments", obj); }

export function normandy_isAddonRolloutArguments(obj: object): obj is AddonRolloutArguments { return isSchema("normandy/AddonRolloutArguments", obj); }
export function normandy_checkAddonRolloutArguments(obj: object): SchemaResult { return checkSchema("normandy/AddonRolloutArguments", obj); }
export function normandy_assertAddonRolloutArguments(obj: object): asserts obj is AddonRolloutArguments { return assertSchema("normandy/AddonRolloutArguments", obj); }
export function normandy_isNormandyRecipe(obj: object): obj is NormandyRecipe { return isSchema("normandy/NormandyRecipe", obj); }
export function normandy_checkNormandyRecipe(obj: object): SchemaResult { return checkSchema("normandy/NormandyRecipe", obj); }
export function normandy_assertNormandyRecipe(obj: object): asserts obj is NormandyRecipe { return assertSchema("normandy/NormandyRecipe", obj); }
export function normandy_isPreferenceExperimentArguments(obj: object): obj is PreferenceExperimentArguments { return isSchema("normandy/PreferenceExperimentArguments", obj); }
export function normandy_checkPreferenceExperimentArguments(obj: object): SchemaResult { return checkSchema("normandy/PreferenceExperimentArguments", obj); }
export function normandy_assertPreferenceExperimentArguments(obj: object): asserts obj is PreferenceExperimentArguments { return assertSchema("normandy/PreferenceExperimentArguments", obj); }
export function normandy_isMessagingExperimentArguments(obj: object): obj is MessagingExperimentArguments { return isSchema("normandy/MessagingExperimentArguments", obj); }
export function normandy_checkMessagingExperimentArguments(obj: object): SchemaResult { return checkSchema("normandy/MessagingExperimentArguments", obj); }
export function normandy_assertMessagingExperimentArguments(obj: object): asserts obj is MessagingExperimentArguments { return assertSchema("normandy/MessagingExperimentArguments", obj); }

@@ -84,17 +59,12 @@

export function normandy_isMultiPreferenceExperimentArguments(obj: object): obj is MultiPreferenceExperimentArguments { return isSchema("normandy/MultiPreferenceExperimentArguments", obj); }
export function normandy_checkMultiPreferenceExperimentArguments(obj: object): SchemaResult { return checkSchema("normandy/MultiPreferenceExperimentArguments", obj); }
export function normandy_assertMultiPreferenceExperimentArguments(obj: object): asserts obj is MultiPreferenceExperimentArguments { return assertSchema("normandy/MultiPreferenceExperimentArguments", obj); }
export function normandy_isAddonRolloutArguments(obj: object): obj is AddonRolloutArguments { return isSchema("normandy/AddonRolloutArguments", obj); }
export function normandy_checkAddonRolloutArguments(obj: object): SchemaResult { return checkSchema("normandy/AddonRolloutArguments", obj); }
export function normandy_assertAddonRolloutArguments(obj: object): asserts obj is AddonRolloutArguments { return assertSchema("normandy/AddonRolloutArguments", obj); }
export function normandy_isConsoleLogArguments(obj: object): obj is ConsoleLogArguments { return isSchema("normandy/ConsoleLogArguments", obj); }
export function normandy_checkConsoleLogArguments(obj: object): SchemaResult { return checkSchema("normandy/ConsoleLogArguments", obj); }
export function normandy_assertConsoleLogArguments(obj: object): asserts obj is ConsoleLogArguments { return assertSchema("normandy/ConsoleLogArguments", obj); }
export function normandy_isShowHeartbeatArguments(obj: object): obj is ShowHeartbeatArguments { return isSchema("normandy/ShowHeartbeatArguments", obj); }
export function normandy_checkShowHeartbeatArguments(obj: object): SchemaResult { return checkSchema("normandy/ShowHeartbeatArguments", obj); }
export function normandy_assertShowHeartbeatArguments(obj: object): asserts obj is ShowHeartbeatArguments { return assertSchema("normandy/ShowHeartbeatArguments", obj); }
export function normandy_isNormandyRecipe(obj: object): obj is NormandyRecipe { return isSchema("normandy/NormandyRecipe", obj); }
export function normandy_checkNormandyRecipe(obj: object): SchemaResult { return checkSchema("normandy/NormandyRecipe", obj); }
export function normandy_assertNormandyRecipe(obj: object): asserts obj is NormandyRecipe { return assertSchema("normandy/NormandyRecipe", obj); }
export function normandy_isAddonRollbackArguments(obj: object): obj is AddonRollbackArguments { return isSchema("normandy/AddonRollbackArguments", obj); }

@@ -105,7 +75,2 @@ export function normandy_checkAddonRollbackArguments(obj: object): SchemaResult { return checkSchema("normandy/AddonRollbackArguments", obj); }

export function normandy_isMessagingExperimentArguments(obj: object): obj is MessagingExperimentArguments { return isSchema("normandy/MessagingExperimentArguments", obj); }
export function normandy_checkMessagingExperimentArguments(obj: object): SchemaResult { return checkSchema("normandy/MessagingExperimentArguments", obj); }
export function normandy_assertMessagingExperimentArguments(obj: object): asserts obj is MessagingExperimentArguments { return assertSchema("normandy/MessagingExperimentArguments", obj); }
export function normandy_isOptOutStudyArguments(obj: object): obj is OptOutStudyArguments { return isSchema("normandy/OptOutStudyArguments", obj); }

@@ -116,1 +81,31 @@ export function normandy_checkOptOutStudyArguments(obj: object): SchemaResult { return checkSchema("normandy/OptOutStudyArguments", obj); }

export function experiments_isNimbusExperiment(obj: object): obj is NimbusExperiment { return isSchema("experiments/NimbusExperiment", obj); }
export function experiments_checkNimbusExperiment(obj: object): SchemaResult { return checkSchema("experiments/NimbusExperiment", obj); }
export function experiments_assertNimbusExperiment(obj: object): asserts obj is NimbusExperiment { return assertSchema("experiments/NimbusExperiment", obj); }
export function features_isFeature(obj: object): obj is Feature { return isSchema("features/Feature", obj); }
export function features_checkFeature(obj: object): SchemaResult { return checkSchema("features/Feature", obj); }
export function features_assertFeature(obj: object): asserts obj is Feature { return assertSchema("features/Feature", obj); }
export function targeting_isAudience(obj: object): obj is Audience { return isSchema("targeting/Audience", obj); }
export function targeting_checkAudience(obj: object): SchemaResult { return checkSchema("targeting/Audience", obj); }
export function targeting_assertAudience(obj: object): asserts obj is Audience { return assertSchema("targeting/Audience", obj); }
export function messaging_isSimpleCFRMessage(obj: object): obj is SimpleCFRMessage { return isSchema("messaging/SimpleCFRMessage", obj); }
export function messaging_checkSimpleCFRMessage(obj: object): SchemaResult { return checkSchema("messaging/SimpleCFRMessage", obj); }
export function messaging_assertSimpleCFRMessage(obj: object): asserts obj is SimpleCFRMessage { return assertSchema("messaging/SimpleCFRMessage", obj); }
export function messaging_isTriggerActionSchemas(obj: object): obj is TriggerActionSchemas { return isSchema("messaging/TriggerActionSchemas", obj); }
export function messaging_checkTriggerActionSchemas(obj: object): SchemaResult { return checkSchema("messaging/TriggerActionSchemas", obj); }
export function messaging_assertTriggerActionSchemas(obj: object): asserts obj is TriggerActionSchemas { return assertSchema("messaging/TriggerActionSchemas", obj); }
export function messaging_isSpecialMessageActionSchemas(obj: object): obj is SpecialMessageActionSchemas { return isSchema("messaging/SpecialMessageActionSchemas", obj); }
export function messaging_checkSpecialMessageActionSchemas(obj: object): SchemaResult { return checkSchema("messaging/SpecialMessageActionSchemas", obj); }
export function messaging_assertSpecialMessageActionSchemas(obj: object): asserts obj is SpecialMessageActionSchemas { return assertSchema("messaging/SpecialMessageActionSchemas", obj); }
/**
* The experiment definition accessible to Firefox via Remote Settings.
* It is compatible with ExperimentManager.
* The experiment definition accessible to:
* 1. The Nimbus SDK via Remote Settings
* 2. Jetstream via the Experimenter API
*/
export interface ExperimentRecipe {
/** A unique identifier for the Recipe */
id: string;
/** JEXL expression defined in an Audience */
filter_expression: string;
export interface NimbusExperiment {
/**
* JEXL expression using messaging system environment
* @deprecated */
targeting?: string;
/** Is the experiment enabled? */
enabled: boolean;
/** Experiment definition */
arguments: Experiment;
}
* Version of the NimbusExperiment schema this experiment refers to
*/
schemaVersion: string;
export interface Experiment {
/** Unique identifier for the experiment */
slug: string;
/** Publically-accesible name of the experiment */
/**
* Unique identifier for the experiment. This is a duplicate of slug, but is a required field
* for all Remote Settings records.
*/
id: string;
/** A specific product such as Firefox Desktop or Fenix that supports Nimbus experiments */
application: string;
/** Public name of the experiment displayed on "about:studies" */
userFacingName: string;
/** Short public description of the experiment */
/** Short public description of the experiment displayed on on "about:studies" */
userFacingDescription: string;
/** Is the experiment currently live in production? i.e., published to remote settings? */
active: boolean;
/** Are we continuing to enroll new users into the experiment? */
/**
* When this property is set to true, the the SDK should not enroll new users
* into the experiment that have not already been enrolled.
*/
isEnrollmentPaused: boolean;
/** Bucketing configuration */
bucketConfig: BucketConfig;
/** A list of feature slugs relevant to the experiment analysis */
features: Array<string>;
/** A list of probe set slugs relevant to the experiment analysis */
probeSets: Array<string>;
/** Branch configuration for the experiment */
branches: Array<Branch>;
/**
* JEXL expression used to filter experiments based on locale, geo, etc.
*/
targeting?: string;
/**
* Actual publish date of the experiment
* Note that this value is expected to be null in Remote Settings.
* @format date-time
*/
startDate: string;
startDate: string | null;
/**
* Actual end date of the experiment
* Actual end date of the experiment.
* Note that this value is expected to be null in Remote Settings.
* @format date-time
*/
endDate: string | null;
/** Duration of the experiment from the start date in days */
proposedDuration: number;
/** Duration of enrollment from the start date in days */
/**
* Duration of the experiment from the start date in days.
* Note that this property is only used during the analysis phase (not by the SDK)
* @asType integer
*/
proposedDuration?: number;
/**
* This represents the number of days that we expect to enroll new users.
* Note that this property is only used during the analysis phase (not by the SDK)
* @asType integer
*/
proposedEnrollment: number;
/** The slug of the reference branch */
/** The slug of the reference branch (that is, which branch we consider "control") */
referenceBranch: string | null;
/**
* This is NOT used by Nimbus, but has special functionality in Remote Settings.
* See https://remote-settings.readthedocs.io/en/latest/target-filters.html#how
*/
filter_expression?: string;
}

@@ -57,14 +91,24 @@

/**
* The randomization unit. Note that client_id is not yet implemented.
* @default "normandy_id"
* A unique, stable identifier for the user used as an input to bucket hashing
*/
randomizationUnit: "client_id" | "normandy_id" | "userId";
randomizationUnit: string;
/** Additional inputs to the hashing function */
namespace: string;
/** Index of start of the range of buckets */
/**
* Index of start of the range of buckets
* @asType integer
* */
start: number;
/** Number of buckets to check */
/**
* Number of buckets to check
* @asType integer
* */
count: number;
/**
* Total number of buckets
* Total number of buckets. You can assume this will always be 10000.
* @asType integer
* @default 10000 */

@@ -74,18 +118,26 @@ total: number;

interface FeatureConfig {
/** The identifier for the feature flag */
featureId: string;
/** This can be used to turn the whole feature on/off */
enabled: boolean;
/** Optional extra params for the feature (this should be validated against a schema) */
value: { [key: string]: unknown } | null;
}
interface Branch {
/** 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;
/**
* Used to indicate a type of branch value
* @deprecated
*/
group?: Array<"cfr" | "aboutwelcome">;
/** The variant payload. TODO: This will be more strictly validated. */
value: { [key: string]: unknown } | null;
feature?: FeatureConfig;
}

@@ -273,2 +273,9 @@ type FluentId = { string_id: string };

entrypoint: string;
/** Adds extra parameters to the FXA URL using URLSearchParams.append
* e.g. {foo: "bar"} would result in <FXA_url>?foo=bar
*
* @default {}
*
*/
extraParams?: { [key: string]: string };
};

@@ -275,0 +282,0 @@ }

@@ -5,3 +5,2 @@ export interface Audience {

targeting?: string;
filter_expression?: string;
/**

@@ -8,0 +7,0 @@ * A boolean BigQuery SQL expression expressing whether a single row in telemetry.main would have

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