@forge/bridge 5.5.0 → 5.6.0-next.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 +6 -0
- package/out/featureFlags/dataAdapter.d.ts +14 -0
- package/out/featureFlags/dataAdapter.d.ts.map +1 -0
- package/out/featureFlags/dataAdapter.js +47 -0
- package/out/featureFlags/featureFlags.d.ts +24 -0
- package/out/featureFlags/featureFlags.d.ts.map +1 -0
- package/out/featureFlags/featureFlags.js +55 -0
- package/out/featureFlags/index.d.ts +3 -0
- package/out/featureFlags/index.d.ts.map +1 -0
- package/out/featureFlags/index.js +7 -0
- package/out/featureFlags/initFeatureFlags.d.ts +3 -0
- package/out/featureFlags/initFeatureFlags.d.ts.map +1 -0
- package/out/featureFlags/initFeatureFlags.js +22 -0
- package/out/index.d.ts +1 -0
- package/out/index.d.ts.map +1 -1
- package/out/index.js +1 -0
- package/out/types.d.ts +5 -0
- package/out/types.d.ts.map +1 -1
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
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;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface ForgeFeatureFlagConfig {
|
|
2
|
+
environment?: 'development' | 'staging' | 'production';
|
|
3
|
+
}
|
|
4
|
+
export interface FeatureFlagsUser {
|
|
5
|
+
userId?: string;
|
|
6
|
+
custom?: Record<string, string | number | boolean>;
|
|
7
|
+
attributes?: Record<string, string | number | boolean>;
|
|
8
|
+
identifiers?: {
|
|
9
|
+
installContext?: string;
|
|
10
|
+
accountId?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare class ForgeFeatureService {
|
|
14
|
+
private initialized;
|
|
15
|
+
private client;
|
|
16
|
+
private dataAdapter;
|
|
17
|
+
private readonly CLIENT_KEY;
|
|
18
|
+
initialize(user: FeatureFlagsUser, config?: ForgeFeatureFlagConfig): Promise<void>;
|
|
19
|
+
checkFlag(flagName: string): boolean;
|
|
20
|
+
shutdown(): Promise<void>;
|
|
21
|
+
isInitialised(): boolean;
|
|
22
|
+
private convertUser;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=featureFlags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureFlags.d.ts","sourceRoot":"","sources":["../../src/featureFlags/featureFlags.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;CACxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACvD,WAAW,CAAC,EAAE;QACZ,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAID,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAKrD,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB5F,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAW9B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,aAAa;IAIpB,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForgeFeatureService = void 0;
|
|
4
|
+
const js_client_1 = require("@statsig/js-client");
|
|
5
|
+
const dataAdapter_1 = require("./dataAdapter");
|
|
6
|
+
class ForgeFeatureService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.initialized = false;
|
|
9
|
+
this.client = null;
|
|
10
|
+
this.dataAdapter = null;
|
|
11
|
+
this.CLIENT_KEY = 'client-forge-internal-key';
|
|
12
|
+
}
|
|
13
|
+
async initialize(user, config = {}) {
|
|
14
|
+
if (this.isInitialised()) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
this.dataAdapter = new dataAdapter_1.ForgeDataAdapter();
|
|
18
|
+
const options = {
|
|
19
|
+
environment: { tier: config.environment || 'development' },
|
|
20
|
+
disableEvaluationMemoization: false,
|
|
21
|
+
loggingEnabled: js_client_1.LoggingEnabledOption.disabled,
|
|
22
|
+
dataAdapter: this.dataAdapter
|
|
23
|
+
};
|
|
24
|
+
this.client = new js_client_1.StatsigClient(this.CLIENT_KEY, this.convertUser(user), options);
|
|
25
|
+
await this.client.initializeAsync();
|
|
26
|
+
this.initialized = true;
|
|
27
|
+
}
|
|
28
|
+
checkFlag(flagName) {
|
|
29
|
+
if (!this.isInitialised() || !this.client) {
|
|
30
|
+
throw new Error('ForgeFeatureService not initialized. Call initialize() first.');
|
|
31
|
+
}
|
|
32
|
+
return this.client.checkGate(flagName, { disableExposureLog: true });
|
|
33
|
+
}
|
|
34
|
+
async shutdown() {
|
|
35
|
+
if (!this.isInitialised() || !this.client) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
await this.client.shutdown();
|
|
39
|
+
if (this.dataAdapter) {
|
|
40
|
+
await this.dataAdapter.shutdown();
|
|
41
|
+
}
|
|
42
|
+
this.initialized = false;
|
|
43
|
+
}
|
|
44
|
+
isInitialised() {
|
|
45
|
+
return this.initialized;
|
|
46
|
+
}
|
|
47
|
+
convertUser(user) {
|
|
48
|
+
return {
|
|
49
|
+
userID: user.userId,
|
|
50
|
+
custom: { ...(user.custom || {}), ...(user.attributes || {}) },
|
|
51
|
+
customIDs: user.identifiers || {}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.ForgeFeatureService = ForgeFeatureService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/featureFlags/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForgeFeatureService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
tslib_1.__exportStar(require("./initFeatureFlags"), exports);
|
|
6
|
+
var featureFlags_1 = require("./featureFlags");
|
|
7
|
+
Object.defineProperty(exports, "ForgeFeatureService", { enumerable: true, get: function () { return featureFlags_1.ForgeFeatureService; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initFeatureFlags.d.ts","sourceRoot":"","sources":["../../src/featureFlags/initFeatureFlags.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAA4B,MAAM,UAAU,CAAC;AAwB7E,eAAO,MAAM,gBAAgB,qDAK5B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initFeatureFlags = void 0;
|
|
4
|
+
const bridge_1 = require("../bridge");
|
|
5
|
+
const errors_1 = require("../errors");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const maxOps = 500;
|
|
8
|
+
const intervalInMs = 1000 * 25;
|
|
9
|
+
const callBridge = (0, bridge_1.getCallBridge)();
|
|
10
|
+
const validatePayload = (payload) => {
|
|
11
|
+
if (!payload || !payload.user) {
|
|
12
|
+
throw new errors_1.BridgeAPIError('Missing required parameters. Parameter user is required in the payload.');
|
|
13
|
+
}
|
|
14
|
+
if (Object.values(payload).some((val) => typeof val === 'function')) {
|
|
15
|
+
throw new errors_1.BridgeAPIError('Passing functions as part of the payload is not supported!');
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const _initFeatureFlags = (payload) => {
|
|
19
|
+
validatePayload(payload);
|
|
20
|
+
return callBridge('initFeatureFlags', { user: payload.user });
|
|
21
|
+
};
|
|
22
|
+
exports.initFeatureFlags = (0, utils_1.withRateLimiter)(_initFeatureFlags, maxOps, intervalInMs, 'Feature flags initialisation calls are rate limited at 500req/25s');
|
package/out/index.d.ts
CHANGED
package/out/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,cAAc,gBAAgB,CAAC"}
|
package/out/index.js
CHANGED
|
@@ -14,3 +14,4 @@ tslib_1.__exportStar(require("./flag"), exports);
|
|
|
14
14
|
tslib_1.__exportStar(require("./events"), exports);
|
|
15
15
|
tslib_1.__exportStar(require("./realtime"), exports);
|
|
16
16
|
exports.i18n = tslib_1.__importStar(require("./i18n"));
|
|
17
|
+
tslib_1.__exportStar(require("./featureFlags"), exports);
|
package/out/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ForgeSupportedLocaleCode } from '@forge/i18n';
|
|
2
2
|
import { type ThemeState } from '@atlaskit/tokens';
|
|
3
|
+
import { StatsigUserInternal } from '@statsig/js-client';
|
|
3
4
|
export declare type InvokePayload = {
|
|
4
5
|
[key in number | string]: any;
|
|
5
6
|
};
|
|
@@ -59,5 +60,9 @@ export interface LicenseDetails {
|
|
|
59
60
|
export declare type Subscription = {
|
|
60
61
|
unsubscribe: () => void;
|
|
61
62
|
};
|
|
63
|
+
export declare type InitFeatureFlagsPayload = {
|
|
64
|
+
user: StatsigUserInternal;
|
|
65
|
+
};
|
|
66
|
+
export declare type InitFeatureFlagsResponse = Record<string, any> | void;
|
|
62
67
|
export {};
|
|
63
68
|
//# sourceMappingURL=types.d.ts.map
|
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;
|
|
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,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,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,oBAAY,oBAAoB,GAAG;IACjC,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;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;CAChC;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;AAEF,oBAAY,uBAAuB,GAAG;IACpC,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEF,oBAAY,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/bridge",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.6.0-next.0",
|
|
4
4
|
"description": "Forge bridge API for custom UI apps",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@atlaskit/tokens": "^1.58.0",
|
|
17
|
-
"@types/history": "^4.7.11",
|
|
18
17
|
"@forge/i18n": "0.0.7",
|
|
19
|
-
"@forge/resolver": "1.7.0"
|
|
18
|
+
"@forge/resolver": "1.7.0",
|
|
19
|
+
"@statsig/js-client": "3.18.2",
|
|
20
|
+
"@types/history": "^4.7.11"
|
|
20
21
|
},
|
|
21
22
|
"devDependencies": {
|
|
22
23
|
"history": "5.3.0",
|