@launchdarkly/js-sdk-common 1.3.0-alpha.1 → 2.0.0-alpha.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 (119) hide show
  1. package/dist/api/data/LDEvaluationDetail.d.ts +16 -0
  2. package/dist/api/data/LDEvaluationDetail.d.ts.map +1 -1
  3. package/dist/api/options/LDClientContext.d.ts +8 -5
  4. package/dist/api/options/LDClientContext.d.ts.map +1 -1
  5. package/dist/api/platform/EventSource.d.ts +9 -3
  6. package/dist/api/platform/EventSource.d.ts.map +1 -1
  7. package/dist/api/subsystem/LDStreamProcessor.d.ts +13 -0
  8. package/dist/api/subsystem/LDStreamProcessor.d.ts.map +1 -0
  9. package/dist/api/subsystem/LDStreamProcessor.js +3 -0
  10. package/dist/api/subsystem/LDStreamProcessor.js.map +1 -0
  11. package/dist/api/subsystem/index.d.ts +2 -1
  12. package/dist/api/subsystem/index.d.ts.map +1 -1
  13. package/dist/api/subsystem/index.js.map +1 -1
  14. package/dist/errors.d.ts +19 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +51 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/internal/diagnostics/DiagnosticsManager.d.ts +35 -0
  23. package/dist/internal/diagnostics/DiagnosticsManager.d.ts.map +1 -0
  24. package/dist/internal/diagnostics/DiagnosticsManager.js +70 -0
  25. package/dist/internal/diagnostics/DiagnosticsManager.js.map +1 -0
  26. package/dist/internal/diagnostics/index.d.ts +3 -0
  27. package/dist/internal/diagnostics/index.d.ts.map +1 -0
  28. package/dist/internal/diagnostics/index.js +6 -0
  29. package/dist/internal/diagnostics/index.js.map +1 -0
  30. package/dist/internal/diagnostics/types.d.ts +65 -0
  31. package/dist/internal/diagnostics/types.d.ts.map +1 -0
  32. package/dist/internal/{events/LDEventOverrides.js → diagnostics/types.js} +1 -1
  33. package/dist/internal/diagnostics/types.js.map +1 -0
  34. package/dist/internal/events/EventProcessor.d.ts +5 -15
  35. package/dist/internal/events/EventProcessor.d.ts.map +1 -1
  36. package/dist/internal/events/EventProcessor.js +19 -15
  37. package/dist/internal/events/EventProcessor.js.map +1 -1
  38. package/dist/internal/events/EventSender.d.ts +13 -0
  39. package/dist/internal/events/EventSender.d.ts.map +1 -0
  40. package/dist/internal/events/EventSender.js +67 -0
  41. package/dist/internal/events/EventSender.js.map +1 -0
  42. package/dist/internal/events/InputCustomEvent.d.ts +1 -2
  43. package/dist/internal/events/InputCustomEvent.d.ts.map +1 -1
  44. package/dist/internal/events/InputCustomEvent.js +4 -2
  45. package/dist/internal/events/InputCustomEvent.js.map +1 -1
  46. package/dist/internal/events/InputEvalEvent.d.ts +1 -2
  47. package/dist/internal/events/InputEvalEvent.d.ts.map +1 -1
  48. package/dist/internal/events/InputEvalEvent.js +1 -2
  49. package/dist/internal/events/InputEvalEvent.js.map +1 -1
  50. package/dist/internal/events/NullEventProcessor.d.ts +7 -0
  51. package/dist/internal/events/NullEventProcessor.d.ts.map +1 -0
  52. package/dist/internal/events/NullEventProcessor.js +11 -0
  53. package/dist/internal/events/NullEventProcessor.js.map +1 -0
  54. package/dist/internal/events/index.d.ts +2 -2
  55. package/dist/internal/events/index.d.ts.map +1 -1
  56. package/dist/internal/events/index.js +3 -1
  57. package/dist/internal/events/index.js.map +1 -1
  58. package/dist/internal/index.d.ts +2 -0
  59. package/dist/internal/index.d.ts.map +1 -1
  60. package/dist/internal/index.js +2 -0
  61. package/dist/internal/index.js.map +1 -1
  62. package/dist/internal/stream/StreamingProcessor.d.ts +25 -0
  63. package/dist/internal/stream/StreamingProcessor.d.ts.map +1 -0
  64. package/dist/internal/stream/StreamingProcessor.js +104 -0
  65. package/dist/internal/stream/StreamingProcessor.js.map +1 -0
  66. package/dist/internal/stream/index.d.ts +4 -0
  67. package/dist/internal/stream/index.d.ts.map +1 -0
  68. package/dist/internal/stream/index.js +6 -0
  69. package/dist/internal/stream/index.js.map +1 -0
  70. package/dist/internal/stream/types.d.ts +3 -0
  71. package/dist/internal/stream/types.d.ts.map +1 -0
  72. package/dist/internal/stream/types.js +3 -0
  73. package/dist/internal/stream/types.js.map +1 -0
  74. package/dist/logging/SafeLogger.d.ts +1 -1
  75. package/dist/logging/SafeLogger.d.ts.map +1 -1
  76. package/dist/logging/createSafeLogger.d.ts +6 -0
  77. package/dist/logging/createSafeLogger.d.ts.map +1 -0
  78. package/dist/logging/createSafeLogger.js +16 -0
  79. package/dist/logging/createSafeLogger.js.map +1 -0
  80. package/dist/logging/index.d.ts +2 -1
  81. package/dist/logging/index.d.ts.map +1 -1
  82. package/dist/logging/index.js +3 -1
  83. package/dist/logging/index.js.map +1 -1
  84. package/dist/options/ClientContext.d.ts +9 -2
  85. package/dist/options/ClientContext.d.ts.map +1 -1
  86. package/dist/options/ClientContext.js +2 -1
  87. package/dist/options/ClientContext.js.map +1 -1
  88. package/dist/options/ServiceEndpoints.d.ts +2 -1
  89. package/dist/options/ServiceEndpoints.d.ts.map +1 -1
  90. package/dist/options/ServiceEndpoints.js +2 -1
  91. package/dist/options/ServiceEndpoints.js.map +1 -1
  92. package/dist/utils/VoidFunction.d.ts +2 -0
  93. package/dist/utils/VoidFunction.d.ts.map +1 -0
  94. package/dist/utils/VoidFunction.js +3 -0
  95. package/dist/utils/VoidFunction.js.map +1 -0
  96. package/dist/utils/date.d.ts +2 -0
  97. package/dist/utils/date.d.ts.map +1 -0
  98. package/dist/utils/date.js +9 -0
  99. package/dist/utils/date.js.map +1 -0
  100. package/dist/utils/http.d.ts +14 -0
  101. package/dist/utils/http.d.ts.map +1 -0
  102. package/dist/utils/http.js +33 -0
  103. package/dist/utils/http.js.map +1 -0
  104. package/dist/utils/index.d.ts +5 -1
  105. package/dist/utils/index.d.ts.map +1 -1
  106. package/dist/utils/index.js +8 -1
  107. package/dist/utils/index.js.map +1 -1
  108. package/dist/utils/sleep.d.ts +3 -0
  109. package/dist/utils/sleep.d.ts.map +1 -0
  110. package/dist/utils/sleep.js +7 -0
  111. package/dist/utils/sleep.js.map +1 -0
  112. package/dist/validators.d.ts +6 -0
  113. package/dist/validators.d.ts.map +1 -1
  114. package/dist/validators.js +14 -1
  115. package/dist/validators.js.map +1 -1
  116. package/package.json +3 -1
  117. package/dist/internal/events/LDEventOverrides.d.ts +0 -28
  118. package/dist/internal/events/LDEventOverrides.d.ts.map +0 -1
  119. package/dist/internal/events/LDEventOverrides.js.map +0 -1
