@reflag/node-sdk 1.2.0 → 1.4.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/README.md +264 -40
- package/dist/package.json +4 -1
- package/dist/src/client.js +170 -37
- package/dist/src/client.js.map +1 -1
- package/dist/src/flagsFallbackProvider.js +307 -0
- package/dist/src/flagsFallbackProvider.js.map +1 -0
- package/dist/src/index.js +9 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/periodicallyUpdatingCache.js +1 -11
- package/dist/src/periodicallyUpdatingCache.js.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils.js +11 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/types/src/client.d.ts +45 -9
- package/dist/types/src/client.d.ts.map +1 -1
- package/dist/types/src/flagsFallbackProvider.d.ts +81 -0
- package/dist/types/src/flagsFallbackProvider.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +10 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/periodicallyUpdatingCache.d.ts +1 -3
- package/dist/types/src/periodicallyUpdatingCache.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +51 -7
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/utils.d.ts +7 -0
- package/dist/types/src/utils.d.ts.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.isFlagsFallbackSnapshot = isFlagsFallbackSnapshot;
|
|
49
|
+
exports.createStaticFallbackProvider = createStaticFallbackProvider;
|
|
50
|
+
exports.createFileFallbackProvider = createFileFallbackProvider;
|
|
51
|
+
exports.createS3FallbackProvider = createS3FallbackProvider;
|
|
52
|
+
exports.createGCSFallbackProvider = createGCSFallbackProvider;
|
|
53
|
+
exports.createRedisFallbackProvider = createRedisFallbackProvider;
|
|
54
|
+
const fs_1 = require("fs");
|
|
55
|
+
const path_1 = __importDefault(require("path"));
|
|
56
|
+
const utils_1 = require("./utils");
|
|
57
|
+
function defaultSnapshotName(secretKeyHash) {
|
|
58
|
+
return `flags-fallback-${secretKeyHash.slice(0, 16)}.json`;
|
|
59
|
+
}
|
|
60
|
+
function snapshotFilePath(context, directory = path_1.default.join(process.cwd(), ".reflag")) {
|
|
61
|
+
return path_1.default.join(directory, defaultSnapshotName(context.secretKeyHash));
|
|
62
|
+
}
|
|
63
|
+
function trimTrailingCharacter(value, character) {
|
|
64
|
+
let endIndex = value.length;
|
|
65
|
+
while (endIndex > 0 && value[endIndex - 1] === character) {
|
|
66
|
+
endIndex -= 1;
|
|
67
|
+
}
|
|
68
|
+
return value.slice(0, endIndex);
|
|
69
|
+
}
|
|
70
|
+
function snapshotObjectKey(context, keyPrefix = "reflag/flags-fallback") {
|
|
71
|
+
return `${trimTrailingCharacter(keyPrefix, "/")}/${defaultSnapshotName(context.secretKeyHash)}`;
|
|
72
|
+
}
|
|
73
|
+
function snapshotRedisKey(context, keyPrefix = "reflag:flags-fallback") {
|
|
74
|
+
return `${trimTrailingCharacter(keyPrefix, ":")}:${context.secretKeyHash.slice(0, 16)}`;
|
|
75
|
+
}
|
|
76
|
+
function isFlagsFallbackSnapshot(value) {
|
|
77
|
+
return ((0, utils_1.isObject)(value) &&
|
|
78
|
+
value.version === 1 &&
|
|
79
|
+
typeof value.savedAt === "string" &&
|
|
80
|
+
Array.isArray(value.flags) &&
|
|
81
|
+
value.flags.every(isFlagApiResponse));
|
|
82
|
+
}
|
|
83
|
+
function isFlagApiResponse(value) {
|
|
84
|
+
return ((0, utils_1.isObject)(value) &&
|
|
85
|
+
typeof value.key === "string" &&
|
|
86
|
+
typeof value.description !== "undefined" &&
|
|
87
|
+
(0, utils_1.isObject)(value.targeting) &&
|
|
88
|
+
typeof value.targeting.version === "number" &&
|
|
89
|
+
Array.isArray(value.targeting.rules) &&
|
|
90
|
+
(value.config === undefined ||
|
|
91
|
+
((0, utils_1.isObject)(value.config) &&
|
|
92
|
+
typeof value.config.version === "number" &&
|
|
93
|
+
Array.isArray(value.config.variants))));
|
|
94
|
+
}
|
|
95
|
+
function readBodyAsString(body) {
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
if (typeof body === "string")
|
|
98
|
+
return body;
|
|
99
|
+
if (body instanceof Uint8Array)
|
|
100
|
+
return Buffer.from(body).toString("utf-8");
|
|
101
|
+
if (body && typeof body === "object") {
|
|
102
|
+
if ("transformToString" in body &&
|
|
103
|
+
typeof body.transformToString === "function") {
|
|
104
|
+
return yield body.transformToString();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return undefined;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function parseSnapshot(raw) {
|
|
111
|
+
const parsed = JSON.parse(raw);
|
|
112
|
+
return isFlagsFallbackSnapshot(parsed) ? parsed : undefined;
|
|
113
|
+
}
|
|
114
|
+
function staticFlagApiResponse(key, isEnabled) {
|
|
115
|
+
return {
|
|
116
|
+
key,
|
|
117
|
+
description: null,
|
|
118
|
+
targeting: {
|
|
119
|
+
version: 1,
|
|
120
|
+
rules: [
|
|
121
|
+
{
|
|
122
|
+
filter: {
|
|
123
|
+
type: "constant",
|
|
124
|
+
value: isEnabled,
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function createDefaultS3Client() {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
const { S3Client } = yield Promise.resolve().then(() => __importStar(require("@aws-sdk/client-s3")));
|
|
134
|
+
return new S3Client({});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function createDefaultGCSClient() {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const { Storage } = yield Promise.resolve().then(() => __importStar(require("@google-cloud/storage")));
|
|
140
|
+
return new Storage();
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function createStaticFallbackProvider({ flags, }) {
|
|
144
|
+
return {
|
|
145
|
+
load() {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
return {
|
|
148
|
+
version: 1,
|
|
149
|
+
savedAt: new Date().toISOString(),
|
|
150
|
+
flags: Object.entries(flags).map(([key, isEnabled]) => staticFlagApiResponse(key, isEnabled)),
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
save() {
|
|
155
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
+
// no-op
|
|
157
|
+
});
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function createFileFallbackProvider({ directory, } = {}) {
|
|
162
|
+
return {
|
|
163
|
+
load(context) {
|
|
164
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
165
|
+
const resolvedPath = snapshotFilePath(context, directory);
|
|
166
|
+
try {
|
|
167
|
+
const fileContents = yield fs_1.promises.readFile(resolvedPath, "utf-8");
|
|
168
|
+
return parseSnapshot(fileContents);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
if ((error === null || error === void 0 ? void 0 : error.code) === "ENOENT") {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
},
|
|
178
|
+
save(context, snapshot) {
|
|
179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
const resolvedPath = snapshotFilePath(context, directory);
|
|
181
|
+
yield fs_1.promises.mkdir(path_1.default.dirname(resolvedPath), { recursive: true });
|
|
182
|
+
const tempPath = `${resolvedPath}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
183
|
+
yield fs_1.promises.writeFile(tempPath, JSON.stringify(snapshot), "utf-8");
|
|
184
|
+
yield fs_1.promises.rename(tempPath, resolvedPath);
|
|
185
|
+
});
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function createS3FallbackProvider({ bucket, client, keyPrefix, }) {
|
|
190
|
+
let defaultClient;
|
|
191
|
+
const getClient = () => __awaiter(this, void 0, void 0, function* () {
|
|
192
|
+
defaultClient !== null && defaultClient !== void 0 ? defaultClient : (defaultClient = client !== null && client !== void 0 ? client : (yield createDefaultS3Client()));
|
|
193
|
+
return defaultClient;
|
|
194
|
+
});
|
|
195
|
+
return {
|
|
196
|
+
load(context) {
|
|
197
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
198
|
+
var _a;
|
|
199
|
+
const s3 = yield getClient();
|
|
200
|
+
const { GetObjectCommand } = yield Promise.resolve().then(() => __importStar(require("@aws-sdk/client-s3")));
|
|
201
|
+
try {
|
|
202
|
+
const response = yield s3.send(new GetObjectCommand({
|
|
203
|
+
Bucket: bucket,
|
|
204
|
+
Key: snapshotObjectKey(context, keyPrefix),
|
|
205
|
+
}));
|
|
206
|
+
const body = yield readBodyAsString(response.Body);
|
|
207
|
+
if (!body)
|
|
208
|
+
return undefined;
|
|
209
|
+
return parseSnapshot(body);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
if ((error === null || error === void 0 ? void 0 : error.name) === "NoSuchKey" ||
|
|
213
|
+
((_a = error === null || error === void 0 ? void 0 : error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 404) {
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
throw error;
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
},
|
|
220
|
+
save(context, snapshot) {
|
|
221
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
222
|
+
const s3 = yield getClient();
|
|
223
|
+
const { PutObjectCommand } = yield Promise.resolve().then(() => __importStar(require("@aws-sdk/client-s3")));
|
|
224
|
+
yield s3.send(new PutObjectCommand({
|
|
225
|
+
Bucket: bucket,
|
|
226
|
+
Key: snapshotObjectKey(context, keyPrefix),
|
|
227
|
+
Body: JSON.stringify(snapshot),
|
|
228
|
+
ContentType: "application/json",
|
|
229
|
+
}));
|
|
230
|
+
});
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
function createGCSFallbackProvider({ bucket, client, keyPrefix, }) {
|
|
235
|
+
let defaultClient;
|
|
236
|
+
const getClient = () => __awaiter(this, void 0, void 0, function* () {
|
|
237
|
+
defaultClient !== null && defaultClient !== void 0 ? defaultClient : (defaultClient = client !== null && client !== void 0 ? client : (yield createDefaultGCSClient()));
|
|
238
|
+
return defaultClient;
|
|
239
|
+
});
|
|
240
|
+
return {
|
|
241
|
+
load(context) {
|
|
242
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
243
|
+
const storage = yield getClient();
|
|
244
|
+
const file = storage
|
|
245
|
+
.bucket(bucket)
|
|
246
|
+
.file(snapshotObjectKey(context, keyPrefix));
|
|
247
|
+
const [exists] = yield file.exists();
|
|
248
|
+
if (!exists) {
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
const [contents] = yield file.download();
|
|
252
|
+
return parseSnapshot(Buffer.from(contents).toString("utf-8"));
|
|
253
|
+
});
|
|
254
|
+
},
|
|
255
|
+
save(context, snapshot) {
|
|
256
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
257
|
+
const storage = yield getClient();
|
|
258
|
+
yield storage
|
|
259
|
+
.bucket(bucket)
|
|
260
|
+
.file(snapshotObjectKey(context, keyPrefix))
|
|
261
|
+
.save(JSON.stringify(snapshot), {
|
|
262
|
+
contentType: "application/json",
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
},
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function createRedisFallbackProvider({ client, keyPrefix, } = {}) {
|
|
269
|
+
let defaultClient;
|
|
270
|
+
let connectPromise;
|
|
271
|
+
const getClient = () => __awaiter(this, void 0, void 0, function* () {
|
|
272
|
+
if (client) {
|
|
273
|
+
return client;
|
|
274
|
+
}
|
|
275
|
+
if (!process.env.REDIS_URL) {
|
|
276
|
+
throw new Error("fallbackProviders.redis() requires REDIS_URL to be set when no client is provided");
|
|
277
|
+
}
|
|
278
|
+
if (!defaultClient) {
|
|
279
|
+
const { createClient } = yield Promise.resolve().then(() => __importStar(require("@redis/client")));
|
|
280
|
+
defaultClient = createClient({ url: process.env.REDIS_URL });
|
|
281
|
+
}
|
|
282
|
+
if (!defaultClient.isOpen) {
|
|
283
|
+
connectPromise !== null && connectPromise !== void 0 ? connectPromise : (connectPromise = defaultClient.connect());
|
|
284
|
+
yield connectPromise;
|
|
285
|
+
}
|
|
286
|
+
return defaultClient;
|
|
287
|
+
});
|
|
288
|
+
return {
|
|
289
|
+
load(context) {
|
|
290
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
291
|
+
const redis = yield getClient();
|
|
292
|
+
const raw = yield redis.get(snapshotRedisKey(context, keyPrefix));
|
|
293
|
+
if (!raw) {
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
return parseSnapshot(raw);
|
|
297
|
+
});
|
|
298
|
+
},
|
|
299
|
+
save(context, snapshot) {
|
|
300
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
301
|
+
const redis = yield getClient();
|
|
302
|
+
yield redis.set(snapshotRedisKey(context, keyPrefix), JSON.stringify(snapshot));
|
|
303
|
+
});
|
|
304
|
+
},
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=flagsFallbackProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flagsFallbackProvider.js","sourceRoot":"","sources":["../../src/flagsFallbackProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EdgeClient = exports.ReflagClient = exports.BoundReflagClient = void 0;
|
|
3
|
+
exports.fallbackProviders = exports.EdgeClient = exports.ReflagClient = exports.BoundReflagClient = void 0;
|
|
4
|
+
const flagsFallbackProvider_1 = require("./flagsFallbackProvider");
|
|
4
5
|
var client_1 = require("./client");
|
|
5
6
|
Object.defineProperty(exports, "BoundReflagClient", { enumerable: true, get: function () { return client_1.BoundReflagClient; } });
|
|
6
7
|
Object.defineProperty(exports, "ReflagClient", { enumerable: true, get: function () { return client_1.ReflagClient; } });
|
|
7
8
|
var edgeClient_1 = require("./edgeClient");
|
|
8
9
|
Object.defineProperty(exports, "EdgeClient", { enumerable: true, get: function () { return edgeClient_1.EdgeClient; } });
|
|
10
|
+
exports.fallbackProviders = {
|
|
11
|
+
static: flagsFallbackProvider_1.createStaticFallbackProvider,
|
|
12
|
+
file: flagsFallbackProvider_1.createFileFallbackProvider,
|
|
13
|
+
redis: flagsFallbackProvider_1.createRedisFallbackProvider,
|
|
14
|
+
s3: flagsFallbackProvider_1.createS3FallbackProvider,
|
|
15
|
+
gcs: flagsFallbackProvider_1.createGCSFallbackProvider,
|
|
16
|
+
};
|
|
9
17
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA2D;AAAlD,2GAAA,iBAAiB,OAAA;AAAE,sGAAA,YAAY,OAAA;AACxC,2CAA6D;AAApD,wGAAA,UAAU,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mEAMiC;AAEjC,mCAA2D;AAAlD,2GAAA,iBAAiB,OAAA;AAAE,sGAAA,YAAY,OAAA;AACxC,2CAA6D;AAApD,wGAAA,UAAU,OAAA;AASN,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,oDAA4B;IACpC,IAAI,EAAE,kDAA0B;IAChC,KAAK,EAAE,mDAA2B;IAClC,EAAE,EAAE,gDAAwB;IAC5B,GAAG,EAAE,iDAAyB;CAC/B,CAAC"}
|
|
@@ -14,18 +14,15 @@ exports.default = periodicallyUpdatingCache;
|
|
|
14
14
|
* Create a cached function that updates the value asynchronously.
|
|
15
15
|
*
|
|
16
16
|
* The value is updated every `ttl` milliseconds.
|
|
17
|
-
* If the value is older than `staleTtl` milliseconds, a warning is logged.
|
|
18
17
|
*
|
|
19
18
|
* @typeParam T - The type of the value.
|
|
20
19
|
* @param ttl - The time-to-live in milliseconds.
|
|
21
|
-
* @param staleTtl - The time-to-live after which a warning is logged.
|
|
22
20
|
* @param logger - The logger to use.
|
|
23
21
|
* @param fn - The function to call to get the value.
|
|
24
22
|
* @returns The cache object.
|
|
25
23
|
**/
|
|
26
|
-
function periodicallyUpdatingCache(ttl,
|
|
24
|
+
function periodicallyUpdatingCache(ttl, logger, fn) {
|
|
27
25
|
let cachedValue;
|
|
28
|
-
let lastUpdate;
|
|
29
26
|
let timeoutId;
|
|
30
27
|
let refreshPromise;
|
|
31
28
|
const update = () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -39,7 +36,6 @@ function periodicallyUpdatingCache(ttl, staleTtl, logger, fn) {
|
|
|
39
36
|
}
|
|
40
37
|
logger === null || logger === void 0 ? void 0 : logger.info("refreshed flag definitions");
|
|
41
38
|
cachedValue = newValue;
|
|
42
|
-
lastUpdate = Date.now();
|
|
43
39
|
logger === null || logger === void 0 ? void 0 : logger.debug("updated cached value", cachedValue);
|
|
44
40
|
}
|
|
45
41
|
catch (e) {
|
|
@@ -51,12 +47,6 @@ function periodicallyUpdatingCache(ttl, staleTtl, logger, fn) {
|
|
|
51
47
|
}
|
|
52
48
|
});
|
|
53
49
|
const get = () => {
|
|
54
|
-
if (lastUpdate !== undefined) {
|
|
55
|
-
const age = Date.now() - lastUpdate;
|
|
56
|
-
if (age > staleTtl) {
|
|
57
|
-
logger === null || logger === void 0 ? void 0 : logger.warn("cached value is stale", { age, cachedValue });
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
50
|
return cachedValue;
|
|
61
51
|
};
|
|
62
52
|
const refresh = () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"periodicallyUpdatingCache.js","sourceRoot":"","sources":["../../src/periodicallyUpdatingCache.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"periodicallyUpdatingCache.js","sourceRoot":"","sources":["../../src/periodicallyUpdatingCache.ts"],"names":[],"mappings":";;;;;;;;;;;AAaA,4CA8DC;AAzED;;;;;;;;;;IAUI;AACJ,SAAwB,yBAAyB,CAC/C,GAAW,EACX,MAA0B,EAC1B,EAAgC;IAEhC,IAAI,WAA0B,CAAC;IAC/B,IAAI,SAAqC,CAAC;IAC1C,IAAI,cAAyC,CAAC;IAE9C,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,EAAE,EAAE,CAAC;YAC5B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAE3C,WAAW,GAAG,QAAQ,CAAC;YAEvB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACT,cAAc,GAAG,SAAS,CAAC;YAC3B,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC,CAAA,CAAC;IAEF,MAAM,GAAG,GAAG,GAAG,EAAE;QACf,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,MAAM,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,cAAc,CAAC;QACrB,OAAO,GAAG,EAAE,CAAC;IACf,CAAC,CAAA,CAAC;IAEF,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,QAAQ;IACV,CAAC,CAAA,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;QACD,cAAc,GAAG,SAAS,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO;QACL,GAAG;QACH,OAAO;QACP,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/dist/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA,4DAA4D;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA,4DAA4D;;;AAo0B/C,QAAA,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC"}
|
package/dist/src/utils.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.applyLogLevel = applyLogLevel;
|
|
|
9
9
|
exports.decorateLogger = decorateLogger;
|
|
10
10
|
exports.mergeSkipUndefined = mergeSkipUndefined;
|
|
11
11
|
exports.hashObject = hashObject;
|
|
12
|
+
exports.hashString = hashString;
|
|
12
13
|
exports.once = once;
|
|
13
14
|
exports.withTimeout = withTimeout;
|
|
14
15
|
const crypto_1 = require("crypto");
|
|
@@ -157,6 +158,16 @@ function hashObject(obj) {
|
|
|
157
158
|
updateSha1Hash(hash, obj);
|
|
158
159
|
return hash.digest("base64");
|
|
159
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Hash a string using SHA256 and return a hex digest.
|
|
163
|
+
*
|
|
164
|
+
* @param value - The string to hash.
|
|
165
|
+
* @returns The SHA256 hash.
|
|
166
|
+
*/
|
|
167
|
+
function hashString(value) {
|
|
168
|
+
ok(typeof value === "string", "value must be a string");
|
|
169
|
+
return (0, crypto_1.createHash)("sha256").update(value).digest("hex");
|
|
170
|
+
}
|
|
160
171
|
function once(fn) {
|
|
161
172
|
let called = false;
|
|
162
173
|
let returned;
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAUA,gBAIC;AAID,oBAKC;AAQD,4BAEC;AAGD,4BAIC;AAED,sCAiCC;AASD,wCAUC;AAQD,gDAYC;AA0CD,gCAOC;AAED,oBAaC;AAmBD,kCAsBC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,11 +25,15 @@ export declare class ReflagClient {
|
|
|
25
25
|
private flagsCache;
|
|
26
26
|
private batchBuffer;
|
|
27
27
|
private rateLimiter;
|
|
28
|
+
private baseFlagOverrides;
|
|
29
|
+
private flagOverrideLayers;
|
|
30
|
+
private nextFlagOverrideLayerId;
|
|
28
31
|
/**
|
|
29
32
|
* Gets the logger associated with the client.
|
|
30
33
|
*/
|
|
31
34
|
readonly logger: Logger;
|
|
32
35
|
private initializationFinished;
|
|
36
|
+
private canLoadFlagsFallbackProvider;
|
|
33
37
|
private _initialize;
|
|
34
38
|
/**
|
|
35
39
|
* Creates a new SDK client.
|
|
@@ -53,38 +57,70 @@ export declare class ReflagClient {
|
|
|
53
57
|
* @throws An error if the options are invalid.
|
|
54
58
|
**/
|
|
55
59
|
constructor(options?: ClientOptions);
|
|
60
|
+
private loadFlagsFallbackDefinitions;
|
|
61
|
+
private saveFlagsFallbackDefinitions;
|
|
56
62
|
/**
|
|
57
|
-
*
|
|
63
|
+
* Replaces the base flag overrides used by the client.
|
|
58
64
|
*
|
|
59
65
|
* @param overrides - The flag overrides.
|
|
60
66
|
*
|
|
61
67
|
* @remarks
|
|
62
|
-
*
|
|
63
|
-
*
|
|
68
|
+
* Base overrides are always applied before any temporary layers added through
|
|
69
|
+
* `pushFlagOverrides()`.
|
|
64
70
|
*
|
|
65
71
|
* @example
|
|
66
72
|
* ```ts
|
|
67
|
-
* client.
|
|
73
|
+
* client.setFlagOverrides({
|
|
68
74
|
* "flag-1": true,
|
|
69
75
|
* "flag-2": false,
|
|
70
|
-
* };
|
|
76
|
+
* });
|
|
71
77
|
* ```
|
|
72
78
|
**/
|
|
79
|
+
setFlagOverrides(overrides: FlagOverridesFn | FlagOverrides): void;
|
|
80
|
+
/**
|
|
81
|
+
* @deprecated
|
|
82
|
+
* Use `setFlagOverrides()` for replacing the base override set.
|
|
83
|
+
**/
|
|
73
84
|
set flagOverrides(overrides: FlagOverridesFn | FlagOverrides);
|
|
74
85
|
/**
|
|
75
|
-
*
|
|
86
|
+
* Temporarily layers flag overrides on top of the current overrides.
|
|
87
|
+
*
|
|
88
|
+
* @param overrides - The flag overrides to apply for the scoped period.
|
|
89
|
+
*
|
|
90
|
+
* @returns A remove function that removes only this override layer.
|
|
76
91
|
*
|
|
77
92
|
* @remarks
|
|
78
|
-
* This is
|
|
93
|
+
* This is intended for tests or other short-lived local overrides. The remove
|
|
94
|
+
* function is idempotent and can safely be called multiple times.
|
|
79
95
|
*
|
|
80
96
|
* @example
|
|
81
97
|
* ```ts
|
|
82
|
-
*
|
|
83
|
-
*
|
|
98
|
+
* let remove: (() => void) | undefined;
|
|
99
|
+
*
|
|
100
|
+
* beforeEach(() => {
|
|
101
|
+
* remove = client.pushFlagOverrides({ "flag-1": true });
|
|
102
|
+
* });
|
|
103
|
+
*
|
|
104
|
+
* afterEach(() => {
|
|
105
|
+
* remove?.();
|
|
106
|
+
* remove = undefined;
|
|
84
107
|
* });
|
|
85
108
|
* ```
|
|
86
109
|
**/
|
|
110
|
+
pushFlagOverrides(overrides: FlagOverridesFn | FlagOverrides): () => void;
|
|
111
|
+
/**
|
|
112
|
+
* Clears the base flag overrides.
|
|
113
|
+
*
|
|
114
|
+
* @remarks
|
|
115
|
+
* This does not affect temporary layers added with `pushFlagOverrides()`.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* client.clearFlagOverrides();
|
|
120
|
+
* ```
|
|
121
|
+
**/
|
|
87
122
|
clearFlagOverrides(): void;
|
|
123
|
+
private syncFlagOverrides;
|
|
88
124
|
/**
|
|
89
125
|
* Returns a new BoundReflagClient with the user/company/otherContext
|
|
90
126
|
* set to be used in subsequent calls.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { FlagsFallbackProvider, FlagsFallbackSnapshot } from "./types";
|
|
2
|
+
export type FileFallbackProviderOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* Directory where per-environment snapshots are stored.
|
|
5
|
+
*
|
|
6
|
+
* @defaultValue `path.join(process.cwd(), ".reflag")`
|
|
7
|
+
*/
|
|
8
|
+
directory?: string;
|
|
9
|
+
};
|
|
10
|
+
export type S3FallbackProviderOptions = {
|
|
11
|
+
/**
|
|
12
|
+
* Bucket where snapshots are stored.
|
|
13
|
+
*/
|
|
14
|
+
bucket: string;
|
|
15
|
+
/**
|
|
16
|
+
* Optional S3 client. A default client is created when omitted.
|
|
17
|
+
*/
|
|
18
|
+
client?: {
|
|
19
|
+
send(command: unknown): Promise<any>;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Prefix for generated per-environment keys.
|
|
23
|
+
*
|
|
24
|
+
* @defaultValue `reflag/flags-fallback`
|
|
25
|
+
*/
|
|
26
|
+
keyPrefix?: string;
|
|
27
|
+
};
|
|
28
|
+
export type GCSFallbackProviderOptions = {
|
|
29
|
+
/**
|
|
30
|
+
* Bucket where snapshots are stored.
|
|
31
|
+
*/
|
|
32
|
+
bucket: string;
|
|
33
|
+
/**
|
|
34
|
+
* Optional GCS client. A default client is created when omitted.
|
|
35
|
+
*/
|
|
36
|
+
client?: {
|
|
37
|
+
bucket(name: string): {
|
|
38
|
+
file(path: string): {
|
|
39
|
+
exists(): Promise<[boolean]>;
|
|
40
|
+
download(): Promise<[Uint8Array]>;
|
|
41
|
+
save(body: string, options: {
|
|
42
|
+
contentType: string;
|
|
43
|
+
}): Promise<unknown>;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Prefix for generated per-environment keys.
|
|
49
|
+
*
|
|
50
|
+
* @defaultValue `reflag/flags-fallback`
|
|
51
|
+
*/
|
|
52
|
+
keyPrefix?: string;
|
|
53
|
+
};
|
|
54
|
+
export type RedisFallbackProviderOptions = {
|
|
55
|
+
/**
|
|
56
|
+
* Optional Redis client. When omitted, a client is created using `REDIS_URL`.
|
|
57
|
+
*/
|
|
58
|
+
client?: {
|
|
59
|
+
get(key: string): Promise<string | null | undefined>;
|
|
60
|
+
set(key: string, value: string): Promise<unknown>;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Prefix for generated per-environment keys.
|
|
64
|
+
*
|
|
65
|
+
* @defaultValue `reflag:flags-fallback`
|
|
66
|
+
*/
|
|
67
|
+
keyPrefix?: string;
|
|
68
|
+
};
|
|
69
|
+
export type StaticFallbackProviderOptions = {
|
|
70
|
+
/**
|
|
71
|
+
* Static fallback flags keyed by flag key.
|
|
72
|
+
*/
|
|
73
|
+
flags: Record<string, boolean>;
|
|
74
|
+
};
|
|
75
|
+
export declare function isFlagsFallbackSnapshot(value: unknown): value is FlagsFallbackSnapshot;
|
|
76
|
+
export declare function createStaticFallbackProvider({ flags, }: StaticFallbackProviderOptions): FlagsFallbackProvider;
|
|
77
|
+
export declare function createFileFallbackProvider({ directory, }?: FileFallbackProviderOptions): FlagsFallbackProvider;
|
|
78
|
+
export declare function createS3FallbackProvider({ bucket, client, keyPrefix, }: S3FallbackProviderOptions): FlagsFallbackProvider;
|
|
79
|
+
export declare function createGCSFallbackProvider({ bucket, client, keyPrefix, }: GCSFallbackProviderOptions): FlagsFallbackProvider;
|
|
80
|
+
export declare function createRedisFallbackProvider({ client, keyPrefix, }?: RedisFallbackProviderOptions): FlagsFallbackProvider;
|
|
81
|
+
//# sourceMappingURL=flagsFallbackProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flagsFallbackProvider.d.ts","sourceRoot":"","sources":["../../../src/flagsFallbackProvider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,qBAAqB,EAErB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,2BAA2B,GAAG;IACxC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;KACtC,CAAC;IAEF;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;YACpB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG;gBAClB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7B,QAAQ,IAAI,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;oBAAE,WAAW,EAAE,MAAM,CAAA;iBAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;aACxE,CAAC;SACH,CAAC;KACH,CAAC;IAEF;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;QACrD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACnD,CAAC;IAEF;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAmCF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,CAQhC;AAmED,wBAAgB,4BAA4B,CAAC,EAC3C,KAAK,GACN,EAAE,6BAA6B,GAAG,qBAAqB,CAgBvD;AAED,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,GACV,GAAE,2BAAgC,GAAG,qBAAqB,CAuB1D;AAED,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,MAAM,EACN,SAAS,GACV,EAAE,yBAAyB,GAAG,qBAAqB,CAsDnD;AAED,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,MAAM,EACN,SAAS,GACV,EAAE,0BAA0B,GAAG,qBAAqB,CAiCpD;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,MAAM,EACN,SAAS,GACV,GAAE,4BAAiC,GAAG,qBAAqB,CAsD3D"}
|