@openfeature/web-sdk 0.3.5-experimental → 0.3.7-experimental
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/dist/cjs/index.js +97 -66
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +97 -66
- package/dist/esm/index.js.map +4 -4
- package/dist/types.d.ts +295 -276
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -433,7 +433,16 @@ var require_events = __commonJS({
|
|
|
433
433
|
}
|
|
434
434
|
});
|
|
435
435
|
|
|
436
|
-
// ../shared/src/
|
|
436
|
+
// ../shared/src/errors/open-feature-error-abstract.ts
|
|
437
|
+
var OpenFeatureError = class extends Error {
|
|
438
|
+
constructor(message) {
|
|
439
|
+
super(message);
|
|
440
|
+
Object.setPrototypeOf(this, OpenFeatureError.prototype);
|
|
441
|
+
this.name = "OpenFeatureError";
|
|
442
|
+
}
|
|
443
|
+
};
|
|
444
|
+
|
|
445
|
+
// ../shared/src/evaluation/evaluation.ts
|
|
437
446
|
var StandardResolutionReasons = {
|
|
438
447
|
/**
|
|
439
448
|
* The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.
|
|
@@ -480,21 +489,6 @@ var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
|
|
|
480
489
|
ErrorCode2["GENERAL"] = "GENERAL";
|
|
481
490
|
return ErrorCode2;
|
|
482
491
|
})(ErrorCode || {});
|
|
483
|
-
var ProviderStatus = /* @__PURE__ */ ((ProviderStatus2) => {
|
|
484
|
-
ProviderStatus2["NOT_READY"] = "NOT_READY";
|
|
485
|
-
ProviderStatus2["READY"] = "READY";
|
|
486
|
-
ProviderStatus2["ERROR"] = "ERROR";
|
|
487
|
-
return ProviderStatus2;
|
|
488
|
-
})(ProviderStatus || {});
|
|
489
|
-
|
|
490
|
-
// ../shared/src/errors/open-feature-error-abstract.ts
|
|
491
|
-
var OpenFeatureError = class extends Error {
|
|
492
|
-
constructor(message) {
|
|
493
|
-
super(message);
|
|
494
|
-
Object.setPrototypeOf(this, OpenFeatureError.prototype);
|
|
495
|
-
this.name = "OpenFeatureError";
|
|
496
|
-
}
|
|
497
|
-
};
|
|
498
492
|
|
|
499
493
|
// ../shared/src/errors/general-error.ts
|
|
500
494
|
var GeneralError = class extends OpenFeatureError {
|
|
@@ -556,8 +550,16 @@ var InvalidContextError = class extends OpenFeatureError {
|
|
|
556
550
|
}
|
|
557
551
|
};
|
|
558
552
|
|
|
559
|
-
// ../shared/src/
|
|
560
|
-
var
|
|
553
|
+
// ../shared/src/events/events.ts
|
|
554
|
+
var ProviderEvents = /* @__PURE__ */ ((ProviderEvents2) => {
|
|
555
|
+
ProviderEvents2["Ready"] = "PROVIDER_READY";
|
|
556
|
+
ProviderEvents2["Error"] = "PROVIDER_ERROR";
|
|
557
|
+
ProviderEvents2["ConfigurationChanged"] = "PROVIDER_CONFIGURATION_CHANGED";
|
|
558
|
+
ProviderEvents2["Stale"] = "PROVIDER_STALE";
|
|
559
|
+
return ProviderEvents2;
|
|
560
|
+
})(ProviderEvents || {});
|
|
561
|
+
|
|
562
|
+
// ../shared/src/logger/default-logger.ts
|
|
561
563
|
var DefaultLogger = class {
|
|
562
564
|
error(...args) {
|
|
563
565
|
console.error(...args);
|
|
@@ -570,6 +572,9 @@ var DefaultLogger = class {
|
|
|
570
572
|
debug() {
|
|
571
573
|
}
|
|
572
574
|
};
|
|
575
|
+
|
|
576
|
+
// ../shared/src/logger/safe-logger.ts
|
|
577
|
+
var LOG_LEVELS = ["error", "warn", "info", "debug"];
|
|
573
578
|
var SafeLogger = class {
|
|
574
579
|
constructor(logger) {
|
|
575
580
|
this.fallbackLogger = new DefaultLogger();
|
|
@@ -607,26 +612,8 @@ var SafeLogger = class {
|
|
|
607
612
|
}
|
|
608
613
|
};
|
|
609
614
|
|
|
610
|
-
// ../shared/src/
|
|
611
|
-
var NoopTransactionContextPropagator = class {
|
|
612
|
-
getTransactionContext() {
|
|
613
|
-
return {};
|
|
614
|
-
}
|
|
615
|
-
setTransactionContext(_, callback) {
|
|
616
|
-
callback();
|
|
617
|
-
}
|
|
618
|
-
};
|
|
619
|
-
var NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator();
|
|
620
|
-
|
|
621
|
-
// ../shared/src/events.ts
|
|
615
|
+
// ../shared/src/events/open-feature-event-emitter.ts
|
|
622
616
|
var import_events = __toESM(require_events());
|
|
623
|
-
var ProviderEvents = /* @__PURE__ */ ((ProviderEvents2) => {
|
|
624
|
-
ProviderEvents2["Ready"] = "PROVIDER_READY";
|
|
625
|
-
ProviderEvents2["Error"] = "PROVIDER_ERROR";
|
|
626
|
-
ProviderEvents2["ConfigurationChanged"] = "PROVIDER_CONFIGURATION_CHANGED";
|
|
627
|
-
ProviderEvents2["Stale"] = "PROVIDER_STALE";
|
|
628
|
-
return ProviderEvents2;
|
|
629
|
-
})(ProviderEvents || {});
|
|
630
617
|
var OpenFeatureEventEmitter = class {
|
|
631
618
|
constructor(globalLogger) {
|
|
632
619
|
this.globalLogger = globalLogger;
|
|
@@ -674,6 +661,25 @@ var OpenFeatureEventEmitter = class {
|
|
|
674
661
|
}
|
|
675
662
|
};
|
|
676
663
|
|
|
664
|
+
// ../shared/src/provider/provider.ts
|
|
665
|
+
var ProviderStatus = /* @__PURE__ */ ((ProviderStatus2) => {
|
|
666
|
+
ProviderStatus2["NOT_READY"] = "NOT_READY";
|
|
667
|
+
ProviderStatus2["READY"] = "READY";
|
|
668
|
+
ProviderStatus2["ERROR"] = "ERROR";
|
|
669
|
+
return ProviderStatus2;
|
|
670
|
+
})(ProviderStatus || {});
|
|
671
|
+
|
|
672
|
+
// ../shared/src/transaction-context/no-op-transaction-context-propagator.ts
|
|
673
|
+
var NoopTransactionContextPropagator = class {
|
|
674
|
+
getTransactionContext() {
|
|
675
|
+
return {};
|
|
676
|
+
}
|
|
677
|
+
setTransactionContext(_, callback) {
|
|
678
|
+
callback();
|
|
679
|
+
}
|
|
680
|
+
};
|
|
681
|
+
var NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator();
|
|
682
|
+
|
|
677
683
|
// ../shared/src/type-guards.ts
|
|
678
684
|
function isString(value) {
|
|
679
685
|
return typeof value === "string";
|
|
@@ -688,9 +694,15 @@ function objectOrUndefined(value) {
|
|
|
688
694
|
return isObject(value) ? value : void 0;
|
|
689
695
|
}
|
|
690
696
|
|
|
697
|
+
// ../shared/src/filter.ts
|
|
698
|
+
function isDefined(input) {
|
|
699
|
+
return typeof input !== "undefined" && input !== null;
|
|
700
|
+
}
|
|
701
|
+
|
|
691
702
|
// ../shared/src/open-feature.ts
|
|
692
703
|
var OpenFeatureCommonAPI = class {
|
|
693
704
|
constructor() {
|
|
705
|
+
this._hooks = [];
|
|
694
706
|
this._transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
|
|
695
707
|
this._context = {};
|
|
696
708
|
this._logger = new DefaultLogger();
|
|
@@ -699,6 +711,17 @@ var OpenFeatureCommonAPI = class {
|
|
|
699
711
|
this._clientProviders = /* @__PURE__ */ new Map();
|
|
700
712
|
this._clientEvents = /* @__PURE__ */ new Map();
|
|
701
713
|
}
|
|
714
|
+
addHooks(...hooks) {
|
|
715
|
+
this._hooks = [...this._hooks, ...hooks];
|
|
716
|
+
return this;
|
|
717
|
+
}
|
|
718
|
+
getHooks() {
|
|
719
|
+
return this._hooks;
|
|
720
|
+
}
|
|
721
|
+
clearHooks() {
|
|
722
|
+
this._hooks = [];
|
|
723
|
+
return this;
|
|
724
|
+
}
|
|
702
725
|
setLogger(logger) {
|
|
703
726
|
this._logger = new SafeLogger(logger);
|
|
704
727
|
return this;
|
|
@@ -710,9 +733,6 @@ var OpenFeatureCommonAPI = class {
|
|
|
710
733
|
get providerMetadata() {
|
|
711
734
|
return this._defaultProvider.metadata;
|
|
712
735
|
}
|
|
713
|
-
getContext() {
|
|
714
|
-
return this._context;
|
|
715
|
-
}
|
|
716
736
|
/**
|
|
717
737
|
* Adds a handler for the given provider event type.
|
|
718
738
|
* The handlers are called in the order they have been added.
|
|
@@ -750,19 +770,25 @@ var OpenFeatureCommonAPI = class {
|
|
|
750
770
|
if (oldProvider === provider) {
|
|
751
771
|
return this;
|
|
752
772
|
}
|
|
753
|
-
const
|
|
773
|
+
const emitters = clientName ? [this.getAndCacheEventEmitterForClient(clientName)] : this.getUnboundEmitters();
|
|
754
774
|
if (typeof provider.initialize === "function") {
|
|
755
775
|
(_d = (_c = (_b = provider.initialize) == null ? void 0 : _b.call(provider, this._context)) == null ? void 0 : _c.then(() => {
|
|
756
776
|
var _a2;
|
|
757
|
-
|
|
777
|
+
emitters.forEach((emitter) => {
|
|
778
|
+
emitter == null ? void 0 : emitter.emit("PROVIDER_READY" /* Ready */, { clientName });
|
|
779
|
+
});
|
|
758
780
|
(_a2 = this._events) == null ? void 0 : _a2.emit("PROVIDER_READY" /* Ready */, { clientName });
|
|
759
781
|
})) == null ? void 0 : _d.catch((error) => {
|
|
760
782
|
var _a2;
|
|
761
|
-
|
|
783
|
+
emitters.forEach((emitter) => {
|
|
784
|
+
emitter == null ? void 0 : emitter.emit("PROVIDER_ERROR" /* Error */, { clientName, message: error.message });
|
|
785
|
+
});
|
|
762
786
|
(_a2 = this._events) == null ? void 0 : _a2.emit("PROVIDER_ERROR" /* Error */, { clientName, message: error.message });
|
|
763
787
|
});
|
|
764
788
|
} else {
|
|
765
|
-
|
|
789
|
+
emitters.forEach((emitter) => {
|
|
790
|
+
emitter == null ? void 0 : emitter.emit("PROVIDER_READY" /* Ready */, { clientName });
|
|
791
|
+
});
|
|
766
792
|
(_e = this._events) == null ? void 0 : _e.emit("PROVIDER_READY" /* Ready */, { clientName });
|
|
767
793
|
}
|
|
768
794
|
if (clientName) {
|
|
@@ -770,7 +796,7 @@ var OpenFeatureCommonAPI = class {
|
|
|
770
796
|
} else {
|
|
771
797
|
this._defaultProvider = provider;
|
|
772
798
|
}
|
|
773
|
-
this.transferListeners(oldProvider, provider, clientName,
|
|
799
|
+
this.transferListeners(oldProvider, provider, clientName, emitters);
|
|
774
800
|
if (![...this._clientProviders.values(), this._defaultProvider].includes(oldProvider)) {
|
|
775
801
|
(_f = oldProvider == null ? void 0 : oldProvider.onClose) == null ? void 0 : _f.call(oldProvider);
|
|
776
802
|
}
|
|
@@ -801,7 +827,18 @@ var OpenFeatureCommonAPI = class {
|
|
|
801
827
|
);
|
|
802
828
|
return newEmitter;
|
|
803
829
|
}
|
|
804
|
-
|
|
830
|
+
getUnboundEmitters() {
|
|
831
|
+
const namedProviders = [...this._clientProviders.keys()];
|
|
832
|
+
const eventEmitterNames = [...this._clientEvents.keys()].filter(isDefined);
|
|
833
|
+
const unboundEmitterNames = eventEmitterNames.filter((name) => !namedProviders.includes(name));
|
|
834
|
+
return [
|
|
835
|
+
// all unbound, named emitters
|
|
836
|
+
...unboundEmitterNames.map((name) => this._clientEvents.get(name)),
|
|
837
|
+
// the default emitter
|
|
838
|
+
this._clientEvents.get(void 0)
|
|
839
|
+
].filter(isDefined);
|
|
840
|
+
}
|
|
841
|
+
transferListeners(oldProvider, newProvider, clientName, emitters) {
|
|
805
842
|
var _a;
|
|
806
843
|
(_a = this._clientEventHandlers.get(clientName)) == null ? void 0 : _a.forEach((eventHandler) => {
|
|
807
844
|
var _a2;
|
|
@@ -810,7 +847,9 @@ var OpenFeatureCommonAPI = class {
|
|
|
810
847
|
const newClientHandlers = Object.values(ProviderEvents).map(
|
|
811
848
|
(eventType) => {
|
|
812
849
|
const handler = (details) => __async(this, null, function* () {
|
|
813
|
-
|
|
850
|
+
emitters.forEach((emitter) => {
|
|
851
|
+
emitter == null ? void 0 : emitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
|
|
852
|
+
});
|
|
814
853
|
this._events.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
|
|
815
854
|
});
|
|
816
855
|
return [eventType, handler];
|
|
@@ -873,7 +912,7 @@ var OpenFeatureCommonAPI = class {
|
|
|
873
912
|
}
|
|
874
913
|
};
|
|
875
914
|
|
|
876
|
-
// src/no-op-provider.ts
|
|
915
|
+
// src/provider/no-op-provider.ts
|
|
877
916
|
var REASON_NO_OP = "No-op";
|
|
878
917
|
var NoopFeatureProvider = class {
|
|
879
918
|
constructor() {
|
|
@@ -912,7 +951,6 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
912
951
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
913
952
|
constructor() {
|
|
914
953
|
super();
|
|
915
|
-
this._hooks = [];
|
|
916
954
|
this._defaultProvider = NOOP_PROVIDER;
|
|
917
955
|
}
|
|
918
956
|
/**
|
|
@@ -929,21 +967,6 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
929
967
|
_globalThis[GLOBAL_OPENFEATURE_API_KEY] = instance;
|
|
930
968
|
return instance;
|
|
931
969
|
}
|
|
932
|
-
setLogger(logger) {
|
|
933
|
-
this._logger = new SafeLogger(logger);
|
|
934
|
-
return this;
|
|
935
|
-
}
|
|
936
|
-
addHooks(...hooks) {
|
|
937
|
-
this._hooks = [...this._hooks, ...hooks];
|
|
938
|
-
return this;
|
|
939
|
-
}
|
|
940
|
-
getHooks() {
|
|
941
|
-
return this._hooks;
|
|
942
|
-
}
|
|
943
|
-
clearHooks() {
|
|
944
|
-
this._hooks = [];
|
|
945
|
-
return this;
|
|
946
|
-
}
|
|
947
970
|
setContext(context) {
|
|
948
971
|
return __async(this, null, function* () {
|
|
949
972
|
var _a, _b;
|
|
@@ -952,6 +975,9 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
952
975
|
yield (_b = (_a = this._defaultProvider) == null ? void 0 : _a.onContextChange) == null ? void 0 : _b.call(_a, oldContext, context);
|
|
953
976
|
});
|
|
954
977
|
}
|
|
978
|
+
getContext() {
|
|
979
|
+
return this._context;
|
|
980
|
+
}
|
|
955
981
|
/**
|
|
956
982
|
* A factory function for creating new named OpenFeature clients. Clients can contain
|
|
957
983
|
* their own state (e.g. logger, hook, context). Multiple clients can be used
|
|
@@ -976,7 +1002,7 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
976
1002
|
};
|
|
977
1003
|
var OpenFeature = OpenFeatureAPI.getInstance();
|
|
978
1004
|
|
|
979
|
-
// src/client.ts
|
|
1005
|
+
// src/client/open-feature-client.ts
|
|
980
1006
|
var OpenFeatureClient = class {
|
|
981
1007
|
constructor(providerAccessor, emitterAccessor, globalLogger, options) {
|
|
982
1008
|
this.providerAccessor = providerAccessor;
|
|
@@ -1162,6 +1188,7 @@ export {
|
|
|
1162
1188
|
FlagNotFoundError,
|
|
1163
1189
|
GeneralError,
|
|
1164
1190
|
InvalidContextError,
|
|
1191
|
+
LOG_LEVELS,
|
|
1165
1192
|
NOOP_PROVIDER,
|
|
1166
1193
|
NOOP_TRANSACTION_CONTEXT_PROPAGATOR,
|
|
1167
1194
|
OpenFeature,
|
|
@@ -1176,6 +1203,10 @@ export {
|
|
|
1176
1203
|
SafeLogger,
|
|
1177
1204
|
StandardResolutionReasons,
|
|
1178
1205
|
TargetingKeyMissingError,
|
|
1179
|
-
TypeMismatchError
|
|
1206
|
+
TypeMismatchError,
|
|
1207
|
+
isObject,
|
|
1208
|
+
isString,
|
|
1209
|
+
objectOrUndefined,
|
|
1210
|
+
stringOrUndefined
|
|
1180
1211
|
};
|
|
1181
1212
|
//# sourceMappingURL=index.js.map
|