@@ -24,4 +24,20 @@ export interface LDEvaluationDetail {
24
24
  */
25
25
  reason: LDEvaluationReason;
26
26
  }
27
+ export interface LDEvaluationDetailTyped<TFlag> {
28
+ /**
29
+ * The result of the flag evaluation. This will be either one of the flag's variations or
30
+ * the default value that was passed to `LDClient.variationDetail`.
31
+ */
32
+ value: TFlag;
33
+ /**
34
+ * The index of the returned value within the flag's list of variations, e.g. 0 for the
35
+ * first variation-- or `null` if the default value was returned.
36
+ */
37
+ variationIndex?: number | null;
38
+ /**
39
+ * An object describing the main factor that influenced the flag evaluation value.
40
+ */
41
+ reason: LDEvaluationReason;
42
+ }
27
43
  //# sourceMappingURL=LDEvaluationDetail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LDEvaluationDetail.d.ts","sourceRoot":"","sources":["../../../src/api/data/LDEvaluationDetail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,kBAAkB,CAAC;CAC5B"}
1
+ {"version":3,"file":"LDEvaluationDetail.d.ts","sourceRoot":"","sources":["../../../src/api/data/LDEvaluationDetail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK;IAC5C;;;OAGG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,kBAAkB,CAAC;CAC5B"}
@@ -9,11 +9,6 @@ export interface LDServiceEndpoints {
9
9
  * The most basic properties of the SDK client that are available to all SDK component factories.
10
10
  */
11
11
  export interface LDBasicConfiguration {
12
- logger?: LDLogger;
13
- /**
14
- * True if the SDK was configured to be completely offline.
15
- */
16
- offline: boolean;
17
12
  /**
18
13
  * The configured SDK key.
19
14
  */
@@ -22,6 +17,14 @@ export interface LDBasicConfiguration {
22
17
  * Defines the base service URIs used by SDK components.
23
18
  */
24
19
  serviceEndpoints: LDServiceEndpoints;
20
+ /**
21
+ * True if the SDK was configured to be completely offline.
22
+ */
23
+ offline?: boolean;
24
+ logger?: LDLogger;
25
+ tags?: {
26
+ value?: string;
27
+ };
25
28
  }
26
29
  /**
27
30
  * Factory methods receive this class as a parameter.
@@ -1 +1 @@
1
- {"version":3,"file":"LDClientContext.d.ts","sourceRoot":"","sources":["../../../src/api/options/LDClientContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,kBAAkB;CAElC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,gBAAgB,EAAE,kBAAkB,CAAC;CACtC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,kBAAkB,EAAE,oBAAoB,CAAC;IAEzC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
1
+ {"version":3,"file":"LDClientContext.d.ts","sourceRoot":"","sources":["../../../src/api/options/LDClientContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,kBAAkB;CAElC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,gBAAgB,EAAE,kBAAkB,CAAC;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,kBAAkB,EAAE,oBAAoB,CAAC;IAEzC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
@@ -1,3 +1,11 @@
1
+ export type EventName = 'delete' | 'patch' | 'ping' | 'put';
2
+ export type EventListener = (event?: {
3
+ data?: any;
4
+ }) => void;
5
+ export type ProcessStreamResponse = {
6
+ deserializeData: (data: string) => any;
7
+ processJson: (json: any) => void;
8
+ };
1
9
  export interface EventSource {
2
10
  onclose: (() => void) | undefined;
3
11
  onerror: (() => void) | undefined;
@@ -5,9 +13,7 @@ export interface EventSource {
5
13
  onretrying: ((e: {
6
14
  delayMillis: number;
7
15
  }) => void) | undefined;
8
- addEventListener(type: string, listener: (event?: {
9
- data?: any;
10
- }) => void): void;
16
+ addEventListener(type: EventName, listener: EventListener): void;
11
17
  close(): void;
12
18
  }
13
19
  export interface EventSourceInitDict {
@@ -1 +1 @@
1
- {"version":3,"file":"EventSource.d.ts","sourceRoot":"","sources":["../../../src/api/platform/EventSource.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAE/D,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IACnE,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IAC9C,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB,EAAE,MAAM,CAAC;CAClC"}
1
+ {"version":3,"file":"EventSource.d.ts","sourceRoot":"","sources":["../../../src/api/platform/EventSource.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,KAAK,IAAI,CAAC;AAC7D,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;IACvC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAE/D,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACjE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IACnE,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IAC9C,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB,EAAE,MAAM,CAAC;CAClC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The LaunchDarkly client stream processor
3
+ *
4
+ * The client uses this internally to retrieve updates from LaunchDarkly.
5
+ *
6
+ * @ignore
7
+ */
8
+ export interface LDStreamProcessor {
9
+ start: () => void;
10
+ stop: () => void;
11
+ close: () => void;
12
+ }
13
+ //# sourceMappingURL=LDStreamProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LDStreamProcessor.d.ts","sourceRoot":"","sources":["../../../src/api/subsystem/LDStreamProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=LDStreamProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LDStreamProcessor.js","sourceRoot":"","sources":["../../../src/api/subsystem/LDStreamProcessor.ts"],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  import LDContextDeduplicator from './LDContextDeduplicator';
2
2
  import LDEventProcessor from './LDEventProcessor';
3
3
  import LDEventSender, { LDDeliveryStatus, LDEventSenderResult, LDEventType } from './LDEventSender';
4
- export { LDEventProcessor, LDContextDeduplicator, LDEventSender, LDDeliveryStatus, LDEventType, LDEventSenderResult, };
4
+ import { LDStreamProcessor } from './LDStreamProcessor';
5
+ export { LDEventProcessor, LDContextDeduplicator, LDEventSender, LDDeliveryStatus, LDEventType, LDEventSenderResult, LDStreamProcessor, };
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/subsystem/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,EAAE,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEpG,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/subsystem/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,EAAE,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,GAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/subsystem/index.ts"],"names":[],"mappings":";;;AAEA,mDAAoG;AAMlG,iGANsB,gCAAgB,OAMtB;AAChB,4FAP6D,2BAAW,OAO7D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/subsystem/index.ts"],"names":[],"mappings":";;;AAEA,mDAAoG;AAOlG,iGAPsB,gCAAgB,OAOtB;AAChB,4FAR6D,2BAAW,OAQ7D"}
@@ -0,0 +1,19 @@
1
+ export declare class LDFileDataSourceError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class LDPollingError extends Error {
5
+ readonly status?: number;
6
+ constructor(message: string, status?: number);
7
+ }
8
+ export declare class LDStreamingError extends Error {
9
+ readonly code?: number;
10
+ constructor(message: string, code?: number);
11
+ }
12
+ export declare class LDUnexpectedResponseError extends Error {
13
+ constructor(message: string);
14
+ }
15
+ export declare class LDClientError extends Error {
16
+ constructor(message: string);
17
+ }
18
+ export declare function isHttpRecoverable(status: number): boolean;
19
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAK7C;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAK3C;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,WAK/C"}
package/dist/errors.js ADDED
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // These classes are of trivial complexity. If they become
3
+ // more complex, then they could be independent files.
4
+ /* eslint-disable max-classes-per-file */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isHttpRecoverable = exports.LDClientError = exports.LDUnexpectedResponseError = exports.LDStreamingError = exports.LDPollingError = exports.LDFileDataSourceError = void 0;
7
+ class LDFileDataSourceError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'LaunchDarklyFileDataSourceError';
11
+ }
12
+ }
13
+ exports.LDFileDataSourceError = LDFileDataSourceError;
14
+ class LDPollingError extends Error {
15
+ constructor(message, status) {
16
+ super(message);
17
+ this.status = status;
18
+ this.name = 'LaunchDarklyPollingError';
19
+ }
20
+ }
21
+ exports.LDPollingError = LDPollingError;
22
+ class LDStreamingError extends Error {
23
+ constructor(message, code) {
24
+ super(message);
25
+ this.code = code;
26
+ this.name = 'LaunchDarklyStreamingError';
27
+ }
28
+ }
29
+ exports.LDStreamingError = LDStreamingError;
30
+ class LDUnexpectedResponseError extends Error {
31
+ constructor(message) {
32
+ super(message);
33
+ this.name = 'LaunchDarklyUnexpectedResponseError';
34
+ }
35
+ }
36
+ exports.LDUnexpectedResponseError = LDUnexpectedResponseError;
37
+ class LDClientError extends Error {
38
+ constructor(message) {
39
+ super(message);
40
+ this.name = 'LaunchDarklyClientError';
41
+ }
42
+ }
43
+ exports.LDClientError = LDClientError;
44
+ function isHttpRecoverable(status) {
45
+ if (status >= 400 && status < 500) {
46
+ return status === 400 || status === 408 || status === 429;
47
+ }
48
+ return true;
49
+ }
50
+ exports.isHttpRecoverable = isHttpRecoverable;
51
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";AAAA,0DAA0D;AAC1D,sDAAsD;AACtD,yCAAyC;;;AAEzC,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;IAChD,CAAC;CACF;AALD,sDAKC;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,MAAa,gBAAiB,SAAQ,KAAK;IAGzC,YAAY,OAAe,EAAE,IAAa;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AARD,4CAQC;AAED,MAAa,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qCAAqC,CAAC;IACpD,CAAC;CACF;AALD,8DAKC;AAED,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AALD,sCAKC;AAED,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE;QACjC,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;KAC3D;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AALD,8CAKC"}
package/dist/index.d.ts CHANGED
@@ -7,5 +7,6 @@ export * from './logging';
7
7
  export * from './options';
