@spritz-finance/service-client 0.2.97 → 0.2.99

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.
@@ -0,0 +1,36 @@
1
+ import { AxiosInstance } from 'axios';
2
+ type FeatureFlagDefinition = {
3
+ key: string;
4
+ label: string;
5
+ description: string;
6
+ defaultValue: boolean;
7
+ };
8
+ export interface FeatureFlagDetails extends FeatureFlagDefinition {
9
+ value: boolean;
10
+ }
11
+ export declare enum FeatureFlag {
12
+ PaymentsEnabled = "payments.enabled",
13
+ EthereumPayments = "payments.network.ethereum",
14
+ PolygonPayments = "payments.network.polygon",
15
+ OptimismPayments = "payments.network.optimism",
16
+ ArbitrumPayments = "payments.network.arbitrum",
17
+ BasePayments = "payments.network.base",
18
+ AvalancePayments = "payments.network.avalanche",
19
+ BinancePayments = "payments.network.binance-smart-chain",
20
+ SolanaPayments = "payments.network.solana",
21
+ TronPayments = "payments.network.tron",
22
+ BtcPayments = "payments.network.bitcoin",
23
+ DashPayments = "payments.network.dash",
24
+ SpritzCardNoKycEnabled = "spritzCard.noKyc.enabled",
25
+ SpritzCardNoKycPayments = "spritzCard.noKyc.payments",
26
+ BinanceBridgeEnabled = "binanceBridge.enabled"
27
+ }
28
+ export type FeatureFlags = Record<FeatureFlag, FeatureFlagDetails>;
29
+ export declare class FeatureServiceClient {
30
+ client: AxiosInstance;
31
+ constructor();
32
+ getFeatureFlags(): Promise<import("./types").ApiFailure | import("./types").ApiSuccess<FeatureFlags>>;
33
+ isFeatureFlagEnabled(flag: FeatureFlag): Promise<boolean>;
34
+ isPaymentsEnabled(network?: string): Promise<boolean>;
35
+ }
36
+ export {};
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FeatureServiceClient = exports.FeatureFlag = void 0;
4
+ const config_1 = require("./config");
5
+ const serviceClient_1 = require("./serviceClient");
6
+ const utils_1 = require("./utils");
7
+ var FeatureFlag;
8
+ (function (FeatureFlag) {
9
+ FeatureFlag["PaymentsEnabled"] = "payments.enabled";
10
+ FeatureFlag["EthereumPayments"] = "payments.network.ethereum";
11
+ FeatureFlag["PolygonPayments"] = "payments.network.polygon";
12
+ FeatureFlag["OptimismPayments"] = "payments.network.optimism";
13
+ FeatureFlag["ArbitrumPayments"] = "payments.network.arbitrum";
14
+ FeatureFlag["BasePayments"] = "payments.network.base";
15
+ FeatureFlag["AvalancePayments"] = "payments.network.avalanche";
16
+ FeatureFlag["BinancePayments"] = "payments.network.binance-smart-chain";
17
+ FeatureFlag["SolanaPayments"] = "payments.network.solana";
18
+ FeatureFlag["TronPayments"] = "payments.network.tron";
19
+ FeatureFlag["BtcPayments"] = "payments.network.bitcoin";
20
+ FeatureFlag["DashPayments"] = "payments.network.dash";
21
+ FeatureFlag["SpritzCardNoKycEnabled"] = "spritzCard.noKyc.enabled";
22
+ FeatureFlag["SpritzCardNoKycPayments"] = "spritzCard.noKyc.payments";
23
+ FeatureFlag["BinanceBridgeEnabled"] = "binanceBridge.enabled";
24
+ })(FeatureFlag || (exports.FeatureFlag = FeatureFlag = {}));
25
+ const networkToFlag = (network) => {
26
+ switch (network) {
27
+ case 'ethereum':
28
+ return FeatureFlag.EthereumPayments;
29
+ case 'polygon':
30
+ return FeatureFlag.PolygonPayments;
31
+ case 'optimism':
32
+ return FeatureFlag.OptimismPayments;
33
+ case 'arbitrum':
34
+ return FeatureFlag.ArbitrumPayments;
35
+ case 'base':
36
+ return FeatureFlag.BasePayments;
37
+ case 'avalanche':
38
+ return FeatureFlag.AvalancePayments;
39
+ case 'binance-smart-chain':
40
+ return FeatureFlag.BinancePayments;
41
+ case 'solana':
42
+ return FeatureFlag.SolanaPayments;
43
+ case 'tron':
44
+ return FeatureFlag.TronPayments;
45
+ case 'bitcoin':
46
+ return FeatureFlag.BtcPayments;
47
+ case 'dash':
48
+ return FeatureFlag.DashPayments;
49
+ default:
50
+ return null;
51
+ }
52
+ };
53
+ class FeatureServiceClient {
54
+ constructor() {
55
+ this.client = (0, serviceClient_1.createServiceClient)({
56
+ baseURL: config_1.config.usersServiceEndpoint,
57
+ });
58
+ }
59
+ async getFeatureFlags() {
60
+ return this.client
61
+ .get(`/feature-flags`)
62
+ .then((res) => res.data);
63
+ }
64
+ async isFeatureFlagEnabled(flag) {
65
+ var _a, _b;
66
+ const response = await this.getFeatureFlags();
67
+ if ((0, utils_1.isApiError)(response))
68
+ return false;
69
+ const flags = response.data;
70
+ return (_b = (_a = flags[flag]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : false;
71
+ }
72
+ async isPaymentsEnabled(network) {
73
+ var _a, _b, _c;
74
+ const response = await this.getFeatureFlags();
75
+ if ((0, utils_1.isApiError)(response))
76
+ return false;
77
+ const flags = response.data;
78
+ if (!((_a = flags[FeatureFlag.PaymentsEnabled]) === null || _a === void 0 ? void 0 : _a.value))
79
+ return false;
80
+ if (!network)
81
+ return true;
82
+ const networkFlag = networkToFlag(network);
83
+ return networkFlag ? (_c = (_b = flags[networkFlag]) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : true : true;
84
+ }
85
+ }
86
+ exports.FeatureServiceClient = FeatureServiceClient;
package/lib/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './serviceClient';
4
4
  export * from './verificationServiceClient';
5
5
  export * from './transactionsServiceClient';
6
6
  export * from './usersServiceClient';
7
+ export * from './featuresServiceClient';
7
8
  export * from './growthServiceClient';
8
9
  export * from './liabilitiesServiceClient';
9
10
  export * from './payableAccountsServiceClient';
package/lib/index.js CHANGED
@@ -20,6 +20,7 @@ __exportStar(require("./serviceClient"), exports);
20
20
  __exportStar(require("./verificationServiceClient"), exports);
21
21
  __exportStar(require("./transactionsServiceClient"), exports);
22
22
  __exportStar(require("./usersServiceClient"), exports);
23
+ __exportStar(require("./featuresServiceClient"), exports);
23
24
  __exportStar(require("./growthServiceClient"), exports);
24
25
  __exportStar(require("./liabilitiesServiceClient"), exports);
25
26
  __exportStar(require("./payableAccountsServiceClient"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spritz-finance/service-client",
3
- "version": "0.2.97",
3
+ "version": "0.2.99",
4
4
  "description": "Service client",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",