@launchdarkly/js-server-sdk-common-edge 2.5.3 → 2.6.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 +28 -0
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/api/EdgeFeatureStore.d.ts +9 -2
- package/dist/cjs/src/api/EdgeFeatureStore.d.ts.map +1 -1
- package/dist/cjs/src/api/EdgeFeatureStore.js +33 -22
- package/dist/cjs/src/api/EdgeFeatureStore.js.map +1 -1
- package/dist/cjs/src/api/cache.d.ts +23 -0
- package/dist/cjs/src/api/cache.d.ts.map +1 -0
- package/dist/cjs/src/api/cache.js +3 -0
- package/dist/cjs/src/api/cache.js.map +1 -0
- package/dist/cjs/src/api/createOptions.d.ts.map +1 -1
- package/dist/cjs/src/api/createOptions.js +1 -6
- package/dist/cjs/src/api/createOptions.js.map +1 -1
- package/dist/cjs/src/api/index.d.ts +2 -1
- package/dist/cjs/src/api/index.d.ts.map +1 -1
- package/dist/cjs/src/api/index.js.map +1 -1
- package/dist/cjs/src/index.d.ts +2 -2
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/src/api/EdgeFeatureStore.d.ts +9 -2
- package/dist/esm/src/api/EdgeFeatureStore.d.ts.map +1 -1
- package/dist/esm/src/api/EdgeFeatureStore.js +33 -22
- package/dist/esm/src/api/EdgeFeatureStore.js.map +1 -1
- package/dist/esm/src/api/cache.d.ts +23 -0
- package/dist/esm/src/api/cache.d.ts.map +1 -0
- package/dist/esm/src/api/cache.js +2 -0
- package/dist/esm/src/api/cache.js.map +1 -0
- package/dist/esm/src/api/createOptions.d.ts.map +1 -1
- package/dist/esm/src/api/createOptions.js +1 -6
- package/dist/esm/src/api/createOptions.js.map +1 -1
- package/dist/esm/src/api/index.d.ts +2 -1
- package/dist/esm/src/api/index.d.ts.map +1 -1
- package/dist/esm/src/api/index.js.map +1 -1
- package/dist/esm/src/index.d.ts +2 -2
- package/dist/esm/src/index.d.ts.map +1 -1
- package/dist/esm/src/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -96,6 +96,34 @@
|
|
|
96
96
|
* dependencies
|
|
97
97
|
* @launchdarkly/js-server-sdk-common bumped from 2.2.1 to 2.2.2
|
|
98
98
|
|
|
99
|
+
## [2.6.0](https://github.com/launchdarkly/js-core/compare/js-server-sdk-common-edge-v2.5.4...js-server-sdk-common-edge-v2.6.0) (2025-03-17)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
### Features
|
|
103
|
+
|
|
104
|
+
* Add TTL caching for data store ([#801](https://github.com/launchdarkly/js-core/issues/801)) ([c1de485](https://github.com/launchdarkly/js-core/commit/c1de4850c81dff8ad52276c2bfc2a2aeb87bd2d9))
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
### Bug Fixes
|
|
108
|
+
|
|
109
|
+
* Remove logging of SDK option configurations ([#806](https://github.com/launchdarkly/js-core/issues/806)) ([a76d196](https://github.com/launchdarkly/js-core/commit/a76d19690a7ef5932c36bfc974affc0a192c2d4f))
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
### Dependencies
|
|
113
|
+
|
|
114
|
+
* The following workspace dependencies were updated
|
|
115
|
+
* dependencies
|
|
116
|
+
* @launchdarkly/js-server-sdk-common bumped from 2.11.1 to 2.12.0
|
|
117
|
+
|
|
118
|
+
## [2.5.4](https://github.com/launchdarkly/js-core/compare/js-server-sdk-common-edge-v2.5.3...js-server-sdk-common-edge-v2.5.4) (2025-02-18)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
### Dependencies
|
|
122
|
+
|
|
123
|
+
* The following workspace dependencies were updated
|
|
124
|
+
* dependencies
|
|
125
|
+
* @launchdarkly/js-server-sdk-common bumped from 2.11.0 to 2.11.1
|
|
126
|
+
|
|
99
127
|
## [2.5.3](https://github.com/launchdarkly/js-core/compare/js-server-sdk-common-edge-v2.5.2...js-server-sdk-common-edge-v2.5.3) (2025-01-22)
|
|
100
128
|
|
|
101
129
|
|
package/dist/cjs/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DataKind, LDFeatureStore, LDFeatureStoreDataStorage, LDFeatureStoreItem, LDFeatureStoreKindData, LDLogger } from '@launchdarkly/js-server-sdk-common';
|
|
2
|
+
import Cache from './cache';
|
|
2
3
|
export interface EdgeProvider {
|
|
3
4
|
get: (rootKey: string) => Promise<string | null | undefined>;
|
|
4
5
|
}
|
|
@@ -6,14 +7,20 @@ export declare class EdgeFeatureStore implements LDFeatureStore {
|
|
|
6
7
|
private readonly _edgeProvider;
|
|
7
8
|
private readonly _description;
|
|
8
9
|
private _logger;
|
|
10
|
+
private _cache?;
|
|
9
11
|
private readonly _rootKey;
|
|
10
|
-
constructor(_edgeProvider: EdgeProvider, sdkKey: string, _description: string, _logger: LDLogger);
|
|
12
|
+
constructor(_edgeProvider: EdgeProvider, sdkKey: string, _description: string, _logger: LDLogger, _cache?: Cache | undefined);
|
|
11
13
|
get(kind: DataKind, dataKey: string, callback: (res: LDFeatureStoreItem | null) => void): Promise<void>;
|
|
12
14
|
all(kind: DataKind, callback?: (res: LDFeatureStoreKindData) => void): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* This method is used to retrieve the environment payload from the edge
|
|
17
|
+
* provider. If a cache is provided, it will serve from that.
|
|
18
|
+
*/
|
|
19
|
+
private _getStorePayload;
|
|
13
20
|
initialized(callback?: (isInitialized: boolean) => void): Promise<void>;
|
|
14
21
|
init(allData: LDFeatureStoreDataStorage, callback: () => void): void;
|
|
15
22
|
getDescription(): string;
|
|
16
|
-
close
|
|
23
|
+
close(): void;
|
|
17
24
|
delete: () => void;
|
|
18
25
|
upsert: () => void;
|
|
19
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgeFeatureStore.d.ts","sourceRoot":"","sources":["../../../../src/api/EdgeFeatureStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAG5C,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAC9D;AAED,qBAAa,gBAAiB,YAAW,cAAc;IAInD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"EdgeFeatureStore.d.ts","sourceRoot":"","sources":["../../../../src/api/EdgeFeatureStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAC9D;AAED,qBAAa,gBAAiB,YAAW,cAAc;IAInD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM,CAAC;IAPjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGf,aAAa,EAAE,YAAY,EAC5C,MAAM,EAAE,MAAM,EACG,YAAY,EAAE,MAAM,EAC7B,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,mBAAO;IAKlB,GAAG,CACP,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,GACjD,OAAO,CAAC,IAAI,CAAC;IAwBV,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhG;;;OAGG;YACW,gBAAgB;IAwBxB,WAAW,CAAC,QAAQ,GAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnF,IAAI,CAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIpE,cAAc,IAAI,MAAM;IAIxB,KAAK,IAAI,IAAI;IAMb,MAAM,aAAQ;IAEd,MAAM,aAAQ;CACf"}
|
|
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EdgeFeatureStore = void 0;
|
|
4
4
|
const js_server_sdk_common_1 = require("@launchdarkly/js-server-sdk-common");
|
|
5
5
|
class EdgeFeatureStore {
|
|
6
|
-
constructor(_edgeProvider, sdkKey, _description, _logger) {
|
|
6
|
+
constructor(_edgeProvider, sdkKey, _description, _logger, _cache) {
|
|
7
7
|
this._edgeProvider = _edgeProvider;
|
|
8
8
|
this._description = _description;
|
|
9
9
|
this._logger = _logger;
|
|
10
|
+
this._cache = _cache;
|
|
10
11
|
// unused
|
|
11
|
-
this.close = js_server_sdk_common_1.noop;
|
|
12
12
|
this.delete = js_server_sdk_common_1.noop;
|
|
13
13
|
this.upsert = js_server_sdk_common_1.noop;
|
|
14
14
|
this._rootKey = `LD-Env-${sdkKey}`;
|
|
@@ -18,20 +18,13 @@ class EdgeFeatureStore {
|
|
|
18
18
|
const kindKey = namespace === 'features' ? 'flags' : namespace;
|
|
19
19
|
this._logger.debug(`Requesting ${dataKey} from ${this._rootKey}.${kindKey}`);
|
|
20
20
|
try {
|
|
21
|
-
const
|
|
22
|
-
if (!i) {
|
|
23
|
-
throw new Error(`${this._rootKey}.${kindKey} is not found in KV.`);
|
|
24
|
-
}
|
|
25
|
-
const item = (0, js_server_sdk_common_1.deserializePoll)(i);
|
|
26
|
-
if (!item) {
|
|
27
|
-
throw new Error(`Error deserializing ${kindKey}`);
|
|
28
|
-
}
|
|
21
|
+
const storePayload = await this._getStorePayload();
|
|
29
22
|
switch (namespace) {
|
|
30
23
|
case 'features':
|
|
31
|
-
callback(
|
|
24
|
+
callback(storePayload.flags[dataKey]);
|
|
32
25
|
break;
|
|
33
26
|
case 'segments':
|
|
34
|
-
callback(
|
|
27
|
+
callback(storePayload.segments[dataKey]);
|
|
35
28
|
break;
|
|
36
29
|
default:
|
|
37
30
|
callback(null);
|
|
@@ -47,20 +40,13 @@ class EdgeFeatureStore {
|
|
|
47
40
|
const kindKey = namespace === 'features' ? 'flags' : namespace;
|
|
48
41
|
this._logger.debug(`Requesting all from ${this._rootKey}.${kindKey}`);
|
|
49
42
|
try {
|
|
50
|
-
const
|
|
51
|
-
if (!i) {
|
|
52
|
-
throw new Error(`${this._rootKey}.${kindKey} is not found in KV.`);
|
|
53
|
-
}
|
|
54
|
-
const item = (0, js_server_sdk_common_1.deserializePoll)(i);
|
|
55
|
-
if (!item) {
|
|
56
|
-
throw new Error(`Error deserializing ${kindKey}`);
|
|
57
|
-
}
|
|
43
|
+
const storePayload = await this._getStorePayload();
|
|
58
44
|
switch (namespace) {
|
|
59
45
|
case 'features':
|
|
60
|
-
callback(
|
|
46
|
+
callback(storePayload.flags);
|
|
61
47
|
break;
|
|
62
48
|
case 'segments':
|
|
63
|
-
callback(
|
|
49
|
+
callback(storePayload.segments);
|
|
64
50
|
break;
|
|
65
51
|
default:
|
|
66
52
|
callback({});
|
|
@@ -71,6 +57,27 @@ class EdgeFeatureStore {
|
|
|
71
57
|
callback({});
|
|
72
58
|
}
|
|
73
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* This method is used to retrieve the environment payload from the edge
|
|
62
|
+
* provider. If a cache is provided, it will serve from that.
|
|
63
|
+
*/
|
|
64
|
+
async _getStorePayload() {
|
|
65
|
+
var _a, _b;
|
|
66
|
+
let payload = (_a = this._cache) === null || _a === void 0 ? void 0 : _a.get(this._rootKey);
|
|
67
|
+
if (payload !== undefined) {
|
|
68
|
+
return payload;
|
|
69
|
+
}
|
|
70
|
+
const providerData = await this._edgeProvider.get(this._rootKey);
|
|
71
|
+
if (!providerData) {
|
|
72
|
+
throw new Error(`${this._rootKey} is not found in KV.`);
|
|
73
|
+
}
|
|
74
|
+
payload = (0, js_server_sdk_common_1.deserializePoll)(providerData);
|
|
75
|
+
if (!payload) {
|
|
76
|
+
throw new Error(`Error deserializing ${this._rootKey}`);
|
|
77
|
+
}
|
|
78
|
+
(_b = this._cache) === null || _b === void 0 ? void 0 : _b.set(this._rootKey, payload);
|
|
79
|
+
return payload;
|
|
80
|
+
}
|
|
74
81
|
async initialized(callback = js_server_sdk_common_1.noop) {
|
|
75
82
|
const config = await this._edgeProvider.get(this._rootKey);
|
|
76
83
|
const result = config !== null;
|
|
@@ -83,6 +90,10 @@ class EdgeFeatureStore {
|
|
|
83
90
|
getDescription() {
|
|
84
91
|
return this._description;
|
|
85
92
|
}
|
|
93
|
+
close() {
|
|
94
|
+
var _a;
|
|
95
|
+
return (_a = this._cache) === null || _a === void 0 ? void 0 : _a.close();
|
|
96
|
+
}
|
|
86
97
|
}
|
|
87
98
|
exports.EdgeFeatureStore = EdgeFeatureStore;
|
|
88
99
|
//# sourceMappingURL=EdgeFeatureStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgeFeatureStore.js","sourceRoot":"","sources":["../../../../src/api/EdgeFeatureStore.ts"],"names":[],"mappings":";;;AAQA,6EAA2E;
|
|
1
|
+
{"version":3,"file":"EdgeFeatureStore.js","sourceRoot":"","sources":["../../../../src/api/EdgeFeatureStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* General-purpose cache interface.
|
|
3
|
+
*
|
|
4
|
+
* This is used by the SDK to cache feature flags and other data. The SDK does
|
|
5
|
+
* not assume any particular implementation of the cache, so you can provide
|
|
6
|
+
* your own.
|
|
7
|
+
*/
|
|
8
|
+
export default interface Cache {
|
|
9
|
+
/**
|
|
10
|
+
* Get a value from the cache. Returning `undefined` means the key was not found.
|
|
11
|
+
*/
|
|
12
|
+
get(key: string): any;
|
|
13
|
+
/**
|
|
14
|
+
* Set a value in the cache.
|
|
15
|
+
*/
|
|
16
|
+
set(key: string, value: any): void;
|
|
17
|
+
/**
|
|
18
|
+
* The close method offers a way to clean up any resources used by the cache
|
|
19
|
+
* on shutdown.
|
|
20
|
+
*/
|
|
21
|
+
close(): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/api/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,WAAW,KAAK;IAC5B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAEtB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAEnC;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/api/cache.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOptions.d.ts","sourceRoot":"","sources":["../../../../src/api/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE5E,eAAO,MAAM,cAAc,EAAE,SAM5B,CAAC;AAEF,QAAA,MAAM,aAAa,YAAa,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createOptions.d.ts","sourceRoot":"","sources":["../../../../src/api/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE5E,eAAO,MAAM,cAAc,EAAE,SAM5B,CAAC;AAEF,QAAA,MAAM,aAAa,YAAa,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAwC,CAAC;AAElF,eAAe,aAAa,CAAC"}
|
|
@@ -9,11 +9,6 @@ exports.defaultOptions = {
|
|
|
9
9
|
diagnosticOptOut: true,
|
|
10
10
|
logger: js_server_sdk_common_1.BasicLogger.get(),
|
|
11
11
|
};
|
|
12
|
-
const createOptions = (options) => {
|
|
13
|
-
var _a;
|
|
14
|
-
const finalOptions = Object.assign(Object.assign({}, exports.defaultOptions), options);
|
|
15
|
-
(_a = finalOptions.logger) === null || _a === void 0 ? void 0 : _a.debug(`Using LD options: ${JSON.stringify(finalOptions)}`);
|
|
16
|
-
return finalOptions;
|
|
17
|
-
};
|
|
12
|
+
const createOptions = (options) => (Object.assign(Object.assign({}, exports.defaultOptions), options));
|
|
18
13
|
exports.default = createOptions;
|
|
19
14
|
//# sourceMappingURL=createOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOptions.js","sourceRoot":"","sources":["../../../../src/api/createOptions.ts"],"names":[],"mappings":";;;AAAA,6EAA4E;AAE/D,QAAA,cAAc,GAAc;IACvC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,kCAAW,CAAC,GAAG,EAAE;CAC1B,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAkB,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"createOptions.js","sourceRoot":"","sources":["../../../../src/api/createOptions.ts"],"names":[],"mappings":";;;AAAA,6EAA4E;AAE/D,QAAA,cAAc,GAAc;IACvC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,kCAAW,CAAC,GAAG,EAAE;CAC1B,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAkB,EAAE,EAAE,CAAC,iCAAM,sBAAc,GAAK,OAAO,EAAG,CAAC;AAElF,kBAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,yCAAkC;AAGzB,mBAHF,kBAAQ,CAGE;AADjB,qDAAmC"}
|
package/dist/cjs/src/index.d.ts
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
import type { Info } from '@launchdarkly/js-server-sdk-common';
|
|
9
|
-
import { EdgeFeatureStore, EdgeProvider, LDClient } from './api';
|
|
9
|
+
import { Cache, EdgeFeatureStore, EdgeProvider, LDClient } from './api';
|
|
10
10
|
import { LDOptions, LDOptionsInternal } from './utils/validateOptions';
|
|
11
11
|
export * from '@launchdarkly/js-server-sdk-common';
|
|
12
12
|
export { EdgeFeatureStore };
|
|
13
|
-
export type { LDClient, LDOptions, EdgeProvider };
|
|
13
|
+
export type { LDClient, LDOptions, EdgeProvider, Cache };
|
|
14
14
|
/**
|
|
15
15
|
* Do not use this function directly.
|
|
16
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAwB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAExF,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,IAAI,iBAAkB,MAAM,gBAAgB,IAAI,WAAW,iBAAiB,aAKxF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AASA,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AASA,+BAAwE;AAI/D,iGAJO,sBAAgB,OAIP;AAHzB,6DAAwF;AAExF,qEAAmD;AAInD;;;;GAIG;AACI,MAAM,IAAI,GAAG,CAAC,YAAoB,EAAE,YAAkB,EAAE,OAA0B,EAAE,EAAE;IAC3F,qCAAqC;IACrC,IAAA,yBAAe,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvC,OAAO,IAAI,cAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC,CAAC;AALW,QAAA,IAAI,QAKf"}
|
package/dist/esm/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DataKind, LDFeatureStore, LDFeatureStoreDataStorage, LDFeatureStoreItem, LDFeatureStoreKindData, LDLogger } from '@launchdarkly/js-server-sdk-common';
|
|
2
|
+
import Cache from './cache';
|
|
2
3
|
export interface EdgeProvider {
|
|
3
4
|
get: (rootKey: string) => Promise<string | null | undefined>;
|
|
4
5
|
}
|
|
@@ -6,14 +7,20 @@ export declare class EdgeFeatureStore implements LDFeatureStore {
|
|
|
6
7
|
private readonly _edgeProvider;
|
|
7
8
|
private readonly _description;
|
|
8
9
|
private _logger;
|
|
10
|
+
private _cache?;
|
|
9
11
|
private readonly _rootKey;
|
|
10
|
-
constructor(_edgeProvider: EdgeProvider, sdkKey: string, _description: string, _logger: LDLogger);
|
|
12
|
+
constructor(_edgeProvider: EdgeProvider, sdkKey: string, _description: string, _logger: LDLogger, _cache?: Cache | undefined);
|
|
11
13
|
get(kind: DataKind, dataKey: string, callback: (res: LDFeatureStoreItem | null) => void): Promise<void>;
|
|
12
14
|
all(kind: DataKind, callback?: (res: LDFeatureStoreKindData) => void): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* This method is used to retrieve the environment payload from the edge
|
|
17
|
+
* provider. If a cache is provided, it will serve from that.
|
|
18
|
+
*/
|
|
19
|
+
private _getStorePayload;
|
|
13
20
|
initialized(callback?: (isInitialized: boolean) => void): Promise<void>;
|
|
14
21
|
init(allData: LDFeatureStoreDataStorage, callback: () => void): void;
|
|
15
22
|
getDescription(): string;
|
|
16
|
-
close
|
|
23
|
+
close(): void;
|
|
17
24
|
delete: () => void;
|
|
18
25
|
upsert: () => void;
|
|
19
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgeFeatureStore.d.ts","sourceRoot":"","sources":["../../../../src/api/EdgeFeatureStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAG5C,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAC9D;AAED,qBAAa,gBAAiB,YAAW,cAAc;IAInD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"EdgeFeatureStore.d.ts","sourceRoot":"","sources":["../../../../src/api/EdgeFeatureStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAC9D;AAED,qBAAa,gBAAiB,YAAW,cAAc;IAInD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM,CAAC;IAPjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGf,aAAa,EAAE,YAAY,EAC5C,MAAM,EAAE,MAAM,EACG,YAAY,EAAE,MAAM,EAC7B,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,mBAAO;IAKlB,GAAG,CACP,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,GACjD,OAAO,CAAC,IAAI,CAAC;IAwBV,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhG;;;OAGG;YACW,gBAAgB;IAwBxB,WAAW,CAAC,QAAQ,GAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnF,IAAI,CAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIpE,cAAc,IAAI,MAAM;IAIxB,KAAK,IAAI,IAAI;IAMb,MAAM,aAAQ;IAEd,MAAM,aAAQ;CACf"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { deserializePoll, noop } from '@launchdarkly/js-server-sdk-common';
|
|
2
2
|
export class EdgeFeatureStore {
|
|
3
|
-
constructor(_edgeProvider, sdkKey, _description, _logger) {
|
|
3
|
+
constructor(_edgeProvider, sdkKey, _description, _logger, _cache) {
|
|
4
4
|
this._edgeProvider = _edgeProvider;
|
|
5
5
|
this._description = _description;
|
|
6
6
|
this._logger = _logger;
|
|
7
|
+
this._cache = _cache;
|
|
7
8
|
// unused
|
|
8
|
-
this.close = noop;
|
|
9
9
|
this.delete = noop;
|
|
10
10
|
this.upsert = noop;
|
|
11
11
|
this._rootKey = `LD-Env-${sdkKey}`;
|
|
@@ -15,20 +15,13 @@ export class EdgeFeatureStore {
|
|
|
15
15
|
const kindKey = namespace === 'features' ? 'flags' : namespace;
|
|
16
16
|
this._logger.debug(`Requesting ${dataKey} from ${this._rootKey}.${kindKey}`);
|
|
17
17
|
try {
|
|
18
|
-
const
|
|
19
|
-
if (!i) {
|
|
20
|
-
throw new Error(`${this._rootKey}.${kindKey} is not found in KV.`);
|
|
21
|
-
}
|
|
22
|
-
const item = deserializePoll(i);
|
|
23
|
-
if (!item) {
|
|
24
|
-
throw new Error(`Error deserializing ${kindKey}`);
|
|
25
|
-
}
|
|
18
|
+
const storePayload = await this._getStorePayload();
|
|
26
19
|
switch (namespace) {
|
|
27
20
|
case 'features':
|
|
28
|
-
callback(
|
|
21
|
+
callback(storePayload.flags[dataKey]);
|
|
29
22
|
break;
|
|
30
23
|
case 'segments':
|
|
31
|
-
callback(
|
|
24
|
+
callback(storePayload.segments[dataKey]);
|
|
32
25
|
break;
|
|
33
26
|
default:
|
|
34
27
|
callback(null);
|
|
@@ -44,20 +37,13 @@ export class EdgeFeatureStore {
|
|
|
44
37
|
const kindKey = namespace === 'features' ? 'flags' : namespace;
|
|
45
38
|
this._logger.debug(`Requesting all from ${this._rootKey}.${kindKey}`);
|
|
46
39
|
try {
|
|
47
|
-
const
|
|
48
|
-
if (!i) {
|
|
49
|
-
throw new Error(`${this._rootKey}.${kindKey} is not found in KV.`);
|
|
50
|
-
}
|
|
51
|
-
const item = deserializePoll(i);
|
|
52
|
-
if (!item) {
|
|
53
|
-
throw new Error(`Error deserializing ${kindKey}`);
|
|
54
|
-
}
|
|
40
|
+
const storePayload = await this._getStorePayload();
|
|
55
41
|
switch (namespace) {
|
|
56
42
|
case 'features':
|
|
57
|
-
callback(
|
|
43
|
+
callback(storePayload.flags);
|
|
58
44
|
break;
|
|
59
45
|
case 'segments':
|
|
60
|
-
callback(
|
|
46
|
+
callback(storePayload.segments);
|
|
61
47
|
break;
|
|
62
48
|
default:
|
|
63
49
|
callback({});
|
|
@@ -68,6 +54,27 @@ export class EdgeFeatureStore {
|
|
|
68
54
|
callback({});
|
|
69
55
|
}
|
|
70
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* This method is used to retrieve the environment payload from the edge
|
|
59
|
+
* provider. If a cache is provided, it will serve from that.
|
|
60
|
+
*/
|
|
61
|
+
async _getStorePayload() {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
let payload = (_a = this._cache) === null || _a === void 0 ? void 0 : _a.get(this._rootKey);
|
|
64
|
+
if (payload !== undefined) {
|
|
65
|
+
return payload;
|
|
66
|
+
}
|
|
67
|
+
const providerData = await this._edgeProvider.get(this._rootKey);
|
|
68
|
+
if (!providerData) {
|
|
69
|
+
throw new Error(`${this._rootKey} is not found in KV.`);
|
|
70
|
+
}
|
|
71
|
+
payload = deserializePoll(providerData);
|
|
72
|
+
if (!payload) {
|
|
73
|
+
throw new Error(`Error deserializing ${this._rootKey}`);
|
|
74
|
+
}
|
|
75
|
+
(_b = this._cache) === null || _b === void 0 ? void 0 : _b.set(this._rootKey, payload);
|
|
76
|
+
return payload;
|
|
77
|
+
}
|
|
71
78
|
async initialized(callback = noop) {
|
|
72
79
|
const config = await this._edgeProvider.get(this._rootKey);
|
|
73
80
|
const result = config !== null;
|
|
@@ -80,5 +87,9 @@ export class EdgeFeatureStore {
|
|
|
80
87
|
getDescription() {
|
|
81
88
|
return this._description;
|
|
82
89
|
}
|
|
90
|
+
close() {
|
|
91
|
+
var _a;
|
|
92
|
+
return (_a = this._cache) === null || _a === void 0 ? void 0 : _a.close();
|
|
93
|
+
}
|
|
83
94
|
}
|
|
84
95
|
//# sourceMappingURL=EdgeFeatureStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgeFeatureStore.js","sourceRoot":"","sources":["../../../../src/api/EdgeFeatureStore.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"EdgeFeatureStore.js","sourceRoot":"","sources":["../../../../src/api/EdgeFeatureStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* General-purpose cache interface.
|
|
3
|
+
*
|
|
4
|
+
* This is used by the SDK to cache feature flags and other data. The SDK does
|
|
5
|
+
* not assume any particular implementation of the cache, so you can provide
|
|
6
|
+
* your own.
|
|
7
|
+
*/
|
|
8
|
+
export default interface Cache {
|
|
9
|
+
/**
|
|
10
|
+
* Get a value from the cache. Returning `undefined` means the key was not found.
|
|
11
|
+
*/
|
|
12
|
+
get(key: string): any;
|
|
13
|
+
/**
|
|
14
|
+
* Set a value in the cache.
|
|
15
|
+
*/
|
|
16
|
+
set(key: string, value: any): void;
|
|
17
|
+
/**
|
|
18
|
+
* The close method offers a way to clean up any resources used by the cache
|
|
19
|
+
* on shutdown.
|
|
20
|
+
*/
|
|
21
|
+
close(): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/api/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,WAAW,KAAK;IAC5B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAEtB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAEnC;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/api/cache.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOptions.d.ts","sourceRoot":"","sources":["../../../../src/api/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE5E,eAAO,MAAM,cAAc,EAAE,SAM5B,CAAC;AAEF,QAAA,MAAM,aAAa,YAAa,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createOptions.d.ts","sourceRoot":"","sources":["../../../../src/api/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE5E,eAAO,MAAM,cAAc,EAAE,SAM5B,CAAC;AAEF,QAAA,MAAM,aAAa,YAAa,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAwC,CAAC;AAElF,eAAe,aAAa,CAAC"}
|
|
@@ -6,11 +6,6 @@ export const defaultOptions = {
|
|
|
6
6
|
diagnosticOptOut: true,
|
|
7
7
|
logger: BasicLogger.get(),
|
|
8
8
|
};
|
|
9
|
-
const createOptions = (options) => {
|
|
10
|
-
var _a;
|
|
11
|
-
const finalOptions = Object.assign(Object.assign({}, defaultOptions), options);
|
|
12
|
-
(_a = finalOptions.logger) === null || _a === void 0 ? void 0 : _a.debug(`Using LD options: ${JSON.stringify(finalOptions)}`);
|
|
13
|
-
return finalOptions;
|
|
14
|
-
};
|
|
9
|
+
const createOptions = (options) => (Object.assign(Object.assign({}, defaultOptions), options));
|
|
15
10
|
export default createOptions;
|
|
16
11
|
//# sourceMappingURL=createOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOptions.js","sourceRoot":"","sources":["../../../../src/api/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAa,MAAM,oCAAoC,CAAC;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE;CAC1B,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAkB,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"createOptions.js","sourceRoot":"","sources":["../../../../src/api/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAa,MAAM,oCAAoC,CAAC;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE;CAC1B,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAkB,EAAE,EAAE,CAAC,iCAAM,cAAc,GAAK,OAAO,EAAG,CAAC;AAElF,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAS,CAAC"}
|
package/dist/esm/src/index.d.ts
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
import type { Info } from '@launchdarkly/js-server-sdk-common';
|
|
9
|
-
import { EdgeFeatureStore, EdgeProvider, LDClient } from './api';
|
|
9
|
+
import { Cache, EdgeFeatureStore, EdgeProvider, LDClient } from './api';
|
|
10
10
|
import { LDOptions, LDOptionsInternal } from './utils/validateOptions';
|
|
11
11
|
export * from '@launchdarkly/js-server-sdk-common';
|
|
12
12
|
export { EdgeFeatureStore };
|
|
13
|
-
export type { LDClient, LDOptions, EdgeProvider };
|
|
13
|
+
export type { LDClient, LDOptions, EdgeProvider, Cache };
|
|
14
14
|
/**
|
|
15
15
|
* Do not use this function directly.
|
|
16
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAwB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAExF,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,IAAI,iBAAkB,MAAM,gBAAgB,IAAI,WAAW,iBAAiB,aAKxF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAS,gBAAgB,EAAgB,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,eAAiD,MAAM,yBAAyB,CAAC;AAExF,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAG5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,YAAoB,EAAE,YAAkB,EAAE,OAA0B,EAAE,EAAE;IAC3F,qCAAqC;IACrC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvC,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@launchdarkly/js-server-sdk-common-edge",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"homepage": "https://github.com/launchdarkly/js-core/tree/main/packages/shared/sdk-server-edge",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"check": "yarn prettier && yarn lint && yarn build && yarn test && yarn doc"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@launchdarkly/js-server-sdk-common": "2.
|
|
39
|
+
"@launchdarkly/js-server-sdk-common": "2.12.0",
|
|
40
40
|
"crypto-js": "^4.1.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|