@launchdarkly/js-client-sdk-common 1.7.0 → 1.9.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.
Files changed (129) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/DataManager.d.ts +64 -0
  3. package/dist/DataManager.d.ts.map +1 -0
  4. package/dist/HookRunner.d.ts +12 -0
  5. package/dist/HookRunner.d.ts.map +1 -0
  6. package/dist/LDClientImpl.d.ts +14 -48
  7. package/dist/LDClientImpl.d.ts.map +1 -1
  8. package/dist/LDEmitter.d.ts +13 -1
  9. package/dist/LDEmitter.d.ts.map +1 -1
  10. package/dist/api/LDClient.d.ts +13 -14
  11. package/dist/api/LDClient.d.ts.map +1 -1
  12. package/dist/api/LDOptions.d.ts +28 -12
  13. package/dist/api/LDOptions.d.ts.map +1 -1
  14. package/dist/api/index.d.ts +2 -0
  15. package/dist/api/index.d.ts.map +1 -1
  16. package/dist/api/integrations/Hooks.d.ts +133 -0
  17. package/dist/api/integrations/Hooks.d.ts.map +1 -0
  18. package/dist/api/integrations/index.d.ts +2 -0
  19. package/dist/api/integrations/index.d.ts.map +1 -0
  20. package/dist/configuration/Configuration.d.ts +59 -19
  21. package/dist/configuration/Configuration.d.ts.map +1 -1
  22. package/dist/configuration/index.d.ts +2 -2
  23. package/dist/configuration/index.d.ts.map +1 -1
  24. package/dist/configuration/validators.d.ts.map +1 -1
  25. package/dist/context/addAutoEnv.d.ts +3 -3
  26. package/dist/context/addAutoEnv.d.ts.map +1 -1
  27. package/dist/crypto/digest.d.ts +3 -0
  28. package/dist/crypto/digest.d.ts.map +1 -0
  29. package/dist/datasource/DataSourceEventHandler.d.ts +16 -0
  30. package/dist/datasource/DataSourceEventHandler.d.ts.map +1 -0
  31. package/dist/datasource/DataSourceStatus.d.ts +39 -0
  32. package/dist/datasource/DataSourceStatus.d.ts.map +1 -0
  33. package/dist/datasource/DataSourceStatusErrorInfo.d.ts +8 -0
  34. package/dist/datasource/DataSourceStatusErrorInfo.d.ts.map +1 -0
  35. package/dist/datasource/DataSourceStatusManager.d.ts +40 -0
  36. package/dist/datasource/DataSourceStatusManager.d.ts.map +1 -0
  37. package/dist/diagnostics/createDiagnosticsInitConfig.d.ts +1 -1
  38. package/dist/diagnostics/createDiagnosticsInitConfig.d.ts.map +1 -1
  39. package/dist/diagnostics/createDiagnosticsManager.d.ts +1 -1
  40. package/dist/diagnostics/createDiagnosticsManager.d.ts.map +1 -1
  41. package/dist/events/createEventProcessor.d.ts +3 -3
  42. package/dist/events/createEventProcessor.d.ts.map +1 -1
  43. package/dist/flag-manager/FlagManager.d.ts +39 -15
  44. package/dist/flag-manager/FlagManager.d.ts.map +1 -1
  45. package/dist/flag-manager/FlagPersistence.d.ts +2 -1
  46. package/dist/flag-manager/FlagPersistence.d.ts.map +1 -1
  47. package/dist/flag-manager/FlagStore.d.ts.map +1 -1
  48. package/dist/index.cjs +1686 -0
  49. package/dist/index.cjs.map +1 -0
  50. package/dist/index.d.ts +16 -2
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.mjs +1659 -0
  53. package/dist/index.mjs.map +1 -0
  54. package/dist/polling/PollingProcessor.d.ts.map +1 -1
  55. package/dist/polling/Requestor.d.ts +16 -1
  56. package/dist/polling/Requestor.d.ts.map +1 -1
  57. package/dist/storage/namespaceUtils.d.ts +7 -7
  58. package/dist/storage/namespaceUtils.d.ts.map +1 -1
  59. package/dist/streaming/DataSourceConfig.d.ts +24 -0
  60. package/dist/streaming/DataSourceConfig.d.ts.map +1 -0
  61. package/dist/streaming/StreamingProcessor.d.ts +33 -0
  62. package/dist/streaming/StreamingProcessor.d.ts.map +1 -0
  63. package/dist/streaming/index.d.ts +4 -0
  64. package/dist/streaming/index.d.ts.map +1 -0
  65. package/dist/types/index.d.ts +3 -3
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/package.json +18 -7
  68. package/dist/LDClientImpl.js +0 -460
  69. package/dist/LDClientImpl.js.map +0 -1
  70. package/dist/LDEmitter.js +0 -64
  71. package/dist/LDEmitter.js.map +0 -1
  72. package/dist/api/ConnectionMode.js +0 -3
  73. package/dist/api/ConnectionMode.js.map +0 -1
  74. package/dist/api/LDClient.js +0 -3
  75. package/dist/api/LDClient.js.map +0 -1
  76. package/dist/api/LDEvaluationDetail.js +0 -3
  77. package/dist/api/LDEvaluationDetail.js.map +0 -1
  78. package/dist/api/LDIdentifyOptions.js +0 -3
  79. package/dist/api/LDIdentifyOptions.js.map +0 -1
  80. package/dist/api/LDOptions.js +0 -3
  81. package/dist/api/LDOptions.js.map +0 -1
  82. package/dist/api/index.js +0 -20
  83. package/dist/api/index.js.map +0 -1
  84. package/dist/configuration/Configuration.js +0 -73
  85. package/dist/configuration/Configuration.js.map +0 -1
  86. package/dist/configuration/index.js +0 -5
  87. package/dist/configuration/index.js.map +0 -1
  88. package/dist/configuration/validators.js +0 -37
  89. package/dist/configuration/validators.js.map +0 -1
  90. package/dist/context/addAutoEnv.js +0 -114
  91. package/dist/context/addAutoEnv.js.map +0 -1
  92. package/dist/context/ensureKey.js +0 -72
  93. package/dist/context/ensureKey.js.map +0 -1
  94. package/dist/diagnostics/createDiagnosticsInitConfig.js +0 -19
  95. package/dist/diagnostics/createDiagnosticsInitConfig.js.map +0 -1
  96. package/dist/diagnostics/createDiagnosticsManager.js +0 -12
  97. package/dist/diagnostics/createDiagnosticsManager.js.map +0 -1
  98. package/dist/evaluation/evaluationDetail.js +0 -20
  99. package/dist/evaluation/evaluationDetail.js.map +0 -1
  100. package/dist/events/EventFactory.js +0 -25
  101. package/dist/events/EventFactory.js.map +0 -1
  102. package/dist/events/createEventProcessor.js +0 -11
  103. package/dist/events/createEventProcessor.js.map +0 -1
  104. package/dist/flag-manager/ContextIndex.js +0 -64
  105. package/dist/flag-manager/ContextIndex.js.map +0 -1
  106. package/dist/flag-manager/FlagManager.js +0 -74
  107. package/dist/flag-manager/FlagManager.js.map +0 -1
  108. package/dist/flag-manager/FlagPersistence.js +0 -120
  109. package/dist/flag-manager/FlagPersistence.js.map +0 -1
  110. package/dist/flag-manager/FlagStore.js +0 -28
  111. package/dist/flag-manager/FlagStore.js.map +0 -1
  112. package/dist/flag-manager/FlagUpdater.js +0 -69
  113. package/dist/flag-manager/FlagUpdater.js.map +0 -1
  114. package/dist/flag-manager/ItemDescriptor.js +0 -3
  115. package/dist/flag-manager/ItemDescriptor.js.map +0 -1
  116. package/dist/flag-manager/calculateChangedKeys.js +0 -22
  117. package/dist/flag-manager/calculateChangedKeys.js.map +0 -1
  118. package/dist/index.js +0 -22
  119. package/dist/index.js.map +0 -1
  120. package/dist/polling/PollingProcessor.js +0 -79
  121. package/dist/polling/PollingProcessor.js.map +0 -1
  122. package/dist/polling/Requestor.js +0 -50
  123. package/dist/polling/Requestor.js.map +0 -1
  124. package/dist/storage/getOrGenerateKey.js +0 -21
  125. package/dist/storage/getOrGenerateKey.js.map +0 -1
  126. package/dist/storage/namespaceUtils.js +0 -61
  127. package/dist/storage/namespaceUtils.js.map +0 -1
  128. package/dist/types/index.js +0 -3
  129. package/dist/types/index.js.map +0 -1