8
8
  export * from './utils';
9
9
  export * as internal from './internal';
10
+ export * from './errors';
10
11
  export { AttributeReference, Context, ContextFilter };
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AAExB,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AAExB,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,cAAc,UAAU,CAAC;AAEzB,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -27,4 +27,5 @@ __exportStar(require("./logging"), exports);
27
27
  __exportStar(require("./options"), exports);
28
28
  __exportStar(require("./utils"), exports);
29
29
  exports.internal = require("./internal");
30
+ __exportStar(require("./errors"), exports);
30
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6DAAsD;AAY7C,6BAZF,4BAAkB,CAYE;AAX3B,uCAAgC;AAWH,kBAXtB,iBAAO,CAWsB;AAVpC,mDAA4C;AAUN,wBAV/B,uBAAa,CAU+B;AARnD,wCAAsB;AACtB,+CAA6B;AAC7B,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AAExB,yCAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6DAAsD;AAa7C,6BAbF,4BAAkB,CAaE;AAZ3B,uCAAgC;AAYH,kBAZtB,iBAAO,CAYsB;AAXpC,mDAA4C;AAWN,wBAX/B,uBAAa,CAW+B;AATnD,wCAAsB;AACtB,+CAA6B;AAC7B,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AAExB,yCAAuC;AACvC,2CAAyB"}
@@ -0,0 +1,35 @@
1
+ import { Platform } from '../../api';
2
+ import { DiagnosticInitEvent, DiagnosticStatsEvent } from './types';
3
+ export default class DiagnosticsManager {
4
+ private readonly platform;
5
+ private readonly diagnosticInitConfig;
6
+ private readonly startTime;
7
+ private streamInits;
8
+ private readonly id;
9
+ private dataSinceDate;
10
+ constructor(sdkKey: string, platform: Platform, diagnosticInitConfig: any);
11
+ /**
12
+ * Creates the initial event that is sent by the event processor when the SDK starts up. This will
13
+ * not be repeated during the lifetime of the SDK client.
14
+ */
15
+ createInitEvent(): DiagnosticInitEvent;
16
+ /**
17
+ * Records a stream connection attempt (called by the stream processor).
18
+ *
19
+ * @param timestamp Time of the *beginning* of the connection attempt.
20
+ * @param failed True if the connection failed, or we got a read timeout before receiving a "put".
21
+ * @param durationMillis Elapsed time between starting timestamp and when we either gave up/lost
22
+ * the connection or received a successful "put".
23
+ */
24
+ recordStreamInit(timestamp: number, failed: boolean, durationMillis: number): void;
25
+ /**
26
+ * Creates a periodic event containing time-dependent stats, and resets the state of the manager
27
+ * with regard to those stats.
28
+ *
29
+ * Note: the reason droppedEvents, deduplicatedUsers, and eventsInLastBatch are passed into this
30
+ * function, instead of being properties of the DiagnosticsManager, is that the event processor is
31
+ * the one who's calling this function and is also the one who's tracking those stats.
32
+ */
33
+ createStatsEventAndReset(droppedEvents: number, deduplicatedUsers: number, eventsInLastBatch: number): DiagnosticStatsEvent;
34
+ }
35
+ //# sourceMappingURL=DiagnosticsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticsManager.d.ts","sourceRoot":"","sources":["../../../src/internal/diagnostics/DiagnosticsManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAgB,mBAAmB,EAAE,oBAAoB,EAAkB,MAAM,SAAS,CAAC;AAElG,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAQnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IARvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,aAAa,CAAS;gBAG5B,MAAM,EAAE,MAAM,EACG,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,GAAG;IAU5C;;;OAGG;IACH,eAAe,IAAI,mBAAmB;IAoBtC;;;;;;;OAOG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM;IAK3E;;;;;;;OAOG;IACH,wBAAwB,CACtB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,GACxB,oBAAoB;CAiBxB"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class DiagnosticsManager {
4
+ constructor(sdkKey, platform, diagnosticInitConfig) {
5
+ this.platform = platform;
6
+ this.diagnosticInitConfig = diagnosticInitConfig;
7
+ this.streamInits = [];
8
+ this.startTime = Date.now();
9
+ this.dataSinceDate = this.startTime;
10
+ this.id = {
11
+ diagnosticId: platform.crypto.randomUUID(),
12
+ sdkKeySuffix: sdkKey.length > 6 ? sdkKey.substring(sdkKey.length - 6) : sdkKey,
13
+ };
14
+ }
15
+ /**
16
+ * Creates the initial event that is sent by the event processor when the SDK starts up. This will
17
+ * not be repeated during the lifetime of the SDK client.
18
+ */
19
+ createInitEvent() {
20
+ var _a, _b, _c;
21
+ const sdkData = this.platform.info.sdkData();
22
+ const platformData = this.platform.info.platformData();
23
+ return {
24
+ kind: 'diagnostic-init',
25
+ id: this.id,
26
+ creationDate: this.startTime,
27
+ sdk: sdkData,
28
+ configuration: this.diagnosticInitConfig,
29
+ platform: Object.assign({ name: platformData.name, osArch: (_a = platformData.os) === null || _a === void 0 ? void 0 : _a.arch, osName: (_b = platformData.os) === null || _b === void 0 ? void 0 : _b.name, osVersion: (_c = platformData.os) === null || _c === void 0 ? void 0 : _c.version }, (platformData.additional || {})),
30
+ };
31
+ }
32
+ /**
33
+ * Records a stream connection attempt (called by the stream processor).
34
+ *
35
+ * @param timestamp Time of the *beginning* of the connection attempt.
36
+ * @param failed True if the connection failed, or we got a read timeout before receiving a "put".
37
+ * @param durationMillis Elapsed time between starting timestamp and when we either gave up/lost
38
+ * the connection or received a successful "put".
39
+ */
40
+ recordStreamInit(timestamp, failed, durationMillis) {
41
+ const item = { timestamp, failed, durationMillis };
42
+ this.streamInits.push(item);
43
+ }
44
+ /**
45
+ * Creates a periodic event containing time-dependent stats, and resets the state of the manager
46
+ * with regard to those stats.
47
+ *
48
+ * Note: the reason droppedEvents, deduplicatedUsers, and eventsInLastBatch are passed into this
49
+ * function, instead of being properties of the DiagnosticsManager, is that the event processor is
50
+ * the one who's calling this function and is also the one who's tracking those stats.
51
+ */
52
+ createStatsEventAndReset(droppedEvents, deduplicatedUsers, eventsInLastBatch) {
53
+ const currentTime = Date.now();
54
+ const evt = {
55
+ kind: 'diagnostic',
56
+ id: this.id,
57
+ creationDate: currentTime,
58
+ dataSinceDate: this.dataSinceDate,
59
+ droppedEvents,
60
+ deduplicatedUsers,
61
+ eventsInLastBatch,
62
+ streamInits: this.streamInits,
63
+ };
64
+ this.streamInits = [];
65
+ this.dataSinceDate = currentTime;
66
+ return evt;
67
+ }
68
+ }
69
+ exports.default = DiagnosticsManager;
70
+ //# sourceMappingURL=DiagnosticsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticsManager.js","sourceRoot":"","sources":["../../../src/internal/diagnostics/DiagnosticsManager.ts"],"names":[],"mappings":";;AAGA,MAAqB,kBAAkB;IAMrC,YACE,MAAc,EACG,QAAkB,EAClB,oBAAyB;QADzB,aAAQ,GAAR,QAAQ,CAAU;QAClB,yBAAoB,GAApB,oBAAoB,CAAK;QAPpC,gBAAW,GAAqB,EAAE,CAAC;QASzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,EAAE,GAAG;YACR,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE;YAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;SAC/E,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAEvD,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,GAAG,EAAE,OAAO;YACZ,aAAa,EAAE,IAAI,CAAC,oBAAoB;YACxC,QAAQ,kBACN,IAAI,EAAE,YAAY,CAAC,IAAI,EACvB,MAAM,EAAE,MAAA,YAAY,CAAC,EAAE,0CAAE,IAAI,EAC7B,MAAM,EAAE,MAAA,YAAY,CAAC,EAAE,0CAAE,IAAI,EAC7B,SAAS,EAAE,MAAA,YAAY,CAAC,EAAE,0CAAE,OAAO,IAChC,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,CACnC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,SAAiB,EAAE,MAAe,EAAE,cAAsB;QACzE,MAAM,IAAI,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,wBAAwB,CACtB,aAAqB,EACrB,iBAAyB,EACzB,iBAAyB;QAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAyB;YAChC,IAAI,EAAE,YAAY;YAClB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,YAAY,EAAE,WAAW;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa;YACb,iBAAiB;YACjB,iBAAiB;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AArFD,qCAqFC"}
@@ -0,0 +1,3 @@
1
+ import DiagnosticsManager from './DiagnosticsManager';
2
+ export { DiagnosticsManager };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/internal/diagnostics/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiagnosticsManager = void 0;
4
+ const DiagnosticsManager_1 = require("./DiagnosticsManager");
5
+ exports.DiagnosticsManager = DiagnosticsManager_1.default;
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/diagnostics/index.ts"],"names":[],"mappings":";;;AAAA,6DAAsD;AAG7C,6BAHF,4BAAkB,CAGE"}
@@ -0,0 +1,65 @@
1
+ export interface DiagnosticPlatformData {
2
+ name?: string;
3
+ osArch?: string;
4
+ osName?: string;
5
+ osVersion?: string;
6
+ /**
7
+ * Platform specific identifiers.
8
+ * For instance `nodeVersion`
9
+ */
10
+ [key: string]: string | undefined;
11
+ }
12
+ export interface DiagnosticSdkData {
13
+ name?: string;
14
+ wrapperName?: string;
15
+ wrapperVersion?: string;
16
+ }
17
+ export interface DiagnosticConfigData {
18
+ customBaseURI: boolean;
19
+ customStreamURI: boolean;
20
+ customEventsURI: boolean;
21
+ eventsCapacity: number;
22
+ connectTimeoutMillis: number;
23
+ socketTimeoutMillis: number;
24
+ eventsFlushIntervalMillis: number;
25
+ pollingIntervalMillis: number;
26
+ reconnectTimeMillis: number;
27
+ streamingDisabled: boolean;
28
+ usingRelayDaemon: boolean;
29
+ offline: boolean;
30
+ allAttributesPrivate: boolean;
31
+ contextKeysCapacity: number;
32
+ contextKeysFlushIntervalMillis: number;
33
+ usingProxy: boolean;
34
+ usingProxyAuthenticator: boolean;
35
+ diagnosticRecordingIntervalMillis: number;
36
+ dataStoreType: string;
37
+ }
38
+ export interface DiagnosticId {
39
+ diagnosticId: string;
40
+ sdkKeySuffix: string;
41
+ }
42
+ export interface DiagnosticInitEvent {
43
+ kind: 'diagnostic-init';
44
+ id: DiagnosticId;
45
+ creationDate: number;
46
+ sdk: DiagnosticSdkData;
47
+ configuration: DiagnosticConfigData;
48
+ platform: DiagnosticPlatformData;
49
+ }
50
+ export interface StreamInitData {
51
+ timestamp: number;
52
+ failed: boolean;
53
+ durationMillis: number;
54
+ }
55
+ export interface DiagnosticStatsEvent {
56
+ kind: 'diagnostic';
57
+ id: DiagnosticId;
58
+ creationDate: number;
59
+ dataSinceDate: number;
60
+ droppedEvents: number;
61
+ deduplicatedUsers: number;
62
+ eventsInLastBatch: number;
63
+ streamInits: StreamInitData[];
64
+ }
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/internal/diagnostics/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,MAAM,CAAC;IAClC,qBAAqB,EAAE,MAAM,CAAC;IAG9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8BAA8B,EAAE,MAAM,CAAC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,iCAAiC,EAAE,MAAM,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,YAAY,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,iBAAiB,CAAC;IACvB,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,EAAE,YAAY,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDEventOverrides.js.map
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/internal/diagnostics/types.ts"],"names":[],"mappings":""}
@@ -1,13 +1,8 @@
1
1
  import LDContextDeduplicator from '../../api/subsystem/LDContextDeduplicator';
