@launchdarkly/js-client-sdk-common 1.8.0 → 1.9.1-beta.1

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 (146) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/DataManager.d.ts +18 -2
  3. package/dist/DataManager.d.ts.map +1 -1
  4. package/dist/HookRunner.d.ts +12 -0
  5. package/dist/HookRunner.d.ts.map +1 -0
  6. package/dist/LDClientImpl.d.ts +24 -21
  7. package/dist/LDClientImpl.d.ts.map +1 -1
  8. package/dist/LDEmitter.d.ts +17 -5
  9. package/dist/LDEmitter.d.ts.map +1 -1
  10. package/dist/api/LDClient.d.ts +13 -0
  11. package/dist/api/LDClient.d.ts.map +1 -1
  12. package/dist/api/LDInspection.d.ts +105 -0
  13. package/dist/api/LDInspection.d.ts.map +1 -0
  14. package/dist/api/LDOptions.d.ts +31 -2
  15. package/dist/api/LDOptions.d.ts.map +1 -1
  16. package/dist/api/index.d.ts +1 -0
  17. package/dist/api/index.d.ts.map +1 -1
  18. package/dist/api/integrations/Hooks.d.ts +133 -0
  19. package/dist/api/integrations/Hooks.d.ts.map +1 -0
  20. package/dist/api/integrations/index.d.ts +2 -0
  21. package/dist/api/integrations/index.d.ts.map +1 -0
  22. package/dist/configuration/Configuration.d.ts +10 -8
  23. package/dist/configuration/Configuration.d.ts.map +1 -1
  24. package/dist/configuration/validators.d.ts.map +1 -1
  25. package/dist/context/addAutoEnv.d.ts +2 -2
  26. package/dist/context/addAutoEnv.d.ts.map +1 -1
  27. package/dist/context/ensureKey.d.ts +1 -1
  28. package/dist/context/ensureKey.d.ts.map +1 -1
  29. package/dist/{streaming → datasource}/DataSourceConfig.d.ts +5 -0
  30. package/dist/datasource/DataSourceConfig.d.ts.map +1 -0
  31. package/dist/datasource/DataSourceEventHandler.d.ts +16 -0
  32. package/dist/datasource/DataSourceEventHandler.d.ts.map +1 -0
  33. package/dist/datasource/DataSourceStatus.d.ts +39 -0
  34. package/dist/datasource/DataSourceStatus.d.ts.map +1 -0
  35. package/dist/datasource/DataSourceStatusErrorInfo.d.ts +8 -0
  36. package/dist/datasource/DataSourceStatusErrorInfo.d.ts.map +1 -0
  37. package/dist/datasource/DataSourceStatusManager.d.ts +40 -0
  38. package/dist/datasource/DataSourceStatusManager.d.ts.map +1 -0
  39. package/dist/datasource/Requestor.d.ts +26 -0
  40. package/dist/datasource/Requestor.d.ts.map +1 -0
  41. package/dist/evaluation/evaluationDetail.d.ts.map +1 -1
  42. package/dist/flag-manager/FlagManager.d.ts +14 -5
  43. package/dist/flag-manager/FlagManager.d.ts.map +1 -1
  44. package/dist/flag-manager/FlagPersistence.d.ts +13 -13
  45. package/dist/flag-manager/FlagPersistence.d.ts.map +1 -1
  46. package/dist/flag-manager/FlagStore.d.ts +1 -1
  47. package/dist/flag-manager/FlagStore.d.ts.map +1 -1
  48. package/dist/flag-manager/FlagUpdater.d.ts +6 -5
  49. package/dist/flag-manager/FlagUpdater.d.ts.map +1 -1
  50. package/dist/index.cjs +1893 -0
  51. package/dist/index.cjs.map +1 -0
  52. package/dist/index.d.ts +10 -6
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.mjs +1865 -0
  55. package/dist/index.mjs.map +1 -0
  56. package/dist/inspection/InspectorManager.d.ts +41 -0
  57. package/dist/inspection/InspectorManager.d.ts.map +1 -0
  58. package/dist/inspection/createSafeInspector.d.ts +8 -0
  59. package/dist/inspection/createSafeInspector.d.ts.map +1 -0
  60. package/dist/inspection/getInspectorHook.d.ts +4 -0
  61. package/dist/inspection/getInspectorHook.d.ts.map +1 -0
  62. package/dist/inspection/messages.d.ts +3 -0
  63. package/dist/inspection/messages.d.ts.map +1 -0
  64. package/dist/polling/PollingProcessor.d.ts.map +1 -1
  65. package/dist/streaming/StreamingProcessor.d.ts +18 -16
  66. package/dist/streaming/StreamingProcessor.d.ts.map +1 -1
  67. package/dist/streaming/index.d.ts +1 -1
  68. package/dist/streaming/index.d.ts.map +1 -1
  69. package/dist/types/index.d.ts +4 -3
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/package.json +18 -7
  72. package/dist/DataManager.js +0 -98
  73. package/dist/DataManager.js.map +0 -1
  74. package/dist/LDClientImpl.js +0 -334
  75. package/dist/LDClientImpl.js.map +0 -1
  76. package/dist/LDEmitter.js +0 -64
  77. package/dist/LDEmitter.js.map +0 -1
  78. package/dist/api/ConnectionMode.js +0 -3
  79. package/dist/api/ConnectionMode.js.map +0 -1
  80. package/dist/api/LDClient.js +0 -3
  81. package/dist/api/LDClient.js.map +0 -1
  82. package/dist/api/LDEvaluationDetail.js +0 -3
  83. package/dist/api/LDEvaluationDetail.js.map +0 -1
  84. package/dist/api/LDIdentifyOptions.js +0 -3
  85. package/dist/api/LDIdentifyOptions.js.map +0 -1
  86. package/dist/api/LDOptions.js +0 -3
  87. package/dist/api/LDOptions.js.map +0 -1
  88. package/dist/api/index.js +0 -21
  89. package/dist/api/index.js.map +0 -1
  90. package/dist/configuration/Configuration.js +0 -79
  91. package/dist/configuration/Configuration.js.map +0 -1
  92. package/dist/configuration/index.js +0 -8
  93. package/dist/configuration/index.js.map +0 -1
  94. package/dist/configuration/validators.js +0 -29
  95. package/dist/configuration/validators.js.map +0 -1
  96. package/dist/context/addAutoEnv.js +0 -113
  97. package/dist/context/addAutoEnv.js.map +0 -1
  98. package/dist/context/ensureKey.js +0 -72
  99. package/dist/context/ensureKey.js.map +0 -1
  100. package/dist/crypto/digest.js +0 -14
  101. package/dist/crypto/digest.js.map +0 -1
  102. package/dist/diagnostics/createDiagnosticsInitConfig.js +0 -19
  103. package/dist/diagnostics/createDiagnosticsInitConfig.js.map +0 -1
  104. package/dist/diagnostics/createDiagnosticsManager.js +0 -12
  105. package/dist/diagnostics/createDiagnosticsManager.js.map +0 -1
  106. package/dist/evaluation/evaluationDetail.js +0 -20
  107. package/dist/evaluation/evaluationDetail.js.map +0 -1
  108. package/dist/events/EventFactory.js +0 -25
  109. package/dist/events/EventFactory.js.map +0 -1
  110. package/dist/events/createEventProcessor.js +0 -11
  111. package/dist/events/createEventProcessor.js.map +0 -1
  112. package/dist/flag-manager/ContextIndex.js +0 -64
  113. package/dist/flag-manager/ContextIndex.js.map +0 -1
  114. package/dist/flag-manager/FlagManager.js +0 -48
  115. package/dist/flag-manager/FlagManager.js.map +0 -1
  116. package/dist/flag-manager/FlagPersistence.js +0 -120
  117. package/dist/flag-manager/FlagPersistence.js.map +0 -1
  118. package/dist/flag-manager/FlagStore.js +0 -31
  119. package/dist/flag-manager/FlagStore.js.map +0 -1
  120. package/dist/flag-manager/FlagUpdater.js +0 -69
  121. package/dist/flag-manager/FlagUpdater.js.map +0 -1
  122. package/dist/flag-manager/ItemDescriptor.js +0 -3
  123. package/dist/flag-manager/ItemDescriptor.js.map +0 -1
  124. package/dist/flag-manager/calculateChangedKeys.js +0 -22
  125. package/dist/flag-manager/calculateChangedKeys.js.map +0 -1
  126. package/dist/index.js +0 -26
  127. package/dist/index.js.map +0 -1
  128. package/dist/polling/PollingProcessor.js +0 -96
  129. package/dist/polling/PollingProcessor.js.map +0 -1
  130. package/dist/polling/Requestor.d.ts +0 -21
  131. package/dist/polling/Requestor.d.ts.map +0 -1
  132. package/dist/polling/Requestor.js +0 -48
  133. package/dist/polling/Requestor.js.map +0 -1
  134. package/dist/storage/getOrGenerateKey.js +0 -21
  135. package/dist/storage/getOrGenerateKey.js.map +0 -1
  136. package/dist/storage/namespaceUtils.js +0 -62
  137. package/dist/storage/namespaceUtils.js.map +0 -1
  138. package/dist/streaming/DataSourceConfig.d.ts.map +0 -1
  139. package/dist/streaming/DataSourceConfig.js +0 -3
  140. package/dist/streaming/DataSourceConfig.js.map +0 -1
  141. package/dist/streaming/StreamingProcessor.js +0 -126
  142. package/dist/streaming/StreamingProcessor.js.map +0 -1
  143. package/dist/streaming/index.js +0 -6
  144. package/dist/streaming/index.js.map +0 -1
  145. package/dist/types/index.js +0 -3
  146. package/dist/types/index.js.map +0 -1
