@forge/bridge 5.14.0-next.4 → 5.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/out/featureFlags/evaluator.d.ts +9 -0
- package/out/featureFlags/evaluator.d.ts.map +1 -0
- package/out/featureFlags/evaluator.js +53 -0
- package/out/featureFlags/featureFlagEvents.d.ts +1 -1
- package/out/featureFlags/featureFlagEvents.d.ts.map +1 -1
- package/out/featureFlags/featureFlagEvents.js +1 -1
- package/out/featureFlags/featureFlags.d.ts +5 -26
- package/out/featureFlags/featureFlags.d.ts.map +1 -1
- package/out/featureFlags/featureFlags.js +17 -39
- package/out/featureFlags/index.d.ts +2 -1
- package/out/featureFlags/index.d.ts.map +1 -1
- package/out/featureFlags/index.js +2 -2
- package/out/featureFlags/initFeatureFlags.d.ts +1 -1
- package/out/featureFlags/initFeatureFlags.d.ts.map +1 -1
- package/out/featureFlags/initFeatureFlags.js +2 -2
- package/out/featureFlags/types.d.ts +29 -0
- package/out/featureFlags/types.d.ts.map +1 -0
- package/out/featureFlags/types.js +7 -0
- package/out/types.d.ts +0 -18
- package/out/types.d.ts.map +1 -1
- package/out/types.js +1 -5
- package/package.json +2 -3
- package/out/featureFlags/dataAdapter.d.ts +0 -14
- package/out/featureFlags/dataAdapter.d.ts.map +0 -1
- package/out/featureFlags/dataAdapter.js +0 -47
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @forge/bridge
|
|
2
2
|
|
|
3
|
+
## 5.14.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Updated Feature flags client SDK to remove dependency on Statsig
|
|
8
|
+
- 16a4b01: Updated SDK to throw type error
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- f513085: Fix content id for embedded macros createAdfRendererIframeProps
|
|
13
|
+
- Updated dependencies [ad5a470]
|
|
14
|
+
- Updated dependencies [c70bd69]
|
|
15
|
+
- Updated dependencies [3a792a2]
|
|
16
|
+
- Updated dependencies [4210da0]
|
|
17
|
+
- @forge/manifest@12.2.0
|
|
18
|
+
|
|
19
|
+
## 5.14.0-next.5
|
|
20
|
+
|
|
21
|
+
### Minor Changes
|
|
22
|
+
|
|
23
|
+
- Updated Feature flags client SDK to remove dependency on Statsig
|
|
24
|
+
|
|
3
25
|
## 5.14.0-next.4
|
|
4
26
|
|
|
5
27
|
### Minor Changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InitFeatureFlagsResponse } from './types';
|
|
2
|
+
export declare class Evaluator {
|
|
3
|
+
private results;
|
|
4
|
+
constructor(results: InitFeatureFlagsResponse);
|
|
5
|
+
checkFlag(flagName: string, defaultValue: boolean): any;
|
|
6
|
+
shutDown(): void;
|
|
7
|
+
private getHashedValue;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/featureFlags/evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEnD,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAA2B;gBAE9B,OAAO,EAAE,wBAAwB;IAItC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO;IAkCjD,QAAQ;IAKf,OAAO,CAAC,cAAc;CAoBvB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Evaluator = void 0;
|
|
4
|
+
class Evaluator {
|
|
5
|
+
constructor(results) {
|
|
6
|
+
this.results = results;
|
|
7
|
+
}
|
|
8
|
+
checkFlag(flagName, defaultValue) {
|
|
9
|
+
if (!this.results || !this.results.feature_flags) {
|
|
10
|
+
return defaultValue;
|
|
11
|
+
}
|
|
12
|
+
const featureFlags = this.results.feature_flags;
|
|
13
|
+
let hashedValue = '';
|
|
14
|
+
try {
|
|
15
|
+
hashedValue = this.getHashedValue(flagName);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
console.error('Unexpected error occurred while evaluating flag ', err);
|
|
19
|
+
return defaultValue;
|
|
20
|
+
}
|
|
21
|
+
if (!hashedValue) {
|
|
22
|
+
return defaultValue;
|
|
23
|
+
}
|
|
24
|
+
const evaluatedFlag = featureFlags[hashedValue];
|
|
25
|
+
if (evaluatedFlag) {
|
|
26
|
+
if (evaluatedFlag.disabled) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return evaluatedFlag.value;
|
|
30
|
+
}
|
|
31
|
+
return defaultValue;
|
|
32
|
+
}
|
|
33
|
+
shutDown() {
|
|
34
|
+
this.results = undefined;
|
|
35
|
+
}
|
|
36
|
+
getHashedValue(flagName) {
|
|
37
|
+
if (typeof flagName !== 'string') {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
const input = flagName.trim();
|
|
41
|
+
if (input.length === 0) {
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
let hash = 5381;
|
|
45
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
46
|
+
const charCode = input.charCodeAt(i);
|
|
47
|
+
hash = (hash << 5) + hash + charCode;
|
|
48
|
+
hash |= 0;
|
|
49
|
+
}
|
|
50
|
+
return (hash >>> 0).toString();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.Evaluator = Evaluator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureFlagEvents.d.ts","sourceRoot":"","sources":["../../src/featureFlags/featureFlagEvents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"featureFlagEvents.d.ts","sourceRoot":"","sources":["../../src/featureFlags/featureFlagEvents.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAwB,MAAM,SAAS,CAAC;AA6B7E,eAAO,MAAM,qBAAqB,0DAKjC,CAAC"}
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.trackFeatureFlagEvent = void 0;
|
|
4
4
|
const bridge_1 = require("../bridge");
|
|
5
5
|
const errors_1 = require("../errors");
|
|
6
|
-
const types_1 = require("../types");
|
|
7
6
|
const utils_1 = require("../utils");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
8
|
const maxOps = 500;
|
|
9
9
|
const intervalInMs = 1000 * 25;
|
|
10
10
|
const callBridge = (0, bridge_1.getCallBridge)();
|
|
@@ -1,33 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
environment?: FeatureFlagEnvironment;
|
|
4
|
-
}
|
|
5
|
-
export interface FeatureFlagUser {
|
|
6
|
-
userId?: string;
|
|
7
|
-
custom?: Record<string, string | number>;
|
|
8
|
-
attributes?: {
|
|
9
|
-
installContext?: string;
|
|
10
|
-
accountId?: string;
|
|
11
|
-
appVersion?: string;
|
|
12
|
-
license?: string;
|
|
13
|
-
capabilitySet?: string;
|
|
14
|
-
};
|
|
15
|
-
identifiers?: {
|
|
16
|
-
installContext?: string;
|
|
17
|
-
accountId?: string;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export declare class ForgeFeatureFlags {
|
|
1
|
+
import { FeatureFlagUser, ForgeFeatureFlagConfig } from './types';
|
|
2
|
+
export declare class FeatureFlags {
|
|
21
3
|
private initialized;
|
|
22
|
-
private
|
|
23
|
-
private dataAdapter;
|
|
4
|
+
private evaluator;
|
|
24
5
|
private eventProps;
|
|
25
|
-
private readonly CLIENT_KEY;
|
|
26
6
|
initialize(user: FeatureFlagUser, config?: ForgeFeatureFlagConfig): Promise<void>;
|
|
27
|
-
checkFlag(flagName: string): boolean;
|
|
28
|
-
shutdown():
|
|
7
|
+
checkFlag(flagName: string, defaultValue?: boolean): boolean;
|
|
8
|
+
shutdown(): void;
|
|
29
9
|
isInitialized(): boolean;
|
|
30
|
-
private convertUser;
|
|
31
10
|
private sendCheckFlagEvent;
|
|
32
11
|
}
|
|
33
12
|
//# sourceMappingURL=featureFlags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureFlags.d.ts","sourceRoot":"","sources":["../../src/featureFlags/featureFlags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"featureFlags.d.ts","sourceRoot":"","sources":["../../src/featureFlags/featureFlags.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,eAAe,EACf,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAkC;IAKvC,UAAU,CACrB,IAAI,EAAE,eAAe,EACrB,MAAM,GAAE,sBAAuD,GAC9D,OAAO,CAAC,IAAI,CAAC;IAgBT,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO;IAa1D,QAAQ;IAQR,aAAa;IAIpB,OAAO,CAAC,kBAAkB;CAa3B"}
|
|
@@ -1,64 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const dataAdapter_1 = require("./dataAdapter");
|
|
6
|
-
const types_1 = require("../types");
|
|
3
|
+
exports.FeatureFlags = void 0;
|
|
4
|
+
const evaluator_1 = require("./evaluator");
|
|
7
5
|
const featureFlagEvents_1 = require("./featureFlagEvents");
|
|
8
|
-
|
|
6
|
+
const initFeatureFlags_1 = require("./initFeatureFlags");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
class FeatureFlags {
|
|
9
9
|
constructor() {
|
|
10
10
|
this.initialized = false;
|
|
11
|
-
this.client = null;
|
|
12
|
-
this.dataAdapter = null;
|
|
13
11
|
this.eventProps = {};
|
|
14
|
-
this.CLIENT_KEY = 'client-forge-internal-key';
|
|
15
12
|
}
|
|
16
|
-
async initialize(user, config = {}) {
|
|
17
|
-
var _a;
|
|
13
|
+
async initialize(user, config = { environment: 'development' }) {
|
|
18
14
|
if (this.isInitialized()) {
|
|
19
15
|
return;
|
|
20
16
|
}
|
|
21
|
-
this.
|
|
22
|
-
const
|
|
23
|
-
environment: { tier: config.environment || 'development' },
|
|
24
|
-
disableEvaluationMemoization: false,
|
|
25
|
-
loggingEnabled: js_client_1.LoggingEnabledOption.disabled,
|
|
26
|
-
logLevel: js_client_1.LogLevel.None,
|
|
27
|
-
dataAdapter: this.dataAdapter
|
|
28
|
-
};
|
|
29
|
-
this.eventProps.environment = (_a = options.environment) === null || _a === void 0 ? void 0 : _a.tier;
|
|
30
|
-
this.client = new js_client_1.StatsigClient(this.CLIENT_KEY, this.convertUser(user), options);
|
|
31
|
-
await this.client.initializeAsync();
|
|
17
|
+
this.eventProps.environment = config.environment;
|
|
18
|
+
const result = await (0, initFeatureFlags_1.initFeatureFlags)({ user, config });
|
|
32
19
|
this.initialized = true;
|
|
20
|
+
this.evaluator = new evaluator_1.Evaluator(result);
|
|
33
21
|
}
|
|
34
|
-
checkFlag(flagName) {
|
|
35
|
-
if (!this.isInitialized() || !this.
|
|
22
|
+
checkFlag(flagName, defaultValue = false) {
|
|
23
|
+
if (!this.isInitialized() || !this.evaluator) {
|
|
36
24
|
this.sendCheckFlagEvent(flagName, false);
|
|
37
|
-
throw new Error('
|
|
25
|
+
throw new Error('FeatureFlags not initialized. Call initialize() first.');
|
|
38
26
|
}
|
|
39
27
|
this.sendCheckFlagEvent(flagName, true);
|
|
40
|
-
return this.
|
|
28
|
+
return this.evaluator.checkFlag(flagName, defaultValue);
|
|
41
29
|
}
|
|
42
|
-
|
|
43
|
-
if (!this.isInitialized()
|
|
30
|
+
shutdown() {
|
|
31
|
+
if (!this.isInitialized()) {
|
|
44
32
|
return;
|
|
45
33
|
}
|
|
46
|
-
await this.client.shutdown();
|
|
47
|
-
if (this.dataAdapter) {
|
|
48
|
-
await this.dataAdapter.shutdown();
|
|
49
|
-
}
|
|
50
34
|
this.initialized = false;
|
|
35
|
+
this.evaluator.shutDown();
|
|
51
36
|
}
|
|
52
37
|
isInitialized() {
|
|
53
38
|
return this.initialized;
|
|
54
39
|
}
|
|
55
|
-
convertUser(user) {
|
|
56
|
-
return {
|
|
57
|
-
userID: user.userId,
|
|
58
|
-
custom: { ...(user.custom || {}), ...(user.attributes || {}) },
|
|
59
|
-
customIDs: user.identifiers || {}
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
40
|
sendCheckFlagEvent(flagName, success) {
|
|
63
41
|
const props = {
|
|
64
42
|
type: types_1.FeatureFlagEventType.CHECKFLAG,
|
|
@@ -72,4 +50,4 @@ class ForgeFeatureFlags {
|
|
|
72
50
|
void (0, featureFlagEvents_1.trackFeatureFlagEvent)(props);
|
|
73
51
|
}
|
|
74
52
|
}
|
|
75
|
-
exports.
|
|
53
|
+
exports.FeatureFlags = FeatureFlags;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/featureFlags/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/featureFlags/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.FeatureFlags = void 0;
|
|
4
4
|
var featureFlags_1 = require("./featureFlags");
|
|
5
|
-
Object.defineProperty(exports, "
|
|
5
|
+
Object.defineProperty(exports, "FeatureFlags", { enumerable: true, get: function () { return featureFlags_1.FeatureFlags; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initFeatureFlags.d.ts","sourceRoot":"","sources":["../../src/featureFlags/initFeatureFlags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initFeatureFlags.d.ts","sourceRoot":"","sources":["../../src/featureFlags/initFeatureFlags.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAA4B,MAAM,SAAS,CAAC;AAuB5E,eAAO,MAAM,gBAAgB,qDAK5B,CAAC"}
|
|
@@ -8,7 +8,7 @@ const maxOps = 500;
|
|
|
8
8
|
const intervalInMs = 1000 * 25;
|
|
9
9
|
const callBridge = (0, bridge_1.getCallBridge)();
|
|
10
10
|
const validatePayload = (payload) => {
|
|
11
|
-
if (!payload || !payload.user) {
|
|
11
|
+
if (!payload || !payload.user || !payload.config) {
|
|
12
12
|
throw new errors_1.BridgeAPIError('Missing required parameters. Parameter user is required in the payload.');
|
|
13
13
|
}
|
|
14
14
|
if (Object.values(payload).some((val) => typeof val === 'function')) {
|
|
@@ -17,6 +17,6 @@ const validatePayload = (payload) => {
|
|
|
17
17
|
};
|
|
18
18
|
const _initFeatureFlags = (payload) => {
|
|
19
19
|
validatePayload(payload);
|
|
20
|
-
return callBridge('initFeatureFlags', { user: payload.user });
|
|
20
|
+
return callBridge('initFeatureFlags', { user: payload.user, config: payload.config });
|
|
21
21
|
};
|
|
22
22
|
exports.initFeatureFlags = (0, utils_1.withRateLimiter)(_initFeatureFlags, maxOps, intervalInMs, `Feature flags initialisation calls are rate limited at ${maxOps}req/${intervalInMs / 1000}s`);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface ForgeFeatureFlagConfig {
|
|
2
|
+
environment: FeatureFlagEnvironment;
|
|
3
|
+
}
|
|
4
|
+
export interface FeatureFlagUser {
|
|
5
|
+
attributes?: Record<string, string | number>;
|
|
6
|
+
identifiers?: {
|
|
7
|
+
installContext?: string;
|
|
8
|
+
accountId?: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare type InitFeatureFlagsPayload = {
|
|
12
|
+
user: FeatureFlagUser;
|
|
13
|
+
config: ForgeFeatureFlagConfig;
|
|
14
|
+
};
|
|
15
|
+
export declare type InitFeatureFlagsResponse = Record<string, any> | void;
|
|
16
|
+
export declare enum FeatureFlagEventType {
|
|
17
|
+
CHECKFLAG = "checkFlag"
|
|
18
|
+
}
|
|
19
|
+
export declare type FeatureFlagEnvironment = 'development' | 'staging' | 'production';
|
|
20
|
+
export declare type FeatureFlagEventProperties = {
|
|
21
|
+
environment?: FeatureFlagEnvironment;
|
|
22
|
+
success?: boolean;
|
|
23
|
+
name?: string;
|
|
24
|
+
};
|
|
25
|
+
export declare type FeatureFlagEventTrackPayload = {
|
|
26
|
+
type: FeatureFlagEventType;
|
|
27
|
+
properties: FeatureFlagEventProperties;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/featureFlags/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE;QACZ,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,oBAAY,uBAAuB,GAAG;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;CAChC,CAAC;AAEF,oBAAY,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAElE,oBAAY,oBAAoB;IAC9B,SAAS,cAAc;CACxB;AAED,oBAAY,sBAAsB,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;AAE9E,oBAAY,0BAA0B,GAAG;IACvC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oBAAY,4BAA4B,GAAG;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,0BAA0B,CAAC;CACxC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FeatureFlagEventType = void 0;
|
|
4
|
+
var FeatureFlagEventType;
|
|
5
|
+
(function (FeatureFlagEventType) {
|
|
6
|
+
FeatureFlagEventType["CHECKFLAG"] = "checkFlag";
|
|
7
|
+
})(FeatureFlagEventType = exports.FeatureFlagEventType || (exports.FeatureFlagEventType = {}));
|
package/out/types.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type ForgeSupportedLocaleCode } from '@forge/i18n';
|
|
2
2
|
import { type ThemeState } from '@atlaskit/tokens';
|
|
3
|
-
import { StatsigUserInternal } from '@statsig/js-client';
|
|
4
3
|
import { type Scopes, type External } from '@forge/manifest';
|
|
5
4
|
export declare type InvokePayload = {
|
|
6
5
|
[key in number | string]: any;
|
|
@@ -64,23 +63,6 @@ export interface LicenseDetails {
|
|
|
64
63
|
export declare type Subscription = {
|
|
65
64
|
unsubscribe: () => void;
|
|
66
65
|
};
|
|
67
|
-
export declare type InitFeatureFlagsPayload = {
|
|
68
|
-
user: StatsigUserInternal;
|
|
69
|
-
};
|
|
70
|
-
export declare type InitFeatureFlagsResponse = Record<string, any> | void;
|
|
71
|
-
export declare enum FeatureFlagEventType {
|
|
72
|
-
CHECKFLAG = "checkFlag"
|
|
73
|
-
}
|
|
74
|
-
export declare type FeatureFlagEnvironment = 'development' | 'staging' | 'production';
|
|
75
|
-
export declare type FeatureFlagEventProperties = {
|
|
76
|
-
environment?: FeatureFlagEnvironment;
|
|
77
|
-
success?: boolean;
|
|
78
|
-
name?: string;
|
|
79
|
-
};
|
|
80
|
-
export declare type FeatureFlagEventTrackPayload = {
|
|
81
|
-
type: FeatureFlagEventType;
|
|
82
|
-
properties: FeatureFlagEventProperties;
|
|
83
|
-
};
|
|
84
66
|
export interface RuntimePermissions {
|
|
85
67
|
scopes?: Scopes;
|
|
86
68
|
external?: External;
|
package/out/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,oBAAY,aAAa,GAAG;KACzB,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,GAAG;CAC9B,CAAC;AAEF,oBAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAExD,aAAK,aAAa,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC;AAEhD,oBAAY,oBAAoB,GAAG,aAAa,CAAC;AACjD,oBAAY,mBAAmB,GAAG,aAAa,CAAC;AAEhD,oBAAY,oBAAoB;IAC9B,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;CAC1B;AAED,aAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,oBAAY,eAAe,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,wBAAwB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AACD,UAAU,aAAa;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,aAAK,oBAAoB;IACvB,WAAW,gBAAgB;CAC5B;AACD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;CACtC;AAED,oBAAY,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAQF,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAGD,oBAAY,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAE3D,oBAAY,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC"}
|
package/out/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ExtensionEnvironment = void 0;
|
|
4
4
|
var ExtensionEnvironment;
|
|
5
5
|
(function (ExtensionEnvironment) {
|
|
6
6
|
ExtensionEnvironment["DEVELOPMENT"] = "DEVELOPMENT";
|
|
@@ -11,7 +11,3 @@ var EcosystemLicenseMode;
|
|
|
11
11
|
(function (EcosystemLicenseMode) {
|
|
12
12
|
EcosystemLicenseMode["USER_ACCESS"] = "USER_ACCESS";
|
|
13
13
|
})(EcosystemLicenseMode || (EcosystemLicenseMode = {}));
|
|
14
|
-
var FeatureFlagEventType;
|
|
15
|
-
(function (FeatureFlagEventType) {
|
|
16
|
-
FeatureFlagEventType["CHECKFLAG"] = "checkFlag";
|
|
17
|
-
})(FeatureFlagEventType = exports.FeatureFlagEventType || (exports.FeatureFlagEventType = {}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/bridge",
|
|
3
|
-
"version": "5.14.0
|
|
3
|
+
"version": "5.14.0",
|
|
4
4
|
"description": "Forge bridge API for custom UI apps",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
@@ -18,9 +18,8 @@
|
|
|
18
18
|
"@forge/egress": "^2.3.1",
|
|
19
19
|
"@forge/i18n": "0.0.7",
|
|
20
20
|
"@forge/resolver": "1.7.1",
|
|
21
|
-
"@statsig/js-client": "3.18.2",
|
|
22
21
|
"@types/history": "^4.7.11",
|
|
23
|
-
"@forge/manifest": "12.2.0
|
|
22
|
+
"@forge/manifest": "12.2.0",
|
|
24
23
|
"@types/iframe-resizer": "^3.5.8",
|
|
25
24
|
"iframe-resizer": "^4.4.5",
|
|
26
25
|
"uuid": "^9.0.1"
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { StatsigUser, EvaluationsDataAdapter, DataAdapterResult, DataAdapterAsyncOptions, NetworkCore, AnyStatsigOptions } from '@statsig/js-client';
|
|
2
|
-
export declare class ForgeDataAdapter implements EvaluationsDataAdapter {
|
|
3
|
-
private options;
|
|
4
|
-
private environment;
|
|
5
|
-
private cache;
|
|
6
|
-
getDataAsync(current: DataAdapterResult | null, user: StatsigUser, options?: DataAdapterAsyncOptions): Promise<DataAdapterResult | null>;
|
|
7
|
-
getDataSync(_user: StatsigUser): DataAdapterResult | null;
|
|
8
|
-
attach(_sdkKey: string, options: AnyStatsigOptions | null, _network: NetworkCore): Promise<void>;
|
|
9
|
-
prefetchData(): Promise<void>;
|
|
10
|
-
setData(_data: string): Promise<void>;
|
|
11
|
-
setDataLegacy(_data: string): Promise<void>;
|
|
12
|
-
shutdown(): Promise<void>;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=dataAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataAdapter.d.ts","sourceRoot":"","sources":["../../src/featureFlags/dataAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,WAAW,EACX,iBAAiB,EAIlB,MAAM,oBAAoB,CAAC;AAO5B,qBAAa,gBAAiB,YAAW,sBAAsB;IAC7D,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,WAAW,CAA6C;IAChE,OAAO,CAAC,KAAK,CAAkC;IAKzC,YAAY,CAChB,OAAO,EAAE,iBAAiB,GAAG,IAAI,EACjC,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA8BpC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB,GAAG,IAAI;IAOnD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ForgeDataAdapter = void 0;
|
|
4
|
-
const initFeatureFlags_1 = require("./initFeatureFlags");
|
|
5
|
-
class ForgeDataAdapter {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.options = null;
|
|
8
|
-
this.environment = undefined;
|
|
9
|
-
this.cache = null;
|
|
10
|
-
}
|
|
11
|
-
async getDataAsync(current, user, options) {
|
|
12
|
-
var _a;
|
|
13
|
-
if (current) {
|
|
14
|
-
return current;
|
|
15
|
-
}
|
|
16
|
-
this.environment = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.environment) || { tier: 'development' };
|
|
17
|
-
const initUser = {
|
|
18
|
-
...user,
|
|
19
|
-
statsigEnvironment: this.environment
|
|
20
|
-
};
|
|
21
|
-
const result = await (0, initFeatureFlags_1.initFeatureFlags)({ user: initUser });
|
|
22
|
-
const data = {
|
|
23
|
-
source: 'Network',
|
|
24
|
-
data: JSON.stringify(result),
|
|
25
|
-
receivedAt: Date.now(),
|
|
26
|
-
stableID: null,
|
|
27
|
-
fullUserHash: null
|
|
28
|
-
};
|
|
29
|
-
this.cache = data;
|
|
30
|
-
return data;
|
|
31
|
-
}
|
|
32
|
-
getDataSync(_user) {
|
|
33
|
-
return this.cache;
|
|
34
|
-
}
|
|
35
|
-
async attach(_sdkKey, options, _network) {
|
|
36
|
-
this.options = options;
|
|
37
|
-
}
|
|
38
|
-
async prefetchData() { }
|
|
39
|
-
async setData(_data) { }
|
|
40
|
-
async setDataLegacy(_data) { }
|
|
41
|
-
async shutdown() {
|
|
42
|
-
this.options = null;
|
|
43
|
-
this.cache = null;
|
|
44
|
-
this.environment = undefined;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.ForgeDataAdapter = ForgeDataAdapter;
|