superposition-provider 0.84.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.
@@ -0,0 +1,36 @@
1
+ import { EvaluationContext, Provider, JsonValue, ResolutionDetails, ProviderStatus, OpenFeatureEventEmitter, ProviderMetadata, Hook, Logger } from '@openfeature/server-sdk';
2
+ import { ConfigurationClient } from './configuration-client';
3
+ import { EvaluationCacheOptions, RefreshStrategy, ConfigData, ExperimentationOptions } from './types';
4
+ export interface SuperpositionProviderOptions {
5
+ endpoint: string;
6
+ token: string;
7
+ org_id: string;
8
+ workspace_id: string;
9
+ httpClient?: any;
10
+ fallbackConfig?: ConfigData;
11
+ evaluationCache?: EvaluationCacheOptions;
12
+ refreshStrategy?: RefreshStrategy;
13
+ experimentationOptions?: ExperimentationOptions;
14
+ }
15
+ export declare class SuperpositionProvider implements Provider {
16
+ private config;
17
+ readonly metadata: ProviderMetadata;
18
+ events: OpenFeatureEventEmitter;
19
+ readonly hooks: Hook[];
20
+ private client;
21
+ status: ProviderStatus;
22
+ private processedContextCache;
23
+ constructor(config: SuperpositionProviderOptions);
24
+ initialize(context?: EvaluationContext): Promise<void>;
25
+ onClose(): Promise<void>;
26
+ private evaluateFlag;
27
+ private filterContext;
28
+ private createResolver;
29
+ resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: EvaluationContext): Promise<ResolutionDetails<boolean>>;
30
+ resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext): Promise<ResolutionDetails<string>>;
31
+ resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext): Promise<ResolutionDetails<number>>;
32
+ resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext, logger?: Logger): Promise<ResolutionDetails<T>>;
33
+ resolveAllConfigDetails(defaultValue: Record<string, any>, context: EvaluationContext): Promise<Record<string, any>>;
34
+ getStatus(): ProviderStatus;
35
+ getConfigurationClient(): ConfigurationClient;
36
+ }
@@ -0,0 +1,57 @@
1
+ export interface SuperpositionOptions {
2
+ endpoint: string;
3
+ token: string;
4
+ org_id?: string;
5
+ workspace_id?: string;
6
+ httpClient?: any;
7
+ }
8
+ export interface CacheOptions {
9
+ ttl?: number;
10
+ size?: number;
11
+ }
12
+ export interface EvaluationCacheOptions {
13
+ ttl?: number;
14
+ size?: number;
15
+ }
16
+ export interface PollingStrategy {
17
+ interval: number;
18
+ timeout?: number;
19
+ }
20
+ export interface OnDemandStrategy {
21
+ ttl: number;
22
+ timeout?: number;
23
+ use_stale_on_error?: boolean;
24
+ }
25
+ export type RefreshStrategy = PollingStrategy | OnDemandStrategy;
26
+ export interface ExperimentationOptions {
27
+ refreshStrategy: RefreshStrategy;
28
+ evaluationCache?: EvaluationCacheOptions;
29
+ defaultIdentifier?: string;
30
+ }
31
+ export interface ConfigOptions {
32
+ fallbackConfig?: Record<string, any>;
33
+ evaluationCache?: EvaluationCacheOptions;
34
+ refreshStrategy?: RefreshStrategy;
35
+ }
36
+ export interface ConfigData {
37
+ default_configs: Record<string, any>;
38
+ contexts: any[];
39
+ overrides: Record<string, Record<string, any>>;
40
+ }
41
+ export interface FfiExperiment {
42
+ id: string;
43
+ context: Record<string, string>;
44
+ variants: Variant[];
45
+ traffic_percentage: number;
46
+ }
47
+ export interface Variant {
48
+ id: string;
49
+ variant_type: 'CONTROL' | 'EXPERIMENTAL';
50
+ context_id?: string;
51
+ override_id?: string;
52
+ overrides: Record<string, string>;
53
+ }
54
+ export interface ExperimentationArgs {
55
+ experiments: FfiExperiment[];
56
+ targeting_key: string;
57
+ }
@@ -0,0 +1,5 @@
1
+ export declare function getNestedValue(obj: any, key: string): any;
2
+ export declare function convertToBoolean(value: any, defaultValue: boolean): boolean;
3
+ export declare function convertToString(value: any, defaultValue: string): string;
4
+ export declare function convertToNumber(value: any, defaultValue: number): number;
5
+ export declare function convertToObject<T>(value: any, defaultValue: T): T;
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "superposition-provider",
3
+ "version": "0.84.0",
4
+ "type": "module",
5
+ "description": "OpenFeature provider for Superposition feature flags",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.esm.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.esm.js",
12
+ "require": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/juspay/superposition.git"
19
+ },
20
+ "scripts": {
21
+ "prebuild": "node build-deps.js",
22
+ "build": "rollup -c",
23
+ "clean": "rimraf dist",
24
+ "prepack": "npm run clean && npm run build",
25
+ "test": "jest",
26
+ "prepublishOnly": "npm --no-git-tag-version version $VERSION"
27
+ },
28
+ "peerDependencies": {
29
+ "@openfeature/server-sdk": "^1.13.0"
30
+ },
31
+ "dependencies": {
32
+ "koffi": "^2.11.0",
33
+ "tslib": "^2.6.2"
34
+ },
35
+ "devDependencies": {
36
+ "@openfeature/server-sdk": "^1.13.0",
37
+ "@rollup/plugin-commonjs": "^25.0.0",
38
+ "@rollup/plugin-json": "^6.1.0",
39
+ "@rollup/plugin-node-resolve": "^15.0.0",
40
+ "@rollup/plugin-typescript": "^11.0.0",
41
+ "@types/jest": "^29.5.12",
42
+ "@types/node": "^20.0.0",
43
+ "jest": "^29.7.0",
44
+ "rimraf": "^5.0.0",
45
+ "rollup": "^4.0.0",
46
+ "rollup-plugin-copy": "^3.5.0",
47
+ "rollup-plugin-dts": "^6.0.0",
48
+ "ts-jest": "^29.1.1",
49
+ "tslib": "^2.6.2",
50
+ "typescript": "~5.2.2"
51
+ },
52
+ "engines": {
53
+ "node": ">=18.0.0"
54
+ },
55
+ "files": [
56
+ "dist/**/*"
57
+ ],
58
+ "bundledDependencies": [
59
+ "superposition-bindings",
60
+ "superposition-sdk"
61
+ ]
62
+ }