@@ -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,26 +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.Requestor = exports.BaseDataManager = exports.platform = void 0;
18
- const LDClientImpl_1 = require("./LDClientImpl");
19
- exports.LDClientImpl = LDClientImpl_1.default;
20
- const Requestor_1 = require("./polling/Requestor");
21
- exports.Requestor = Requestor_1.default;
22
- __exportStar(require("@launchdarkly/js-sdk-common"), exports);
23
- exports.platform = require("@launchdarkly/js-sdk-common");
24
- var DataManager_1 = require("./DataManager");
25
- Object.defineProperty(exports, "BaseDataManager", { enumerable: true, get: function () { return DataManager_1.BaseDataManager; } });
26
- //# 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":";;;;;;;;;;;;;;;;;AACA,iDAA0C;AA+BjC,uBA/BF,sBAAY,CA+BE;AA7BrB,mDAA4C;AA2BnC,oBA3BF,mBAAS,CA2BE;AAzBlB,8DAA4C;AAE5C,0DAAwD;AAsBxD,6CAAgD;AAAvC,8GAAA,eAAe,OAAA"}
@@ -1,96 +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(plainContextString, dataSourceConfig, requests, encoding, dataHandler, errorHandler, logger) {
10
- this.plainContextString = plainContextString;
11
- this.dataSourceConfig = dataSourceConfig;
12
- this.dataHandler = dataHandler;
13
- this.errorHandler = errorHandler;
14
- this.logger = logger;
15
- this.stopped = false;
16
- const path = dataSourceConfig.useReport
17
- ? dataSourceConfig.paths.pathReport(encoding, plainContextString)
18
- : dataSourceConfig.paths.pathGet(encoding, plainContextString);
19
- const parameters = [];
20
- if (this.dataSourceConfig.withReasons) {
21
- parameters.push({ key: 'withReasons', value: 'true' });
22
- }
23
- const uri = (0, js_sdk_common_1.getPollingUri)(dataSourceConfig.serviceEndpoints, path, parameters);
24
- this.pollInterval = dataSourceConfig.pollInterval;
25
- let method = 'GET';
26
- const headers = Object.assign({}, dataSourceConfig.baseHeaders);
27
- let body;
28
- if (dataSourceConfig.useReport) {
29
- method = 'REPORT';
30
- headers['content-type'] = 'application/json';
31
- body = plainContextString; // context is in body for REPORT
32
- }
33
- this.requestor = new Requestor_1.default(requests, uri, headers, method, body);
34
- }
35
- async poll() {
36
- var _a, _b, _c, _d, _e, _f, _g;
37
- if (this.stopped) {
38
- return;
39
- }
40
- const reportJsonError = (data) => {
41
- var _a, _b, _c;
42
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Polling received invalid data');
43
- (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Invalid JSON follows: ${data}`);
44
- (_c = this.errorHandler) === null || _c === void 0 ? void 0 : _c.call(this, new js_sdk_common_1.LDPollingError('Malformed JSON data in polling response'));
45
- };
46
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Polling LaunchDarkly for feature flag updates');
47
- const startTime = Date.now();
48
- try {
49
- const res = await this.requestor.requestPayload();
50
- try {
51
- const flags = JSON.parse(res);
52
- try {
53
- (_b = this.dataHandler) === null || _b === void 0 ? void 0 : _b.call(this, flags);
54
- }
55
- catch (err) {
56
- (_c = this.logger) === null || _c === void 0 ? void 0 : _c.error(`Exception from data handler: ${err}`);
57
- }
58
- }
59
- catch (_h) {
60
- reportJsonError(res);
61
- }
62
- }
63
- catch (err) {
64
- const requestError = err;
65
- if (requestError.status !== undefined) {
66
- if (!(0, js_sdk_common_1.isHttpRecoverable)(requestError.status)) {
67
- (_d = this.logger) === null || _d === void 0 ? void 0 : _d.error((0, js_sdk_common_1.httpErrorMessage)(err, 'polling request'));
68
- (_e = this.errorHandler) === null || _e === void 0 ? void 0 : _e.call(this, new js_sdk_common_1.LDPollingError(requestError.message, requestError.status));
69
- return;
70
- }
71
- }
72
- (_f = this.logger) === null || _f === void 0 ? void 0 : _f.error((0, js_sdk_common_1.httpErrorMessage)(err, 'polling request', 'will retry'));
73
- }
74
- const elapsed = Date.now() - startTime;
75
- const sleepFor = Math.max(this.pollInterval * 1000 - elapsed, 0);
76
- (_g = this.logger) === null || _g === void 0 ? void 0 : _g.debug('Elapsed: %d ms, sleeping for %d ms', elapsed, sleepFor);
77
- this.timeoutHandle = setTimeout(() => {
78
- this.poll();
79
- }, sleepFor);
80
- }
81
- start() {
82
- this.poll();
83
- }
84
- stop() {
85
- if (this.timeoutHandle) {
86
- clearTimeout(this.timeoutHandle);
87
- this.timeoutHandle = undefined;
88
- }
89
- this.stopped = true;
90
- }
91
- close() {
92
- this.stop();
93
- }
94
- }
95
- exports.default = PollingProcessor;
96
- //# 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,21 +0,0 @@
1
- import { HttpErrorResponse, Requests } from '@launchdarkly/js-sdk-common';
2
- export declare class LDRequestError extends Error implements HttpErrorResponse {
3
- status?: number;
4
- constructor(message: string, status?: number);
5
- }
6
- /**
7
- * Note: The requestor is implemented independently from polling such that it can be used to
8
- * make a one-off request.
9
- */
10
- export default class Requestor {
11
- private requests;
12
- private readonly uri;
13
- private readonly headers;
14
- private readonly method;
15
- private readonly body?;
16
- constructor(requests: Requests, uri: string, headers: {
17
- [key: string]: string;
18
- }, method: string, body?: string | undefined);
19
- requestPayload(): Promise<string>;
20
- }
21
- //# sourceMappingURL=Requestor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Requestor.d.ts","sourceRoot":"","sources":["../../src/polling/Requestor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAM1E,qBAAa,cAAe,SAAQ,KAAM,YAAW,iBAAiB;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAK7C;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAE1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAJd,QAAQ,EAAE,QAAQ,EACT,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAClC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,oBAAQ;IAG1B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAkBxC"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LDRequestError = void 0;
4
- function isOk(status) {
5
- return status >= 200 && status <= 299;
6
- }
7
- class LDRequestError extends Error {
8
- constructor(message, status) {
9
- super(message);
10
- this.status = status;
11
- this.name = 'LaunchDarklyRequestError';
12
- }
13
- }
14
- exports.LDRequestError = LDRequestError;
15
- /**
16
- * Note: The requestor is implemented independently from polling such that it can be used to
17
- * make a one-off request.
18
- */
19
- class Requestor {
20
- constructor(requests, uri, headers, method, body) {
21
- this.requests = requests;
22
- this.uri = uri;
23
- this.headers = headers;
24
- this.method = method;
25
- this.body = body;
26
- }
27
- async requestPayload() {
28
- let status;
29
- try {
30
- const res = await this.requests.fetch(this.uri, {
31
- method: this.method,
32
- headers: this.headers,
33
- body: this.body,
34
- });
35
- if (isOk(res.status)) {
36
- return await res.text();
37
- }
38
- // Assigning so it can be thrown after the try/catch.
39
- status = res.status;
40
- }
41
- catch (err) {
42
- throw new LDRequestError(err === null || err === void 0 ? void 0 : err.message);
43
- }
44
- throw new LDRequestError(`Unexpected status code: ${status}`, status);
45
- }
46
- }
47
- exports.default = Requestor;
48
- //# sourceMappingURL=Requestor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Requestor.js","sourceRoot":"","sources":["../../src/polling/Requestor.ts"],"names":[],"mappings":";;;AAGA,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;;;GAGG;AACH,MAAqB,SAAS;IAC5B,YACU,QAAkB,EACT,GAAW,EACX,OAAkC,EAClC,MAAc,EACd,IAAa;QAJtB,aAAQ,GAAR,QAAQ,CAAU;QACT,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAA2B;QAClC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAS;IAC7B,CAAC;IAEJ,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,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,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;AA3BD,4BA2BC"}
@@ -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,62 +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
- const digest_1 = require("../crypto/digest");
5
- /**
6
- * Hashes the input and encodes it as base64
7
- */
8
- function hashAndBase64Encode(crypto) {
9
- return async (input) => (0, digest_1.default)(crypto.createHash('sha256').update(input), 'base64');
10
- }
11
- const noop = async (input) => input; // no-op transform
12
- async function concatNamespacesAndValues(parts) {
13
- const processedParts = await Promise.all(parts.map((part) => part.transform(part.value))); // use the transform from each part to transform the value
14
- return processedParts.join('_');
15
- }
16
- exports.concatNamespacesAndValues = concatNamespacesAndValues;
17
- async function namespaceForEnvironment(crypto, sdkKey) {
18
- return concatNamespacesAndValues([
19
- { value: 'LaunchDarkly', transform: noop },
20
- { value: sdkKey, transform: hashAndBase64Encode(crypto) }, // hash sdk key and encode it
21
- ]);
22
- }
23
- exports.namespaceForEnvironment = namespaceForEnvironment;
24
- /**
25
- * @deprecated prefer {@link namespaceForGeneratedContextKey}. At one time we only generated keys for
26
- * anonymous contexts and they were namespaced in LaunchDarkly_AnonymousKeys. Eventually we started
27
- * generating context keys for non-anonymous contexts such as for the Auto Environment Attributes
28
- * feature and those were namespaced in LaunchDarkly_ContextKeys. This function can be removed
29
- * when the data under the LaunchDarkly_AnonymousKeys namespace is merged with data under the
30
- * LaunchDarkly_ContextKeys namespace.
31
- */
32
- async function namespaceForAnonymousGeneratedContextKey(kind) {
33
- return concatNamespacesAndValues([
34
- { value: 'LaunchDarkly', transform: noop },
35
- { value: 'AnonymousKeys', transform: noop },
36
- { value: kind, transform: noop }, // existing SDKs are not hashing or encoding this kind, though they should have
37
- ]);
38
- }
39
- exports.namespaceForAnonymousGeneratedContextKey = namespaceForAnonymousGeneratedContextKey;
40
- async function namespaceForGeneratedContextKey(kind) {
41
- return concatNamespacesAndValues([
42
- { value: 'LaunchDarkly', transform: noop },
43
- { value: 'ContextKeys', transform: noop },
44
- { value: kind, transform: noop }, // existing SDKs are not hashing or encoding this kind, though they should have
45
- ]);
46
- }
47
- exports.namespaceForGeneratedContextKey = namespaceForGeneratedContextKey;
48
- async function namespaceForContextIndex(environmentNamespace) {
49
- return concatNamespacesAndValues([
50
- { value: environmentNamespace, transform: noop },
51
- { value: 'ContextIndex', transform: noop },
52
- ]);
53
- }
54
- exports.namespaceForContextIndex = namespaceForContextIndex;
55
- async function namespaceForContextData(crypto, environmentNamespace, context) {
56
- return concatNamespacesAndValues([
57
- { value: environmentNamespace, transform: noop },
58
- { value: context.canonicalKey, transform: hashAndBase64Encode(crypto) }, // hash and encode canonical key
59
- ]);
60
- }
61
- exports.namespaceForContextData = namespaceForContextData;
62
- //# sourceMappingURL=namespaceUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"namespaceUtils.js","sourceRoot":"","sources":["../../src/storage/namespaceUtils.ts"],"names":[],"mappings":";;;AAEA,6CAAsC;AAItC;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAM,EAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,IAAI,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,kBAAkB;AAExD,KAAK,UAAU,yBAAyB,CAC7C,KAAqF;IAErF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,0DAA0D;IACrJ,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AALD,8DAKC;AAEM,KAAK,UAAU,uBAAuB,CAAC,MAAc,EAAE,MAAc;IAC1E,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;AACI,KAAK,UAAU,wCAAwC,CAAC,IAAY;IACzE,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;AAEM,KAAK,UAAU,+BAA+B,CAAC,IAAY;IAChE,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;AAEM,KAAK,UAAU,wBAAwB,CAAC,oBAA4B;IACzE,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;AAEM,KAAK,UAAU,uBAAuB,CAC3C,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 +0,0 @@
1
- {"version":3,"file":"DataSourceConfig.d.ts","sourceRoot":"","sources":["../../src/streaming/DataSourceConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,SAAS,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAAC;IAChE,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAAC;CACpE"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=DataSourceConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataSourceConfig.js","sourceRoot":"","sources":["../../src/streaming/DataSourceConfig.ts"],"names":[],"mappings":""}
@@ -1,126 +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 reportJsonError = (type, data, logger, errorHandler) => {
5
- logger === null || logger === void 0 ? void 0 : logger.error(`Stream received invalid data in "${type}" message`);
6
- logger === null || logger === void 0 ? void 0 : logger.debug(`Invalid JSON follows: ${data}`);
7
- errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(new js_sdk_common_1.LDStreamingError('Malformed JSON data in event stream'));
8
- };
9
- class StreamingProcessor {
10
- constructor(plainContextString, dataSourceConfig, listeners, requests, encoding, diagnosticsManager, errorHandler, logger) {
11
- this.plainContextString = plainContextString;
12
- this.dataSourceConfig = dataSourceConfig;
13
- this.listeners = listeners;
14
- this.requests = requests;
15
- this.diagnosticsManager = diagnosticsManager;
16
- this.errorHandler = errorHandler;
17
- this.logger = logger;
18
- // TODO: SC-255969 Implement better REPORT fallback logic
19
- if (dataSourceConfig.useReport && !requests.getEventSourceCapabilities().customMethod) {
20
- logger === null || logger === void 0 ? void 0 : logger.error("Configuration option useReport is true, but platform's EventSource does not support custom HTTP methods. Streaming may not work.");
21
- }
22
- const path = dataSourceConfig.useReport
23
- ? dataSourceConfig.paths.pathReport(encoding, plainContextString)
24
- : dataSourceConfig.paths.pathGet(encoding, plainContextString);
25
- const parameters = [];
26
- if (this.dataSourceConfig.withReasons) {
27
- parameters.push({ key: 'withReasons', value: 'true' });
28
- }
29
- this.requests = requests;
30
- this.headers = Object.assign({}, dataSourceConfig.baseHeaders);
31
- this.logger = logger;
32
- this.streamUri = (0, js_sdk_common_1.getStreamingUri)(dataSourceConfig.serviceEndpoints, path, parameters);
33
- }
34
- logConnectionStarted() {
35
- this.connectionAttemptStartTime = Date.now();
36
- }
37
- logConnectionResult(success) {
38
- if (this.connectionAttemptStartTime && this.diagnosticsManager) {
39
- this.diagnosticsManager.recordStreamInit(this.connectionAttemptStartTime, !success, Date.now() - this.connectionAttemptStartTime);
40
- }
41
- this.connectionAttemptStartTime = undefined;
42
- }
43
- /**
44
- * This is a wrapper around the passed errorHandler which adds additional
45
- * diagnostics and logging logic.
46
- *
47
- * @param err The error to be logged and handled.
48
- * @return boolean whether to retry the connection.
49
- *
50
- * @private
51
- */
52
- retryAndHandleError(err) {
53
- var _a, _b, _c;
54
- if (!(0, js_sdk_common_1.shouldRetry)(err)) {
55
- this.logConnectionResult(false);
56
- (_a = this.errorHandler) === null || _a === void 0 ? void 0 : _a.call(this, new js_sdk_common_1.LDStreamingError(err.message, err.status));
57
- (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error((0, js_sdk_common_1.httpErrorMessage)(err, 'streaming request'));
58
- return false;
59
- }
60
- (_c = this.logger) === null || _c === void 0 ? void 0 : _c.warn((0, js_sdk_common_1.httpErrorMessage)(err, 'streaming request', 'will retry'));
61
- this.logConnectionResult(false);
62
- this.logConnectionStarted();
63
- return true;
64
- }
65
- start() {
66
- this.logConnectionStarted();
67
- let methodAndBodyOverrides;
68
- if (this.dataSourceConfig.useReport) {
69
- // REPORT will include a body, so content type is required.
70
- this.headers['content-type'] = 'application/json';
71
- // orverrides default method with REPORT and adds body.
72
- methodAndBodyOverrides = { method: 'REPORT', body: this.plainContextString };
73
- }
74
- else {
75
- // no method or body override
76
- methodAndBodyOverrides = {};
77
- }
78
- // TLS is handled by the platform implementation.
79
- const eventSource = this.requests.createEventSource(this.streamUri, Object.assign(Object.assign({ headers: this.headers }, methodAndBodyOverrides), { errorFilter: (error) => this.retryAndHandleError(error), initialRetryDelayMillis: this.dataSourceConfig.initialRetryDelayMillis, readTimeoutMillis: 5 * 60 * 1000, retryResetIntervalMillis: 60 * 1000 }));
80
- this.eventSource = eventSource;
81
- eventSource.onclose = () => {
82
- var _a;
83
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('Closed LaunchDarkly stream connection');
84
- };
85
- eventSource.onerror = () => {
86
- // The work is done by `errorFilter`.
87
- };
88
- eventSource.onopen = () => {
89
- var _a;
90
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('Opened LaunchDarkly stream connection');
91
- };
92
- eventSource.onretrying = (e) => {
93
- var _a;
94
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(`Will retry stream connection in ${e.delayMillis} milliseconds`);
95
- };
96
- this.listeners.forEach(({ deserializeData, processJson }, eventName) => {
97
- eventSource.addEventListener(eventName, (event) => {
98
- var _a, _b;
99
- (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug(`Received ${eventName} event`);
100
- if (event === null || event === void 0 ? void 0 : event.data) {
101
- this.logConnectionResult(true);
102
- const { data } = event;
103
- const dataJson = deserializeData(data);
104
- if (!dataJson) {
105
- reportJsonError(eventName, data, this.logger, this.errorHandler);
106
- return;
107
- }
108
- processJson(dataJson);
109
- }
110
- else {
111
- (_b = this.errorHandler) === null || _b === void 0 ? void 0 : _b.call(this, new js_sdk_common_1.LDStreamingError('Unexpected payload from event stream'));
112
- }
113
- });
114
- });
115
- }
116
- stop() {
117
- var _a;
118
- (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();
119
- this.eventSource = undefined;
120
- }
121
- close() {
122
- this.stop();
123
- }
124
- }
125
- exports.default = StreamingProcessor;
126
- //# sourceMappingURL=StreamingProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StreamingProcessor.js","sourceRoot":"","sources":["../../src/streaming/StreamingProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StreamingProcessor = void 0;
4
- const StreamingProcessor_1 = require("./StreamingProcessor");
5
- exports.StreamingProcessor = StreamingProcessor_1.default;
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":";;;AAKA,6DAAsD;AAEH,6BAF5C,4BAAkB,CAE4C"}
@@ -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":""}