@launchdarkly/js-client-sdk-common 1.12.6 → 1.14.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 (36) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/cjs/HookRunner.d.ts +2 -1
  3. package/dist/cjs/HookRunner.d.ts.map +1 -1
  4. package/dist/cjs/LDClientImpl.d.ts +2 -1
  5. package/dist/cjs/LDClientImpl.d.ts.map +1 -1
  6. package/dist/cjs/api/integrations/Hooks.d.ts +31 -2
  7. package/dist/cjs/api/integrations/Hooks.d.ts.map +1 -1
  8. package/dist/cjs/async/AsyncTaskQueue.d.ts +67 -0
  9. package/dist/cjs/async/AsyncTaskQueue.d.ts.map +1 -0
  10. package/dist/cjs/configuration/Configuration.d.ts +7 -1
  11. package/dist/cjs/configuration/Configuration.d.ts.map +1 -1
  12. package/dist/cjs/events/createEventProcessor.d.ts.map +1 -1
  13. package/dist/cjs/index.cjs +79 -5
  14. package/dist/cjs/index.cjs.map +1 -1
  15. package/dist/cjs/index.d.ts +1 -1
  16. package/dist/cjs/index.d.ts.map +1 -1
  17. package/dist/cjs/plugins/createPluginEnvironmentMetadata.d.ts +4 -0
  18. package/dist/cjs/plugins/createPluginEnvironmentMetadata.d.ts.map +1 -0
  19. package/dist/esm/HookRunner.d.ts +2 -1
  20. package/dist/esm/HookRunner.d.ts.map +1 -1
  21. package/dist/esm/LDClientImpl.d.ts +2 -1
  22. package/dist/esm/LDClientImpl.d.ts.map +1 -1
  23. package/dist/esm/api/integrations/Hooks.d.ts +31 -2
  24. package/dist/esm/api/integrations/Hooks.d.ts.map +1 -1
  25. package/dist/esm/async/AsyncTaskQueue.d.ts +67 -0
  26. package/dist/esm/async/AsyncTaskQueue.d.ts.map +1 -0
  27. package/dist/esm/configuration/Configuration.d.ts +7 -1
  28. package/dist/esm/configuration/Configuration.d.ts.map +1 -1
  29. package/dist/esm/events/createEventProcessor.d.ts.map +1 -1
  30. package/dist/esm/index.d.ts +1 -1
  31. package/dist/esm/index.d.ts.map +1 -1
  32. package/dist/esm/index.mjs +79 -5
  33. package/dist/esm/index.mjs.map +1 -1
  34. package/dist/esm/plugins/createPluginEnvironmentMetadata.d.ts +4 -0
  35. package/dist/esm/plugins/createPluginEnvironmentMetadata.d.ts.map +1 -0
  36. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.14.0](https://github.com/launchdarkly/js-core/compare/js-client-sdk-common-v1.13.0...js-client-sdk-common-v1.14.0) (2025-05-21)
4
+
5
+
6
+ ### Features
7
+
8
+ * Add support for per-context summary events. ([#859](https://github.com/launchdarkly/js-core/issues/859)) ([c9fa5c4](https://github.com/launchdarkly/js-core/commit/c9fa5c45f3ac2cbaad2f2e6312d5231c3f671d98))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @launchdarkly/js-sdk-common bumped from 2.17.0 to 2.18.0
16
+
17
+ ## [1.13.0](https://github.com/launchdarkly/js-core/compare/js-client-sdk-common-v1.12.6...js-client-sdk-common-v1.13.0) (2025-04-29)
18
+
19
+
20
+ ### Features
21
+
22
+ * Add client-side SDK plugin support. ([#834](https://github.com/launchdarkly/js-core/issues/834)) ([a843a33](https://github.com/launchdarkly/js-core/commit/a843a33e97dcab706a0034bd1fd1e3d2f78a9262))
23
+ * Add hook support for the track series. ([#827](https://github.com/launchdarkly/js-core/issues/827)) ([1519cb9](https://github.com/launchdarkly/js-core/commit/1519cb98b55f4e6a391da7adefddd8ac90e9258c))
24
+
25
+
26
+ ### Dependencies
27
+
28
+ * The following workspace dependencies were updated
29
+ * dependencies
30
+ * @launchdarkly/js-sdk-common bumped from 2.16.0 to 2.17.0
31
+
3
32
  ## [1.12.6](https://github.com/launchdarkly/js-core/compare/js-client-sdk-common-v1.12.5...js-client-sdk-common-v1.12.6) (2025-04-16)
4
33
 
5
34
 
@@ -1,5 +1,5 @@
1
1
  import { LDContext, LDLogger } from '@launchdarkly/js-sdk-common';
2
- import { Hook, IdentifySeriesResult } from './api/integrations/Hooks';
2
+ import { Hook, IdentifySeriesResult, TrackSeriesContext } from './api/integrations/Hooks';
3
3
  import { LDEvaluationDetail } from './api/LDEvaluationDetail';
4
4
  export default class HookRunner {
5
5
  private readonly _logger;
@@ -8,5 +8,6 @@ export default class HookRunner {
8
8
  withEvaluation(key: string, context: LDContext | undefined, defaultValue: unknown, method: () => LDEvaluationDetail): LDEvaluationDetail;
9
9
  identify(context: LDContext, timeout: number | undefined): (result: IdentifySeriesResult) => void;
10
10
  addHook(hook: Hook): void;
11
+ afterTrack(hookContext: TrackSeriesContext): void;
11
12
  }
12
13
  //# sourceMappingURL=HookRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HookRunner.d.ts","sourceRoot":"","sources":["../src/HookRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAGL,IAAI,EAGJ,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AA0G9D,MAAM,CAAC,OAAO,OAAO,UAAU;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAGlB,OAAO,EAAE,QAAQ,EAClC,YAAY,EAAE,IAAI,EAAE;IAKtB,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,MAAM,kBAAkB,GAC/B,kBAAkB;IAiBrB,QAAQ,CACN,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI;IAYzC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAG1B"}
1
+ {"version":3,"file":"HookRunner.d.ts","sourceRoot":"","sources":["../src/HookRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAGL,IAAI,EAGJ,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AA0H9D,MAAM,CAAC,OAAO,OAAO,UAAU;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAGlB,OAAO,EAAE,QAAQ,EAClC,YAAY,EAAE,IAAI,EAAE;IAKtB,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,MAAM,kBAAkB,GAC/B,kBAAkB;IAiBrB,QAAQ,CACN,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI;IAYzC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,UAAU,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;CAOlD"}
@@ -1,4 +1,4 @@
1
- import { AutoEnvAttributes, Context, internal, LDContext, LDFlagSet, LDFlagValue, LDLogger, Platform } from '@launchdarkly/js-sdk-common';
1
+ import { AutoEnvAttributes, Context, internal, LDContext, LDFlagSet, LDFlagValue, LDLogger, LDPluginEnvironmentMetadata, Platform } from '@launchdarkly/js-sdk-common';
2
2
  import { Hook, LDClient, type LDOptions } from './api';
3
3
  import { LDEvaluationDetail, LDEvaluationDetailTyped } from './api/LDEvaluationDetail';
4
4
  import { LDIdentifyOptions } from './api/LDIdentifyOptions';
@@ -23,6 +23,7 @@ export default class LDClientImpl implements LDClient {
23
23
  private _eventSendingEnabled;
24
24
  private _baseHeaders;
25
25
  protected dataManager: DataManager;
26
+ protected readonly environmentMetadata: LDPluginEnvironmentMetadata;
26
27
  private _hookRunner;
27
28
  private _inspectorManager;
28
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"LDClientImpl.d.ts","sourceRoot":"","sources":["../src/LDClientImpl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LDClientImpl.d.ts","sourceRoot":"","sources":["../src/LDClientImpl.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,OAAO,EAEP,QAAQ,EAER,SAAS,EACT,SAAS,EACT,WAAW,EAEX,QAAQ,EACR,2BAA2B,EAC3B,QAAQ,EAGT,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAoC,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG5F,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAahE,OAAO,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOnD,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,QAAQ;aA0BjC,MAAM,EAAE,MAAM;aACd,iBAAiB,EAAE,iBAAiB;aACpC,QAAQ,EAAE,QAAQ;IA3BpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,iBAAiB,CAAC,CAAY;IACtC,OAAO,CAAC,eAAe,CAAC,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAA8B;IACnE,OAAO,CAAC,eAAe,CAAC,CAA0B;IAClD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAc;IAEpD,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,wBAAwB,CAA0B;IAC1D,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC;IAC7B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,YAAY,CAAY;IAChC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;IACpE,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAmB;IAE5C;;OAEG;gBAEe,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,QAAQ,EAClC,OAAO,EAAE,SAAS,EAClB,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,CAAC,EAAE,uBAAuB;IA4E3C,QAAQ,IAAI,SAAS;IAcf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,KAAK,IAAI,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAY1D,UAAU,IAAI,SAAS,GAAG,SAAS;IASnC,SAAS,CAAC,kBAAkB,IAAI,OAAO,GAAG,SAAS;IAInD,OAAO,CAAC,sBAAsB;IA+B9B;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD9F,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIlD,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAInD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IA0B1D,OAAO,CAAC,kBAAkB;IAuE1B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW;IASnE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,kBAAkB;IAMhF,OAAO,CAAC,UAAU;IAWlB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO;IAO1D,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO;IAI1D,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAO1D,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAO1D,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC;IAOzF,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAOzF,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAOzF,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC;IAIzF,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IA2BxE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,GAAG,IAAI;IAIrD,OAAO,CAAC,wBAAwB;CA6BjC"}
@@ -74,6 +74,27 @@ export type IdentifySeriesStatus = 'completed' | 'error';
74
74
  export interface IdentifySeriesResult {
75
75
  status: IdentifySeriesStatus;
76
76
  }
77
+ /**
78
+ * Contextual information provided to track stages.
79
+ */
80
+ export interface TrackSeriesContext {
81
+ /**
82
+ * The key for the event being tracked.
83
+ */
84
+ readonly key: string;
85
+ /**
86
+ * The context associated with the track operation.
87
+ */
88
+ readonly context: LDContext;
89
+ /**
90
+ * The data associated with the track operation.
91
+ */
92
+ readonly data?: unknown;
93
+ /**
94
+ * The metric value associated with the track operation.
95
+ */
96
+ readonly metricValue?: number;
97
+ }
77
98
  /**
78
99
  * Interface for extending SDK functionality via hooks.
79
100
  */
@@ -133,8 +154,8 @@ export interface Hook {
133
154
  */
134
155
  beforeIdentify?(hookContext: IdentifySeriesContext, data: IdentifySeriesData): IdentifySeriesData;
135
156
  /**
136
- * This method is called during the execution of the identify process before the operation
137
- * completes, but after any context modifications are performed.
157
+ * This method is called during the execution of the identify process, after the operation
158
+ * completes.
138
159
  *
139
160
  * @param hookContext Contains information about the evaluation being performed. This is not
140
161
  * mutable.
@@ -148,5 +169,13 @@ export interface Hook {
148
169
  * ```
149
170
  */
150
171
  afterIdentify?(hookContext: IdentifySeriesContext, data: IdentifySeriesData, result: IdentifySeriesResult): IdentifySeriesData;
172
+ /**
173
+ * This method is called during the execution of the track process after the event
174
+ * has been enqueued.
175
+ *
176
+ * @param hookContext Contains information about the track operation being performed. This is not
177
+ * mutable.
178
+ */
179
+ afterTrack?(hookContext: TrackSeriesContext): void;
151
180
  }
152
181
  //# sourceMappingURL=Hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hooks.d.ts","sourceRoot":"","sources":["../../../src/api/integrations/Hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAOhC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,OAAO,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,WAAW,IAAI,YAAY,CAAC;IAE5B;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,CACf,WAAW,EAAE,uBAAuB,EACpC,IAAI,EAAE,oBAAoB,GACzB,oBAAoB,CAAC;IAExB;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,CACd,WAAW,EAAE,uBAAuB,EACpC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,kBAAkB,GACzB,oBAAoB,CAAC;IAExB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,CAAC,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;IAElG;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,CACZ,WAAW,EAAE,qBAAqB,EAClC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,oBAAoB,GAC3B,kBAAkB,CAAC;CACvB"}
1
+ {"version":3,"file":"Hooks.d.ts","sourceRoot":"","sources":["../../../src/api/integrations/Hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAOhC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,OAAO,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,WAAW,IAAI,YAAY,CAAC;IAE5B;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,CACf,WAAW,EAAE,uBAAuB,EACpC,IAAI,EAAE,oBAAoB,GACzB,oBAAoB,CAAC;IAExB;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,CACd,WAAW,EAAE,uBAAuB,EACpC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,kBAAkB,GACzB,oBAAoB,CAAC;IAExB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,CAAC,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;IAElG;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,CACZ,WAAW,EAAE,qBAAqB,EAClC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,oBAAoB,GAC3B,kBAAkB,CAAC;IAEtB;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACpD"}
@@ -0,0 +1,67 @@
1
+ import { LDLogger } from '@launchdarkly/js-sdk-common';
2
+ /**
3
+ * Represents a task that has been shed from the queue.
4
+ * This task will never be executed.
5
+ */
6
+ export interface ShedTask {
7
+ status: 'shed';
8
+ }
9
+ /**
10
+ * Represents a task that has been ran to completion.
11
+ */
12
+ export interface CompletedTask<TTaskResult> {
13
+ status: 'complete';
14
+ result: TTaskResult;
15
+ }
16
+ /**
17
+ * Represents a task that has errored.
18
+ */
19
+ export interface ErroredTask {
20
+ status: 'error';
21
+ error: Error;
22
+ }
23
+ /**
24
+ * Represents the result of a task.
25
+ */
26
+ export type TaskResult<TTaskResult> = CompletedTask<TTaskResult> | ErroredTask | ShedTask;
27
+ /**
28
+ * An asynchronous task queue with the ability to replace pending tasks.
29
+ *
30
+ * This is useful when you have asynchronous operations which much execute in order, and for cases where intermediate
31
+ * operations can be discarded.
32
+ *
33
+ * For instance, the SDK can only have one active context at a time, if you request identification of many contexts,
34
+ * then the ultimate state will be based on the last request. The intermediate identifies can be discarded.
35
+ *
36
+ * This class will always begin execution of the first item added to the queue, at that point the item itself is not
37
+ * queued, but active. If another request is made while that item is still active, then it is added to the queue.
38
+ * A third request would then replace the second request if the second request had not yet become active, and it was
39
+ * sheddable.
40
+ *
41
+ * Once a task is active the queue will complete it. It doesn't cancel tasks that it has started, but it can shed tasks
42
+ * that have not started.
43
+ *
44
+ * TTaskResult Is the return type of the task to be executed. Tasks accept no parameters. So if you need parameters
45
+ * you should use a lambda to capture them.
46
+ *
47
+ * Exceptions from tasks are always handled and the execute method will never reject a promise.
48
+ *
49
+ * Queue management should be done synchronously. There should not be asynchronous operations between checking the queue
50
+ * and acting on the results of said check.
51
+ */
52
+ export declare class AsyncTaskQueue<TTaskResult> {
53
+ private readonly _logger?;
54
+ private _activeTask?;
55
+ private _queue;
56
+ constructor(_logger?: LDLogger | undefined);
57
+ /**
58
+ * Execute a task using the queue.
59
+ *
60
+ * @param task The async function to execute.
61
+ * @param sheddable Whether the task can be shed from the queue.
62
+ * @returns A promise that resolves to the result of the task.
63
+ */
64
+ execute(task: () => Promise<TTaskResult>, sheddable?: boolean): Promise<TaskResult<TTaskResult>>;
65
+ private _checkPending;
66
+ }
67
+ //# sourceMappingURL=AsyncTaskQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncTaskQueue.d.ts","sourceRoot":"","sources":["../../src/async/AsyncTaskQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,WAAW;IACxC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,QAAQ,CAAC;AA2D1F;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,cAAc,CAAC,WAAW;IAIzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAHrC,OAAO,CAAC,WAAW,CAAC,CAAmC;IACvD,OAAO,CAAC,MAAM,CAAkC;gBAEnB,OAAO,CAAC,sBAAU;IAE/C;;;;;;OAMG;IACH,OAAO,CACL,IAAI,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,EAChC,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAoBnC,OAAO,CAAC,aAAa;CA6BtB"}
@@ -1,8 +1,10 @@
1
- import { ApplicationTags, internal, LDFlagSet, LDLogger, ServiceEndpoints } from '@launchdarkly/js-sdk-common';
1
+ import { ApplicationTags, internal, LDFlagSet, LDLogger, LDPluginEnvironmentMetadata, ServiceEndpoints } from '@launchdarkly/js-sdk-common';
2
2
  import { Hook, type LDOptions } from '../api';
3
3
  import { LDInspection } from '../api/LDInspection';
4
4
  export interface LDClientInternalOptions extends internal.LDInternalOptions {
5
5
  trackEventModifier?: (event: internal.InputCustomEvent) => internal.InputCustomEvent;
6
+ getImplementationHooks: (environmentMetadata: LDPluginEnvironmentMetadata) => Hook[];
7
+ credentialType: 'clientSideId' | 'mobileKey';
6
8
  }
7
9
  export interface Configuration {
8
10
  readonly logger: LDLogger;
@@ -38,6 +40,8 @@ export interface Configuration {
38
40
  readonly trackEventModifier: (event: internal.InputCustomEvent) => internal.InputCustomEvent;
39
41
  readonly hooks: Hook[];
40
42
  readonly inspectors: LDInspection[];
43
+ readonly credentialType: 'clientSideId' | 'mobileKey';
44
+ readonly getImplementationHooks: (environmentMetadata: LDPluginEnvironmentMetadata) => Hook[];
41
45
  }
42
46
  declare const DEFAULT_POLLING: string;
43
47
  declare const DEFAULT_STREAM: string;
@@ -79,6 +83,8 @@ export default class ConfigurationImpl implements Configuration {
79
83
  readonly hooks: Hook[];
80
84
  readonly inspectors: LDInspection[];
81
85
  readonly trackEventModifier: (event: internal.InputCustomEvent) => internal.InputCustomEvent;
86
+ readonly credentialType: 'clientSideId' | 'mobileKey';
87
+ readonly getImplementationHooks: (environmentMetadata: LDPluginEnvironmentMetadata) => Hook[];
82
88
  [index: string]: any;
83
89
  constructor(pristineOptions?: LDOptions, internalOptions?: LDClientInternalOptions);
84
90
  private _validateTypesAndNames;
@@ -1 +1 @@
1
- {"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../src/configuration/Configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,QAAQ,EACR,SAAS,EACT,QAAQ,EAIR,gBAAgB,EAEjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD,MAAM,WAAW,uBAAwB,SAAQ,QAAQ,CAAC,iBAAiB;IACzE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,CAAC,gBAAgB,CAAC;CACtF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,YAAY,GAAG,2BAA2B,CAAC;IACzE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,CAAC,gBAAgB,CAAC;IAC7F,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC;CACrC;AAED,QAAA,MAAM,eAAe,EAAE,MAA6C,CAAC;AACrE,QAAA,MAAM,cAAc,EAAE,MAAgD,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;AAU3C,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,aAAa;IAC7D,SAAgB,MAAM,EAAE,QAAQ,CAAsB;IAKtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAE3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAE7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAE5C,SAAgB,iBAAiB,KAAK;IAEtC,SAAgB,QAAQ,OAAO;IAC/B,SAAgB,2BAA2B,OAAO;IAClD,SAAgB,aAAa,MAAM;IACnC,SAAgB,2BAA2B,KAAK;IAEhD,SAAgB,oBAAoB,EAAE,OAAO,CAAS;IACtD,SAAgB,KAAK,EAAE,OAAO,CAAS;IACvC,SAAgB,gBAAgB,EAAE,OAAO,CAAS;IAClD,SAAgB,UAAU,EAAE,OAAO,CAAQ;IAC3C,SAAgB,aAAa,EAAE,OAAO,CAAQ;IAE9C,SAAgB,SAAS,EAAE,OAAO,CAAS;IAC3C,SAAgB,WAAW,EAAE,OAAO,CAAS;IAE7C,SAAgB,iBAAiB,EAAE,MAAM,EAAE,CAAM;IAEjD,SAAgB,IAAI,EAAE,eAAe,CAAC;IACtC,SAAgB,eAAe,CAAC,EAAE;QAChC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAgB,SAAS,CAAC,EAAE,SAAS,CAAC;IAGtC,SAAgB,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/F,SAAgB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,SAAgB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExC,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;IAEnD,SAAgB,YAAY,EAAE,MAAM,CAA4B;IAEhE,SAAgB,mBAAmB,EAAE,YAAY,GAAG,2BAA2B,CAAC;IAEhF,SAAgB,KAAK,EAAE,IAAI,EAAE,CAAM;IAEnC,SAAgB,UAAU,EAAE,YAAY,EAAE,CAAM;IAEhD,SAAgB,kBAAkB,EAAE,CAClC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,KAC7B,QAAQ,CAAC,gBAAgB,CAAC;IAG/B,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;gBAET,eAAe,GAAE,SAAc,EAAE,eAAe,GAAE,uBAA4B;IAqB1F,OAAO,CAAC,sBAAsB;CAuC/B"}
1
+ {"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../src/configuration/Configuration.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createEventProcessor.d.ts","sourceRoot":"","sources":["../../src/events/createEventProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,QAAA,MAAM,oBAAoB,iBACV,MAAM,UACZ,aAAa,YACX,QAAQ,eACL,SAAS,uBACD,SAAS,kBAAkB,KAC/C,SAAS,cAAc,GAAG,SAa5B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"createEventProcessor.d.ts","sourceRoot":"","sources":["../../src/events/createEventProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,QAAA,MAAM,oBAAoB,iBACV,MAAM,UACZ,aAAa,YACX,QAAQ,eACL,SAAS,uBACD,SAAS,kBAAkB,KAC/C,SAAS,cAAc,GAAG,SAc5B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -136,7 +136,10 @@ function ensureSafeLogger(logger) {
136
136
  return jsSdkCommon.createSafeLogger(logger);
137
137
  }
138
138
  class ConfigurationImpl {
139
- constructor(pristineOptions = {}, internalOptions = {}) {
139
+ constructor(pristineOptions = {}, internalOptions = {
140
+ getImplementationHooks: () => [],
141
+ credentialType: 'mobileKey',
142
+ }) {
140
143
  this.logger = jsSdkCommon.createSafeLogger();
141
144
  // Naming conventions is not followed for these lines because the config validation
142
145
  // accesses members based on the keys of the options. (sdk-763)
@@ -170,6 +173,8 @@ class ConfigurationImpl {
170
173
  this.tags = new jsSdkCommon.ApplicationTags({ application: this.applicationInfo, logger: this.logger });
171
174
  this.userAgentHeaderName = internalOptions.userAgentHeaderName ?? 'user-agent';
172
175
  this.trackEventModifier = internalOptions.trackEventModifier ?? ((event) => event);
176
+ this.credentialType = internalOptions.credentialType;
177
+ this.getImplementationHooks = internalOptions.getImplementationHooks;
173
178
  }
174
179
  _validateTypesAndNames(pristineOptions) {
175
180
  const errors = [];
@@ -489,7 +494,7 @@ function createSuccessEvaluationDetail(value, variationIndex, reason) {
489
494
 
490
495
  const createEventProcessor = (clientSideID, config, platform, baseHeaders, diagnosticsManager) => {
491
496
  if (config.sendEvents) {
492
- return new jsSdkCommon.internal.EventProcessor({ ...config, eventsCapacity: config.capacity }, new jsSdkCommon.ClientContext(clientSideID, config, platform), baseHeaders, undefined, diagnosticsManager, false);
497
+ return new jsSdkCommon.internal.EventProcessor({ ...config, eventsCapacity: config.capacity }, new jsSdkCommon.ClientContext(clientSideID, config, platform), baseHeaders, undefined, diagnosticsManager, false, true);
493
498
  }
494
499
  return undefined;
495
500
  };
@@ -846,6 +851,7 @@ class DefaultFlagManager {
846
851
  const UNKNOWN_HOOK_NAME = 'unknown hook';
847
852
  const BEFORE_EVALUATION_STAGE_NAME = 'beforeEvaluation';
848
853
  const AFTER_EVALUATION_STAGE_NAME = 'afterEvaluation';
854
+ const AFTER_TRACK_STAGE_NAME = 'afterTrack';
849
855
  function tryExecuteStage(logger, method, hookName, stage, def) {
850
856
  try {
851
857
  return stage();
@@ -888,6 +894,14 @@ function executeAfterIdentify(logger, hooks, hookContext, updatedData, result) {
888
894
  tryExecuteStage(logger, AFTER_EVALUATION_STAGE_NAME, getHookName(logger, hook), () => hook?.afterIdentify?.(hookContext, data, result) ?? {}, {});
889
895
  }
890
896
  }
897
+ function executeAfterTrack(logger, hooks, hookContext) {
898
+ // This iterates in reverse, versus reversing a shallow copy of the hooks,
899
+ // for efficiency.
900
+ for (let hookIndex = hooks.length - 1; hookIndex >= 0; hookIndex -= 1) {
901
+ const hook = hooks[hookIndex];
902
+ tryExecuteStage(logger, AFTER_TRACK_STAGE_NAME, getHookName(logger, hook), () => hook?.afterTrack?.(hookContext), undefined);
903
+ }
904
+ }
891
905
  class HookRunner {
892
906
  constructor(_logger, initialHooks) {
893
907
  this._logger = _logger;
@@ -923,6 +937,13 @@ class HookRunner {
923
937
  addHook(hook) {
924
938
  this._hooks.push(hook);
925
939
  }
940
+ afterTrack(hookContext) {
941
+ if (this._hooks.length === 0) {
942
+ return;
943
+ }
944
+ const hooks = [...this._hooks];
945
+ executeAfterTrack(this._logger, hooks, hookContext);
946
+ }
926
947
  }
927
948
 
928
949
  function getInspectorHook(inspectorManager) {
@@ -1136,8 +1157,49 @@ class LDEmitter {
1136
1157
  }
1137
1158
  }
1138
1159
 
1160
+ function createPluginEnvironmentMetadata(sdkKey, platform, config) {
1161
+ const sdkData = platform.info.sdkData();
1162
+ let applicationMetadata;
1163
+ if (config.applicationInfo) {
1164
+ if (config.applicationInfo.id) {
1165
+ applicationMetadata = applicationMetadata ?? {};
1166
+ applicationMetadata.id = config.applicationInfo.id;
1167
+ }
1168
+ if (config.applicationInfo.version) {
1169
+ applicationMetadata = applicationMetadata ?? {};
1170
+ applicationMetadata.version = config.applicationInfo.version;
1171
+ }
1172
+ if (config.applicationInfo.name) {
1173
+ applicationMetadata = applicationMetadata ?? {};
1174
+ applicationMetadata.name = config.applicationInfo.name;
1175
+ }
1176
+ if (config.applicationInfo.versionName) {
1177
+ applicationMetadata = applicationMetadata ?? {};
1178
+ applicationMetadata.versionName = config.applicationInfo.versionName;
1179
+ }
1180
+ }
1181
+ const sdkMetadata = {
1182
+ name: sdkData.userAgentBase,
1183
+ version: sdkData.version,
1184
+ };
1185
+ if (sdkData.wrapperName) {
1186
+ sdkMetadata.wrapperName = sdkData.wrapperName;
1187
+ }
1188
+ if (sdkData.wrapperVersion) {
1189
+ sdkMetadata.wrapperVersion = sdkData.wrapperVersion;
1190
+ }
1191
+ const environmentMetadata = {
1192
+ sdk: sdkMetadata,
1193
+ [config.credentialType]: sdkKey,
1194
+ };
1195
+ if (applicationMetadata) {
1196
+ environmentMetadata.application = applicationMetadata;
1197
+ }
1198
+ return environmentMetadata;
1199
+ }
1200
+
1139
1201
  const { ClientMessages, ErrorKinds } = jsSdkCommon.internal;
1140
- const DEFAULT_IDENIFY_TIMEOUT_SECONDS = 5;
1202
+ const DEFAULT_IDENTIFY_TIMEOUT_SECONDS = 5;
1141
1203
  class LDClientImpl {
1142
1204
  /**
1143
1205
  * Creates the client object synchronously. No async, no network calls.
@@ -1175,7 +1237,12 @@ class LDClientImpl {
1175
1237
  });
1176
1238
  });
1177
1239
  this.dataManager = dataManagerFactory(this._flagManager, this._config, this._baseHeaders, this.emitter, this._diagnosticsManager);
1178
- this._hookRunner = new HookRunner(this.logger, this._config.hooks);
1240
+ const hooks = [...this._config.hooks];
1241
+ this.environmentMetadata = createPluginEnvironmentMetadata(this.sdkKey, this.platform, this._config);
1242
+ this._config.getImplementationHooks(this.environmentMetadata).forEach((hook) => {
1243
+ hooks.push(hook);
1244
+ });
1245
+ this._hookRunner = new HookRunner(this.logger, hooks);
1179
1246
  this._inspectorManager = new InspectorManager(this._config.inspectors, this.logger);
1180
1247
  if (this._inspectorManager.hasInspectors()) {
1181
1248
  this._hookRunner.addHook(getInspectorHook(this._inspectorManager));
@@ -1254,7 +1321,7 @@ class LDClientImpl {
1254
1321
  * 3. A network error is encountered during initialization.
1255
1322
  */
1256
1323
  async identify(pristineContext, identifyOptions) {
1257
- const identifyTimeout = identifyOptions?.timeout ?? DEFAULT_IDENIFY_TIMEOUT_SECONDS;
1324
+ const identifyTimeout = identifyOptions?.timeout ?? DEFAULT_IDENTIFY_TIMEOUT_SECONDS;
1258
1325
  const noTimeout = identifyOptions?.timeout === undefined && identifyOptions?.noTimeout === true;
1259
1326
  // When noTimeout is specified, and a timeout is not secified, then this condition cannot
1260
1327
  // be encountered. (Our default would need to be greater)
@@ -1304,6 +1371,13 @@ class LDClientImpl {
1304
1371
  this.logger?.warn(ClientMessages.invalidMetricValue(typeof metricValue));
1305
1372
  }
1306
1373
  this._eventProcessor?.sendEvent(this._config.trackEventModifier(this._eventFactoryDefault.customEvent(key, this._checkedContext, data, metricValue)));
1374
+ this._hookRunner.afterTrack({
1375
+ key,
1376
+ // The context is pre-checked above, so we know it can be unwrapped.
1377
+ context: this._uncheckedContext,
1378
+ data,
1379
+ metricValue,
1380
+ });
1307
1381
  }
1308
1382
  _variationInternal(flagKey, defaultValue, eventFactory, typeChecker) {
1309
1383
  if (!this._uncheckedContext) {