2
2
  import LDEventProcessor from '../../api/subsystem/LDEventProcessor';
3
- import LDEventSender from '../../api/subsystem/LDEventSender';
4
- import ClientContext from '../../options/ClientContext';
3
+ import { ClientContext } from '../../options';
4
+ import { DiagnosticsManager } from '../diagnostics';
5
5
  import InputEvent from './InputEvent';
6
- /**
7
- * The event processor doesn't need to know anything about the shape of the
8
- * diagnostic events.
9
- */
10
- type DiagnosticEvent = any;
11
6
  export interface EventProcessorOptions {
12
7
  allAttributesPrivate: boolean;
13
8
  privateAttributes: string[];
@@ -15,14 +10,10 @@ export interface EventProcessorOptions {
15
10
  flushInterval: number;
16
11
  diagnosticRecordingInterval: number;
17
12
  }
18
- interface LDDiagnosticsManager {
19
- createInitEvent(): DiagnosticEvent;
20
- createStatsEventAndReset(droppedEvents: number, deduplicatedUsers: number, eventsInLastBatch: number): DiagnosticEvent;
21
- }
22
13
  export default class EventProcessor implements LDEventProcessor {
23
- private readonly eventSender;
24
- private readonly contextDeduplicator;
14
+ private readonly contextDeduplicator?;
25
15
  private readonly diagnosticsManager?;
16
+ private eventSender;
26
17
  private summarizer;
27
18
  private queue;
28
19
  private lastKnownPastTime;
@@ -37,7 +28,7 @@ export default class EventProcessor implements LDEventProcessor {
37
28
  private diagnosticsTimer;
38
29
  private flushTimer;
39
30
  private flushUsersTimer;
40
- constructor(config: EventProcessorOptions, clientContext: ClientContext, eventSender: LDEventSender, contextDeduplicator: LDContextDeduplicator, diagnosticsManager?: LDDiagnosticsManager | undefined);
31
+ constructor(config: EventProcessorOptions, clientContext: ClientContext, contextDeduplicator?: LDContextDeduplicator | undefined, diagnosticsManager?: DiagnosticsManager | undefined);
41
32
  private postDiagnosticEvent;
42
33
  close(): void;
43
34
  flush(): Promise<void>;
@@ -47,5 +38,4 @@ export default class EventProcessor implements LDEventProcessor {
47
38
  private shouldDebugEvent;
48
39
  private tryPostingEvents;
49
40
  }
50
- export {};
51
41
  //# sourceMappingURL=EventProcessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventProcessor.d.ts","sourceRoot":"","sources":["../../../src/internal/events/EventProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,qBAAqB,MAAM,2CAA2C,CAAC;AAC9E,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,aAAgD,MAAM,mCAAmC,CAAC;AAGjG,OAAO,aAAa,MAAM,6BAA6B,CAAC;AAGxD,OAAO,UAAU,MAAM,cAAc,CAAC;AA+CtC;;;GAGG;AACH,KAAK,eAAe,GAAG,GAAG,CAAC;AAe3B,MAAM,WAAW,qBAAqB;IACpC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,UAAU,oBAAoB;IAC5B,eAAe,IAAI,eAAe,CAAC;IACnC,wBAAwB,CACtB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,GACxB,eAAe,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,gBAAgB;IAkC3D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAnCtC,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,KAAK,CAAqB;IAElC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,MAAM,CAAC,CAAW;IAE1B,OAAO,CAAC,aAAa,CAAgB;IAIrC,OAAO,CAAC,gBAAgB,CAAM;IAE9B,OAAO,CAAC,UAAU,CAAM;IAExB,OAAO,CAAC,eAAe,CAAa;gBAGlC,MAAM,EAAE,qBAAqB,EAC7B,aAAa,EAAE,aAAa,EACX,WAAW,EAAE,aAAa,EAC1B,mBAAmB,EAAE,qBAAqB,EAC1C,kBAAkB,CAAC,kCAAsB;IA2C5D,OAAO,CAAC,mBAAmB;IAI3B,KAAK;IAUC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB5B,SAAS,CAAC,UAAU,EAAE,UAAU;IAiEhC,OAAO,CAAC,eAAe;IAuEvB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,gBAAgB;YASV,gBAAgB;CAc/B"}
1
+ {"version":3,"file":"EventProcessor.d.ts","sourceRoot":"","sources":["../../../src/internal/events/EventProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,qBAAqB,MAAM,2CAA2C,CAAC;AAC9E,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAIpD,OAAO,UAAU,MAAM,cAAc,CAAC;AAkEtC,MAAM,WAAW,qBAAqB;IACpC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,gBAAgB;IAuB3D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAvBtC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,aAAa,CAAgB;IAIrC,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,eAAe,CAAa;gBAGlC,MAAM,EAAE,qBAAqB,EAC7B,aAAa,EAAE,aAAa,EACX,mBAAmB,CAAC,mCAAuB,EAC3C,kBAAkB,CAAC,gCAAoB;IA6C1D,OAAO,CAAC,mBAAmB;IAI3B,KAAK;IAUC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB5B,SAAS,CAAC,UAAU,EAAE,UAAU;IA8DhC,OAAO,CAAC,eAAe;IAuEvB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,gBAAgB;YASV,gBAAgB;CAc/B"}
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const LDEventSender_1 = require("../../api/subsystem/LDEventSender");
3
+ const subsystem_1 = require("../../api/subsystem");
4
4
  const AttributeReference_1 = require("../../AttributeReference");
5
5
  const ContextFilter_1 = require("../../ContextFilter");
6
+ const EventSender_1 = require("./EventSender");
6
7
  const EventSummarizer_1 = require("./EventSummarizer");
7
8
  const guards_1 = require("./guards");
8
9
  const LDInvalidSDKKeyError_1 = require("./LDInvalidSDKKeyError");
9
10
  const sampling_1 = require("./sampling");
10
11
  class EventProcessor {
11
- constructor(config, clientContext, eventSender, contextDeduplicator, diagnosticsManager) {
12
- this.eventSender = eventSender;
12
+ constructor(config, clientContext, contextDeduplicator, diagnosticsManager) {
13
+ var _a;
13
14
  this.contextDeduplicator = contextDeduplicator;
14
15
  this.diagnosticsManager = diagnosticsManager;
15
16
  this.summarizer = new EventSummarizer_1.default();
@@ -23,18 +24,22 @@ class EventProcessor {
23
24
  this.flushUsersTimer = null;
24
25
  this.capacity = config.eventsCapacity;
25
26
  this.logger = clientContext.basicConfiguration.logger;
27
+ this.eventSender = new EventSender_1.default(clientContext);
26
28
  this.contextFilter = new ContextFilter_1.default(config.allAttributesPrivate, config.privateAttributes.map((ref) => new AttributeReference_1.default(ref)));
27
- if (this.contextDeduplicator.flushInterval !== undefined) {
29
+ if (((_a = this.contextDeduplicator) === null || _a === void 0 ? void 0 : _a.flushInterval) !== undefined) {
28
30
  this.flushUsersTimer = setInterval(() => {
29
- this.contextDeduplicator.flush();
31
+ var _a;
32
+ (_a = this.contextDeduplicator) === null || _a === void 0 ? void 0 : _a.flush();
30
33
  }, this.contextDeduplicator.flushInterval * 1000);
31
34
  }
32
35
  this.flushTimer = setInterval(async () => {
36
+ var _a;
33
37
  try {
34
38
  await this.flush();
35
39
  }
36
- catch (_a) {
37
- // Eat the errors.
40
+ catch (e) {
41
+ // Log errors and swallow them
42
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug(`Flush failed: ${e}`);
38
43
  }
39
44
  }, config.flushInterval * 1000);
40
45
  if (this.diagnosticsManager) {
@@ -49,7 +54,7 @@ class EventProcessor {
49
54
  }
50
55
  }
51
56
  postDiagnosticEvent(event) {
52
- this.eventSender.sendEventData(LDEventSender_1.LDEventType.DiagnosticEvent, event);
57
+ this.eventSender.sendEventData(subsystem_1.LDEventType.DiagnosticEvent, event);
53
58
  }
54
59
  close() {
55
60
  clearInterval(this.flushTimer);
@@ -80,6 +85,7 @@ class EventProcessor {
80
85
  await this.tryPostingEvents(eventsToFlush);
81
86
  }
82
87
  sendEvent(inputEvent) {
88
+ var _a;
83
89
  if (this.shutdown) {
84
90
  return;
85
91
  }
@@ -101,9 +107,7 @@ class EventProcessor {
101
107
  const addFullEvent = (isFeatureEvent && inputEvent.trackEvents) || !isFeatureEvent;
102
108
  const addDebugEvent = this.shouldDebugEvent(inputEvent);
103
109
  const isIdentifyEvent = (0, guards_1.isIdentify)(inputEvent);
104
- // We only want to notify the de-duplicator if we would sample the index event.
105
- // Otherwise we could deduplicate and then not send the event.
106
- const shouldNotDeduplicate = this.contextDeduplicator.processContext(inputEvent.context);
110
+ const shouldNotDeduplicate = (_a = this.contextDeduplicator) === null || _a === void 0 ? void 0 : _a.processContext(inputEvent.context);
107
111
  // If there is no cache, then it will never be in the cache.
108
112
  if (!shouldNotDeduplicate) {
109
113
  if (!isIdentifyEvent) {
@@ -111,12 +115,12 @@ class EventProcessor {
111
115
  }
112
116
  }
113
117
  const addIndexEvent = shouldNotDeduplicate && !isIdentifyEvent;
114
- if (addIndexEvent && (0, sampling_1.default)(inputEvent.indexSamplingRatio)) {
118
+ if (addIndexEvent) {
115
119
  this.enqueue(this.makeOutputEvent({
116
120
  kind: 'index',
117
121
  creationDate: inputEvent.creationDate,
118
122
  context: inputEvent.context,
119
- samplingRatio: inputEvent.indexSamplingRatio,
123
+ samplingRatio: 1,
120
124
  }, false));
121
125
  }
122
126
  if (addFullEvent && (0, sampling_1.default)(inputEvent.samplingRatio)) {
@@ -215,8 +219,8 @@ class EventProcessor {
215
219
  event.debugEventsUntilDate > Date.now());
216
220
  }
217
221
  async tryPostingEvents(events) {
218
- const res = await this.eventSender.sendEventData(LDEventSender_1.LDEventType.AnalyticsEvents, events);
219
- if (res.status === LDEventSender_1.LDDeliveryStatus.FailedAndMustShutDown) {
222
+ const res = await this.eventSender.sendEventData(subsystem_1.LDEventType.AnalyticsEvents, events);
223
+ if (res.status === subsystem_1.LDDeliveryStatus.FailedAndMustShutDown) {
220
224
  this.shutdown = true;
221
225
  }
222
226
  if (res.serverTime) {