@@ -1,120 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const namespaceUtils_1 = require("../storage/namespaceUtils");
4
- const ContextIndex_1 = require("./ContextIndex");
5
- /**
6
- * This class handles persisting and loading flag values from a persistent
7
- * store. It intercepts updates and forwards them to the flag updater and
8
- * then persists changes after the updater has completed.
9
- */
10
- class FlagPersistence {
11
- constructor(platform, environmentNamespace, maxCachedContexts, flagStore, flagUpdater, logger, timeStamper = () => Date.now()) {
12
- this.platform = platform;
13
- this.environmentNamespace = environmentNamespace;
14
- this.maxCachedContexts = maxCachedContexts;
15
- this.flagStore = flagStore;
16
- this.flagUpdater = flagUpdater;
17
- this.logger = logger;
18
- this.timeStamper = timeStamper;
19
- this.indexKey = (0, namespaceUtils_1.namespaceForContextIndex)(this.environmentNamespace);
20
- }
21
- /**
22
- * Inits flag persistence for the provided context with the provided flags. This will result
23
- * in the underlying {@link FlagUpdater} switching its active context.
24
- */
25
- async init(context, newFlags) {
26
- this.flagUpdater.init(context, newFlags);
27
- await this.storeCache(context);
28
- }
29
- /**
30
- * Upserts a flag into the {@link FlagUpdater} and stores that to persistence if the upsert
31
- * was successful / accepted. An upsert may be rejected if the provided context is not
32
- * the active context.
33
- */
34
- async upsert(context, key, item) {
35
- if (this.flagUpdater.upsert(context, key, item)) {
36
- await this.storeCache(context);
37
- return true;
38
- }
39
- return false;
40
- }
41
- /**
42
- * Loads the flags from persistence for the provided context and gives those to the
43
- * {@link FlagUpdater} this {@link FlagPersistence} was constructed with.
44
- */
45
- async loadCached(context) {
46
- var _a, _b, _c, _d;
47
- const storageKey = (0, namespaceUtils_1.namespaceForContextData)(this.platform.crypto, this.environmentNamespace, context);
48
- let flagsJson = await ((_a = this.platform.storage) === null || _a === void 0 ? void 0 : _a.get(storageKey));
49
- if (flagsJson === null || flagsJson === undefined) {
50
- // Fallback: in version <10.3.1 flag data was stored under the canonical key, check
51
- // to see if data is present and migrate the data if present.
52
- flagsJson = await ((_b = this.platform.storage) === null || _b === void 0 ? void 0 : _b.get(context.canonicalKey));
53
- if (flagsJson === null || flagsJson === undefined) {
54
- // return false indicating cache did not load if flag json is still absent
55
- return false;
56
- }
57
- // migrate data from version <10.3.1 and cleanup data that was under canonical key
58
- await ((_c = this.platform.storage) === null || _c === void 0 ? void 0 : _c.set(storageKey, flagsJson));
59
- await ((_d = this.platform.storage) === null || _d === void 0 ? void 0 : _d.clear(context.canonicalKey));
60
- }
61
- try {
62
- const flags = JSON.parse(flagsJson);
63
- // mapping flags to item descriptors
64
- const descriptors = Object.entries(flags).reduce((acc, [key, flag]) => {
65
- acc[key] = { version: flag.version, flag };
66
- return acc;
67
- }, {});
68
- this.flagUpdater.initCached(context, descriptors);
69
- this.logger.debug('Loaded cached flag evaluations from persistent storage');
70
- return true;
71
- }
72
- catch (e) {
73
- this.logger.warn(`Could not load cached flag evaluations from persistent storage: ${e.message}`);
74
- return false;
75
- }
76
- }
77
- async loadIndex() {
78
- var _a;
79
- if (this.contextIndex !== undefined) {
80
- return this.contextIndex;
81
- }
82
- const json = await ((_a = this.platform.storage) === null || _a === void 0 ? void 0 : _a.get(this.indexKey));
83
- if (!json) {
84
- this.contextIndex = new ContextIndex_1.default();
85
- return this.contextIndex;
86
- }
87
- try {
88
- this.contextIndex = ContextIndex_1.default.fromJson(json);
89
- this.logger.debug('Loaded context index from persistent storage');
90
- }
91
- catch (e) {
92
- this.logger.warn(`Could not load index from persistent storage: ${e.message}`);
93
- this.contextIndex = new ContextIndex_1.default();
94
- }
95
- return this.contextIndex;
96
- }
97
- async storeCache(context) {
98
- var _a, _b;
99
- const index = await this.loadIndex();
100
- const storageKey = (0, namespaceUtils_1.namespaceForContextData)(this.platform.crypto, this.environmentNamespace, context);
101
- index.notice(storageKey, this.timeStamper());
102
- const pruned = index.prune(this.maxCachedContexts);
103
- await Promise.all(pruned.map(async (it) => { var _a; return (_a = this.platform.storage) === null || _a === void 0 ? void 0 : _a.clear(it.id); }));
104
- // store index
105
- await ((_a = this.platform.storage) === null || _a === void 0 ? void 0 : _a.set(this.indexKey, index.toJson()));
106
- const allFlags = this.flagStore.getAll();
107
- // mapping item descriptors to flags
108
- const flags = Object.entries(allFlags).reduce((acc, [key, descriptor]) => {
109
- if (descriptor.flag !== null && descriptor.flag !== undefined) {
110
- acc[key] = descriptor.flag;
111
- }
112
- return acc;
113
- }, {});
114
- const jsonAll = JSON.stringify(flags);
115
- // store flag data
116
- await ((_b = this.platform.storage) === null || _b === void 0 ? void 0 : _b.set(storageKey, jsonAll));
117
- }
118
- }
119
- exports.default = FlagPersistence;
120
- //# sourceMappingURL=FlagPersistence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlagPersistence.js","sourceRoot":"","sources":["../../src/flag-manager/FlagPersistence.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultFlagStore = void 0;
4
- /**
5
- * In memory flag store.
6
- */
7
- class DefaultFlagStore {
8
- constructor() {
9
- this.flags = {};
10
- }
11
- init(newFlags) {
12
- this.flags = Object.entries(newFlags).reduce((acc, [key, flag]) => {
13
- acc[key] = flag;
14
- return acc;
15
- }, {});
16
- }
17
- insertOrUpdate(key, update) {
18
- this.flags[key] = update;
19
- }
20
- get(key) {
21
- return this.flags[key];
22
- }
23
- getAll() {
24
- return this.flags;
25
- }
26
- }
27
- exports.DefaultFlagStore = DefaultFlagStore;
28
- //# sourceMappingURL=FlagStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlagStore.js","sourceRoot":"","sources":["../../src/flag-manager/FlagStore.ts"],"names":[],"mappings":";;;AAYA;;GAEG;AACH,MAAa,gBAAgB;IAA7B;QACU,UAAK,GAAsC,EAAE,CAAC;IAuBxD,CAAC;IArBC,IAAI,CAAC,QAA2C;QAC9C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC1C,CAAC,GAAoC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YACpD,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,GAAW,EAAE,MAAsB;QAChD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAxBD,4CAwBC"}
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const calculateChangedKeys_1 = require("./calculateChangedKeys");
4
- /**
5
- * The flag updater handles logic required during the flag update process.
6
- * It handles versions checking to handle out of order flag updates and
7
- * also handles flag comparisons for change notification.
8
- */
9
- class FlagUpdater {
10
- constructor(flagStore, logger) {
11
- this.changeCallbacks = new Array();
12
- this.flagStore = flagStore;
13
- this.logger = logger;
14
- }
15
- init(context, newFlags) {
16
- this.activeContextKey = context.canonicalKey;
17
- const oldFlags = this.flagStore.getAll();
18
- this.flagStore.init(newFlags);
19
- const changed = (0, calculateChangedKeys_1.default)(oldFlags, newFlags);
20
- if (changed.length > 0) {
21
- this.changeCallbacks.forEach((callback) => {
22
- try {
23
- callback(context, changed);
24
- }
25
- catch (err) {
26
- /* intentionally empty */
27
- }
28
- });
29
- }
30
- }
31
- initCached(context, newFlags) {
32
- if (this.activeContextKey === context.canonicalKey) {
33
- return;
34
- }
35
- this.init(context, newFlags);
36
- }
37
- upsert(context, key, item) {
38
- if (this.activeContextKey !== context.canonicalKey) {
39
- this.logger.warn('Received an update for an inactive context.');
40
- return false;
41
- }
42
- const currentValue = this.flagStore.get(key);
43
- if (currentValue !== undefined && currentValue.version >= item.version) {
44
- // this is an out of order update that can be ignored
45
- return false;
46
- }
47
- this.flagStore.insertOrUpdate(key, item);
48
- this.changeCallbacks.forEach((callback) => {
49
- try {
50
- callback(context, [key]);
51
- }
52
- catch (err) {
53
- /* intentionally empty */
54
- }
55
- });
56
- return true;
57
- }
58
- on(callback) {
59
- this.changeCallbacks.push(callback);
60
- }
61
- off(callback) {
62
- const index = this.changeCallbacks.indexOf(callback);
63
- if (index > -1) {
64
- this.changeCallbacks.splice(index, 1);
65
- }
66
- }
67
- }
68
- exports.default = FlagUpdater;
69
- //# sourceMappingURL=FlagUpdater.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlagUpdater.js","sourceRoot":"","sources":["../../src/flag-manager/FlagUpdater.ts"],"names":[],"mappings":";;AAEA,iEAA0D;AAmB1D;;;;GAIG;AACH,MAAqB,WAAW;IAM9B,YAAY,SAAoB,EAAE,MAAgB;QAF1C,oBAAe,GAAG,IAAI,KAAK,EAAuB,CAAC;QAGzD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,OAAgB,EAAE,QAA2C;QAChE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAA,8BAAoB,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACxC,IAAI;oBACF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;iBAC5B;gBAAC,OAAO,GAAG,EAAE;oBACZ,yBAAyB;iBAC1B;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,UAAU,CAAC,OAAgB,EAAE,QAA2C;QACtE,IAAI,IAAI,CAAC,gBAAgB,KAAK,OAAO,CAAC,YAAY,EAAE;YAClD,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,OAAgB,EAAE,GAAW,EAAE,IAAoB;QACxD,IAAI,IAAI,CAAC,gBAAgB,KAAK,OAAO,CAAC,YAAY,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAChE,OAAO,KAAK,CAAC;SACd;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;YACtE,qDAAqD;YACrD,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxC,IAAI;gBACF,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1B;YAAC,OAAO,GAAG,EAAE;gBACZ,yBAAyB;aAC1B;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,QAA6B;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,QAA6B;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACvC;IACH,CAAC;CACF;AApED,8BAoEC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ItemDescriptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ItemDescriptor.js","sourceRoot":"","sources":["../../src/flag-manager/ItemDescriptor.ts"],"names":[],"mappings":""}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const js_sdk_common_1 = require("@launchdarkly/js-sdk-common");
4
- function calculateChangedKeys(existingObject, newObject) {
5
- const changedKeys = [];
6
- // property deleted or updated
7
- Object.entries(existingObject).forEach(([k, f]) => {
8
- const subObject = newObject[k];
9
- if (!subObject || !(0, js_sdk_common_1.fastDeepEqual)(f, subObject)) {
10
- changedKeys.push(k);
11
- }
12
- });
13
- // property added
14
- Object.keys(newObject).forEach((k) => {
15
- if (!existingObject[k]) {
16
- changedKeys.push(k);
17
- }
18
- });
19
- return changedKeys;
20
- }
21
- exports.default = calculateChangedKeys;
22
- //# sourceMappingURL=calculateChangedKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calculateChangedKeys.js","sourceRoot":"","sources":["../../src/flag-manager/calculateChangedKeys.ts"],"names":[],"mappings":";;AAAA,+DAA4D;AAE5D,SAAwB,oBAAoB,CAC1C,cAAoC,EACpC,SAA+B;IAE/B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,8BAA8B;IAC9B,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,IAAI,CAAC,IAAA,6BAAa,EAAC,CAAC,EAAE,SAAS,CAAC,EAAE;YAC9C,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YACtB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAtBD,uCAsBC"}
package/dist/index.js DELETED
@@ -1,22 +0,0 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.LDClientImpl = exports.platform = void 0;
18
- const LDClientImpl_1 = require("./LDClientImpl");
19
- exports.LDClientImpl = LDClientImpl_1.default;
20
- __exportStar(require("@launchdarkly/js-sdk-common"), exports);
21
- exports.platform = require("@launchdarkly/js-sdk-common");
22
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA0C;AAkBjC,uBAlBF,sBAAY,CAkBE;AAhBrB,8DAA4C;AAE5C,0DAAwD"}
@@ -1,79 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const js_sdk_common_1 = require("@launchdarkly/js-sdk-common");
4
- const Requestor_1 = require("./Requestor");
5
- /**
6
- * @internal
7
- */
8
- class PollingProcessor {
9
- constructor(sdkKey, requests, info, uriPath, parameters, config, dataHandler, errorHandler) {
10
- this.dataHandler = dataHandler;
11
- this.errorHandler = errorHandler;
12
- this.stopped = false;
13
- const uri = (0, js_sdk_common_1.getPollingUri)(config.serviceEndpoints, uriPath, parameters);
14
- this.logger = config.logger;
15
- this.pollInterval = config.pollInterval;
16
- this.requestor = new Requestor_1.default(sdkKey, requests, info, uri, config.useReport, config.tags);
17
- }
18
- async poll() {
19
- var _a, _b, _c, _d, _e, _f, _g;
20
- if (this.stopped) {
21
- return;
22
- }
23
- const reportJsonError = (data) => {
24
- var _a, _b, _c;
25
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Polling received invalid data');
26
- (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Invalid JSON follows: ${data}`);
27
- (_c = this.errorHandler) === null || _c === void 0 ? void 0 : _c.call(this, new js_sdk_common_1.LDPollingError('Malformed JSON data in polling response'));
28
- };
29
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Polling LaunchDarkly for feature flag updates');
30
- const startTime = Date.now();
31
- try {
32
- const res = await this.requestor.requestPayload();
33
- try {
34
- const flags = JSON.parse(res);
35
- try {
36
- (_b = this.dataHandler) === null || _b === void 0 ? void 0 : _b.call(this, flags);
37
- }
38
- catch (err) {
39
- (_c = this.logger) === null || _c === void 0 ? void 0 : _c.error(`Exception from data handler: ${err}`);
40
- }
41
- }
42
- catch (_h) {
43
- reportJsonError(res);
44
- }
45
- }
46
- catch (err) {
47
- const requestError = err;
48
- if (requestError.status !== undefined) {
49
- if (!(0, js_sdk_common_1.isHttpRecoverable)(requestError.status)) {
50
- (_d = this.logger) === null || _d === void 0 ? void 0 : _d.error((0, js_sdk_common_1.httpErrorMessage)(err, 'polling request'));
51
- (_e = this.errorHandler) === null || _e === void 0 ? void 0 : _e.call(this, new js_sdk_common_1.LDPollingError(requestError.message, requestError.status));
52
- return;
53
- }
54
- }
55
- (_f = this.logger) === null || _f === void 0 ? void 0 : _f.error((0, js_sdk_common_1.httpErrorMessage)(err, 'polling request', 'will retry'));
56
- }
57
- const elapsed = Date.now() - startTime;
58
- const sleepFor = Math.max(this.pollInterval * 1000 - elapsed, 0);
59
- (_g = this.logger) === null || _g === void 0 ? void 0 : _g.debug('Elapsed: %d ms, sleeping for %d ms', elapsed, sleepFor);
60
- this.timeoutHandle = setTimeout(() => {
61
- this.poll();
62
- }, sleepFor);
63
- }
64
- start() {
65
- this.poll();
66
- }
67
- stop() {
68
- if (this.timeoutHandle) {
69
- clearTimeout(this.timeoutHandle);
70
- this.timeoutHandle = undefined;
71
- }
72
- this.stopped = true;
73
- }
74
- close() {
75
- this.stop();
76
- }
77
- }
78
- exports.default = PollingProcessor;
79
- //# sourceMappingURL=PollingProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PollingProcessor.js","sourceRoot":"","sources":["../../src/polling/PollingProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LDRequestError = void 0;
4
- // eslint-disable-next-line max-classes-per-file
5
- const js_sdk_common_1 = require("@launchdarkly/js-sdk-common");
6
- function isOk(status) {
7
- return status >= 200 && status <= 299;
8
- }
9
- class LDRequestError extends Error {
10
- constructor(message, status) {
11
- super(message);
12
- this.status = status;
13
- this.name = 'LaunchDarklyRequestError';
14
- }
15
- }
16
- exports.LDRequestError = LDRequestError;
17
- /**
18
- * Note: The requestor is implemented independently from polling such that it can be used to
19
- * make a one-off request.
20
- *
21
- * @internal
22
- */
23
- class Requestor {
24
- constructor(sdkKey, requests, info, uri, useReport, tags) {
25
- this.requests = requests;
26
- this.uri = uri;
27
- this.headers = (0, js_sdk_common_1.defaultHeaders)(sdkKey, info, tags);
28
- this.verb = useReport ? 'REPORT' : 'GET';
29
- }
30
- async requestPayload() {
31
- let status;
32
- try {
33
- const res = await this.requests.fetch(this.uri, {
34
- method: this.verb,
35
- headers: this.headers,
36
- });
37
- if (isOk(res.status)) {
38
- return await res.text();
39
- }
40
- // Assigning so it can be thrown after the try/catch.
41
- status = res.status;
42
- }
43
- catch (err) {
44
- throw new LDRequestError(err === null || err === void 0 ? void 0 : err.message);
45
- }
46
- throw new LDRequestError(`Unexpected status code: ${status}`, status);
47
- }
48
- }
49
- exports.default = Requestor;
50
- //# sourceMappingURL=Requestor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Requestor.js","sourceRoot":"","sources":["../../src/polling/Requestor.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,+DAMqC;AAErC,SAAS,IAAI,CAAC,MAAc;IAC1B,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC;AACxC,CAAC;AAED,MAAa,cAAe,SAAQ,KAAK;IAGvC,YAAY,OAAe,EAAE,MAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AARD,wCAQC;AAED;;;;;GAKG;AACH,MAAqB,SAAS;IAI5B,YACE,MAAc,EACN,QAAkB,EAC1B,IAAU,EACO,GAAW,EAC5B,SAAkB,EAClB,IAAqB;QAJb,aAAQ,GAAR,QAAQ,CAAU;QAET,QAAG,GAAH,GAAG,CAAQ;QAI5B,IAAI,CAAC,OAAO,GAAG,IAAA,8BAAc,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,MAA0B,CAAC;QAC/B,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9C,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACpB,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;aACzB;YACD,qDAAqD;YACrD,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;SACrB;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,IAAI,cAAc,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC;SACxC;QACD,MAAM,IAAI,cAAc,CAAC,2BAA2B,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;CACF;AAjCD,4BAiCC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getOrGenerateKey = void 0;
4
- /**
5
- * This function will retrieve a previously generated key for the given {@link storageKey} if it
6
- * exists or generate and store one on the fly if it does not already exist.
7
- * @param storageKey keyed storage location where the generated key should live. See {@link namespaceForGeneratedContextKey}
8
- * for related exmaples of generating a storage key and usage.
9
- * @param platform crypto and storage implementations for necessary operations
10
- * @returns the generated key
11
- */
12
- const getOrGenerateKey = async (storageKey, { crypto, storage }) => {
13
- let generatedKey = await (storage === null || storage === void 0 ? void 0 : storage.get(storageKey));
14
- if (!generatedKey) {
15
- generatedKey = crypto.randomUUID();
16
- await (storage === null || storage === void 0 ? void 0 : storage.set(storageKey, generatedKey));
17
- }
18
- return generatedKey;
19
- };
20
- exports.getOrGenerateKey = getOrGenerateKey;
21
- //# sourceMappingURL=getOrGenerateKey.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getOrGenerateKey.js","sourceRoot":"","sources":["../../src/storage/getOrGenerateKey.ts"],"names":[],"mappings":";;;AAKA;;;;;;;GAOG;AACI,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAY,EAAE,EAAE;IAC1F,IAAI,YAAY,GAAG,MAAM,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC,UAAU,CAAC,CAAA,CAAC;IAElD,IAAI,CAAC,YAAY,EAAE;QACjB,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA,CAAC;KAC9C;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B"}
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.namespaceForContextData = exports.namespaceForContextIndex = exports.namespaceForGeneratedContextKey = exports.namespaceForAnonymousGeneratedContextKey = exports.namespaceForEnvironment = exports.concatNamespacesAndValues = void 0;
4
- /**
5
- * Hashes the input and encodes it as base64
6
- */
7
- function hashAndBase64Encode(crypto) {
8
- return (input) => crypto.createHash('sha256').update(input).digest('base64');
9
- }
10
- const noop = (input) => input; // no-op transform
11
- function concatNamespacesAndValues(parts) {
12
- const processedParts = parts.map((part) => part.transform(part.value)); // use the transform from each part to transform the value
13
- return processedParts.join('_');
14
- }
15
- exports.concatNamespacesAndValues = concatNamespacesAndValues;
16
- function namespaceForEnvironment(crypto, sdkKey) {
17
- return concatNamespacesAndValues([
18
- { value: 'LaunchDarkly', transform: noop },
19
- { value: sdkKey, transform: hashAndBase64Encode(crypto) }, // hash sdk key and encode it
20
- ]);
21
- }
22
- exports.namespaceForEnvironment = namespaceForEnvironment;
23
- /**
24
- * @deprecated prefer {@link namespaceForGeneratedContextKey}. At one time we only generated keys for
25
- * anonymous contexts and they were namespaced in LaunchDarkly_AnonymousKeys. Eventually we started
26
- * generating context keys for non-anonymous contexts such as for the Auto Environment Attributes
27
- * feature and those were namespaced in LaunchDarkly_ContextKeys. This function can be removed
28
- * when the data under the LaunchDarkly_AnonymousKeys namespace is merged with data under the
29
- * LaunchDarkly_ContextKeys namespace.
30
- */
31
- function namespaceForAnonymousGeneratedContextKey(kind) {
32
- return concatNamespacesAndValues([
33
- { value: 'LaunchDarkly', transform: noop },
34
- { value: 'AnonymousKeys', transform: noop },
35
- { value: kind, transform: noop }, // existing SDKs are not hashing or encoding this kind, though they should have
36
- ]);
37
- }
38
- exports.namespaceForAnonymousGeneratedContextKey = namespaceForAnonymousGeneratedContextKey;
39
- function namespaceForGeneratedContextKey(kind) {
40
- return concatNamespacesAndValues([
41
- { value: 'LaunchDarkly', transform: noop },
42
- { value: 'ContextKeys', transform: noop },
43
- { value: kind, transform: noop }, // existing SDKs are not hashing or encoding this kind, though they should have
44
- ]);
45
- }
46
- exports.namespaceForGeneratedContextKey = namespaceForGeneratedContextKey;
47
- function namespaceForContextIndex(environmentNamespace) {
48
- return concatNamespacesAndValues([
49
- { value: environmentNamespace, transform: noop },
50
- { value: 'ContextIndex', transform: noop },
51
- ]);
52
- }
53
- exports.namespaceForContextIndex = namespaceForContextIndex;
54
- function namespaceForContextData(crypto, environmentNamespace, context) {
55
- return concatNamespacesAndValues([
56
- { value: environmentNamespace, transform: noop },
57
- { value: context.canonicalKey, transform: hashAndBase64Encode(crypto) }, // hash and encode canonical key
58
- ]);
59
- }
60
- exports.namespaceForContextData = namespaceForContextData;
61
- //# sourceMappingURL=namespaceUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"namespaceUtils.js","sourceRoot":"","sources":["../../src/storage/namespaceUtils.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,kBAAkB;AAEzD,SAAgB,yBAAyB,CACvC,KAA4E;IAE5E,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0DAA0D;IAClI,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AALD,8DAKC;AAED,SAAgB,uBAAuB,CAAC,MAAc,EAAE,MAAc;IACpE,OAAO,yBAAyB,CAAC;QAC/B,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE;QAC1C,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,6BAA6B;KACzF,CAAC,CAAC;AACL,CAAC;AALD,0DAKC;AAED;;;;;;;GAOG;AACH,SAAgB,wCAAwC,CAAC,IAAY;IACnE,OAAO,yBAAyB,CAAC;QAC/B,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE;QAC1C,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE;QAC3C,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,+EAA+E;KAClH,CAAC,CAAC;AACL,CAAC;AAND,4FAMC;AAED,SAAgB,+BAA+B,CAAC,IAAY;IAC1D,OAAO,yBAAyB,CAAC;QAC/B,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE;QAC1C,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE;QACzC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,+EAA+E;KAClH,CAAC,CAAC;AACL,CAAC;AAND,0EAMC;AAED,SAAgB,wBAAwB,CAAC,oBAA4B;IACnE,OAAO,yBAAyB,CAAC;QAC/B,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE;QAChD,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE;KAC3C,CAAC,CAAC;AACL,CAAC;AALD,4DAKC;AAED,SAAgB,uBAAuB,CACrC,MAAc,EACd,oBAA4B,EAC5B,OAAgB;IAEhB,OAAO,yBAAyB,CAAC;QAC/B,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE;QAChD,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,gCAAgC;KAC1G,CAAC,CAAC;AACL,CAAC;AATD,0DASC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}