@envive-ai/react-hooks 0.3.62 → 0.3.64

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 (105) hide show
  1. package/dist/application/models/featureGates.cjs +2 -1
  2. package/dist/application/models/featureGates.d.cts +2 -1
  3. package/dist/application/models/featureGates.d.ts +2 -1
  4. package/dist/application/models/featureGates.js +2 -1
  5. package/dist/application/utils/widgetTextRequestToApiRequest.cjs +1 -0
  6. package/dist/application/utils/widgetTextRequestToApiRequest.js +1 -1
  7. package/dist/atoms/app/variant.d.cts +6 -6
  8. package/dist/atoms/chat/chatState.d.cts +1 -1
  9. package/dist/atoms/chat/chatState.d.ts +19 -19
  10. package/dist/atoms/chat/form.d.cts +2 -2
  11. package/dist/atoms/chat/form.d.ts +2 -2
  12. package/dist/atoms/chat/index.d.cts +2 -2
  13. package/dist/atoms/chat/index.d.ts +3 -3
  14. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  15. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  16. package/dist/atoms/chat/messageQueue.d.cts +7 -7
  17. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  18. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  19. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  20. package/dist/atoms/chat/renderedWidgetRefs.d.cts +3 -3
  21. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  22. package/dist/atoms/chat/replies.d.cts +3 -3
  23. package/dist/atoms/chat/replies.d.ts +3 -3
  24. package/dist/atoms/chat/suggestions.d.cts +3 -3
  25. package/dist/atoms/chat/suggestions.d.ts +2 -2
  26. package/dist/atoms/envive/enviveConfig.d.cts +13 -13
  27. package/dist/atoms/envive/enviveConfig.d.ts +14 -14
  28. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  29. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  30. package/dist/atoms/org/customerService.d.cts +6 -6
  31. package/dist/atoms/org/customerService.d.ts +6 -6
  32. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  33. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  34. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  35. package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
  36. package/dist/atoms/search/chatSearch.d.ts +17 -17
  37. package/dist/atoms/search/searchAPI.d.ts +13 -13
  38. package/dist/atoms/search/utils.d.ts +1 -1
  39. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  40. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  41. package/dist/contexts/types.d.cts +1 -1
  42. package/dist/contexts/types.d.ts +1 -1
  43. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  44. package/dist/hooks/Intersection/useIntersection.cjs +9 -2
  45. package/dist/hooks/Intersection/useIntersection.d.cts +2 -2
  46. package/dist/hooks/Intersection/useIntersection.d.ts +2 -2
  47. package/dist/hooks/Intersection/useIntersection.js +9 -2
  48. package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
  49. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +12 -3
  50. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +2 -1
  51. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +2 -1
  52. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +13 -4
  53. package/dist/hooks/WidgetLoadDiagnostics/index.cjs +4 -0
  54. package/dist/hooks/WidgetLoadDiagnostics/index.d.cts +2 -0
  55. package/dist/hooks/WidgetLoadDiagnostics/index.d.ts +2 -0
  56. package/dist/hooks/WidgetLoadDiagnostics/index.js +3 -0
  57. package/dist/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.cjs +122 -0
  58. package/dist/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.d.cts +48 -0
  59. package/dist/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.d.ts +48 -0
  60. package/dist/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.js +120 -0
  61. package/dist/services/amplitudeService/eventNames.cjs +2 -1
  62. package/dist/services/amplitudeService/eventNames.d.cts +2 -1
  63. package/dist/services/amplitudeService/eventNames.d.ts +2 -1
  64. package/dist/services/amplitudeService/eventNames.js +2 -1
  65. package/dist/services/enviveConfigService/enviveConfigService.cjs +49 -3
  66. package/dist/services/enviveConfigService/enviveConfigService.d.cts +16 -2
  67. package/dist/services/enviveConfigService/enviveConfigService.d.ts +16 -2
  68. package/dist/services/enviveConfigService/enviveConfigService.js +49 -3
  69. package/dist/services/enviveConfigService/fetchBootstrapConfig.cjs +102 -0
  70. package/dist/services/enviveConfigService/fetchBootstrapConfig.js +102 -0
  71. package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +2 -1
  72. package/dist/services/enviveConfigService/fetchGraphQLConfig.js +2 -2
  73. package/dist/services/ga4ProjectionService/ga4EventSchema.cjs +3 -2
  74. package/dist/services/ga4ProjectionService/ga4EventSchema.js +3 -2
  75. package/dist/services/hardcopyService/hardcopyService.cjs +31 -6
  76. package/dist/services/hardcopyService/hardcopyService.d.cts +5 -2
  77. package/dist/services/hardcopyService/hardcopyService.d.ts +5 -2
  78. package/dist/services/hardcopyService/hardcopyService.js +31 -7
  79. package/dist/services/hardcopyService/index.cjs +1 -0
  80. package/dist/services/hardcopyService/index.d.cts +2 -2
  81. package/dist/services/hardcopyService/index.d.ts +2 -2
  82. package/dist/services/hardcopyService/index.js +2 -2
  83. package/dist/services/urlResolverWarmupService/index.cjs +3 -3
  84. package/dist/services/urlResolverWarmupService/index.d.cts +8 -2
  85. package/dist/services/urlResolverWarmupService/index.d.ts +8 -2
  86. package/dist/services/urlResolverWarmupService/index.js +3 -3
  87. package/package.json +5 -1
  88. package/src/application/models/featureGates.ts +6 -0
  89. package/src/hooks/Intersection/useIntersection.ts +11 -0
  90. package/src/hooks/TrackComponentVisibleEvent/__tests__/useTrackComponentVisibleEvent.test.tsx +64 -0
  91. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +23 -4
  92. package/src/hooks/WidgetLoadDiagnostics/__tests__/useWidgetLoadDiagnostics.test.ts +161 -0
  93. package/src/hooks/WidgetLoadDiagnostics/index.ts +5 -0
  94. package/src/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.ts +178 -0
  95. package/src/services/amplitudeService/eventNames.ts +4 -0
  96. package/src/services/enviveConfigService/__tests__/enviveConfigService.test.ts +226 -0
  97. package/src/services/enviveConfigService/__tests__/fetchBootstrapConfig.test.ts +271 -0
  98. package/src/services/enviveConfigService/enviveConfigService.ts +124 -5
  99. package/src/services/enviveConfigService/fetchBootstrapConfig.ts +276 -0
  100. package/src/services/enviveConfigService/fetchGraphQLConfig.ts +7 -4
  101. package/src/services/ga4ProjectionService/ga4EventSchema.ts +5 -0
  102. package/src/services/hardcopyService/__tests__/hardcopyService.test.ts +73 -3
  103. package/src/services/hardcopyService/hardcopyService.ts +55 -5
  104. package/src/services/urlResolverWarmupService/__tests__/urlResolverWarmupService.test.ts +55 -0
  105. package/src/services/urlResolverWarmupService/index.ts +18 -1
@@ -6,12 +6,21 @@ import { getQueryParam } from "../../application/utils/urlsParser.js";
6
6
  import "../../application/utils/index.js";
7
7
  import { getAtomStore } from "../../atoms/atomStore/atomStore.js";
8
8
  import { resolvedBaseConfigVersionAtom } from "../../atoms/envive/resolvedBaseConfigVersion.js";
9
+ import { coreWidgetTypeToApiWidgetType } from "../../application/utils/widgetTextRequestToApiRequest.js";
9
10
  import commerce_api_default from "../../application/commerce-api.js";
10
11
  import "../amplitudeService/index.js";
11
12
  import { v4 } from "uuid";
12
13
 
13
14
  //#region src/services/hardcopyService/hardcopyService.ts
14
15
  const logger = new logger_default("hardcopyService");
16
+ const HARDCOPY_TIMEOUT_MS = 4e3;
17
+ const withTimeout = (promise, ms) => {
18
+ let timer;
19
+ const timeout = new Promise((_, reject) => {
20
+ timer = setTimeout(() => reject(/* @__PURE__ */ new Error(`hardcopy request timed out after ${ms}ms`)), ms);
21
+ });
22
+ return Promise.race([promise, timeout]).finally(() => clearTimeout(timer));
23
+ };
15
24
  const MOCK_HARDCOPY_RESPONSE = {
16
25
  [WidgetTypeV3.PromptCarouselV3]: {
17
26
  responseId: v4(),
@@ -181,37 +190,52 @@ var HardcopyService = class {
181
190
  overrideConfigVersion,
182
191
  url: window.location.href
183
192
  };
193
+ let wireWidgetType = request.widgetType;
194
+ try {
195
+ wireWidgetType = coreWidgetTypeToApiWidgetType(request.widgetType);
196
+ } catch {
197
+ logger.logDebug("no wire mapping for widget type — keeping internal name", { widgetType: request.widgetType });
198
+ }
184
199
  this.config.trackEvent?.({
185
200
  eventName: EnviveMetricsEventName.WidgetTextRequest,
186
201
  eventProps: {
187
- widget_type: request.widgetType,
202
+ widget_type: wireWidgetType,
188
203
  request_id: widgetTextRequest.requestId
189
204
  }
190
205
  });
206
+ let fallbackReason;
191
207
  try {
192
- const response = await commerce_api_default.getHardcopy(widgetTextRequest);
208
+ const response = await withTimeout(commerce_api_default.getHardcopy(widgetTextRequest), HARDCOPY_TIMEOUT_MS);
193
209
  if (response) {
194
210
  const convertedResponse = convertToHardcopyResponse(response);
195
211
  logger.logDebug("converted response", convertedResponse);
196
212
  this.config.trackEvent?.({
197
213
  eventName: EnviveMetricsEventName.WidgetTextResponse,
198
214
  eventProps: {
199
- widget_type: request.widgetType,
215
+ widget_type: wireWidgetType,
200
216
  response_id: response.responseId,
201
217
  widget_text: response.values,
202
218
  request_id: widgetTextRequest.requestId,
203
219
  ...response.aiSuggestionsAttributionBySlot ? { ai_suggestions_attribution_by_slot: response.aiSuggestionsAttributionBySlot } : {}
204
220
  }
205
221
  });
206
- return convertedResponse;
222
+ return {
223
+ ...convertedResponse,
224
+ servedFrom: "api"
225
+ };
207
226
  }
208
227
  } catch (error) {
209
228
  logger.logError("error getting hardcopy from backend", error);
229
+ fallbackReason = error instanceof Error && error.message.includes("timed out") ? "timeout" : "error";
210
230
  }
211
231
  const mockResponse = MOCK_HARDCOPY_RESPONSE[request.widgetType];
212
232
  if (mockResponse) {
213
233
  logger.logDebug("no real response, using mock", mockResponse);
214
- return mockResponse;
234
+ return {
235
+ ...mockResponse,
236
+ servedFrom: "static",
237
+ fallbackReason: fallbackReason ?? "error"
238
+ };
215
239
  }
216
240
  throw new Error(`No hardcopy response found for widget type: ${request.widgetType}`);
217
241
  }
@@ -229,5 +253,5 @@ var MockHardcopyService = class {
229
253
  };
230
254
 
231
255
  //#endregion
232
- export { HardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService };
233
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFyZGNvcHlTZXJ2aWNlLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiTU9DS19IQVJEQ09QWV9SRVNQT05TRTogUGFydGlhbDxSZWNvcmQ8V2lkZ2V0VHlwZVYzLCBIYXJkY29weVJlc3BvbnNlPj4iLCJ1dWlkIiwiY29uZmlnOiBIYXJkY29weVNlcnZpY2VDb25maWciLCJ3aWRnZXRUZXh0UmVxdWVzdDogV2lkZ2V0VGV4dFJlcXVlc3QiLCJDb21tZXJjZUFwaUNsaWVudCIsIm92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8V2lkZ2V0VHlwZVYzLCBIYXJkY29weVJlc3BvbnNlPj4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvaGFyZGNvcHlTZXJ2aWNlL2hhcmRjb3B5U2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgQ29tbWVyY2VBcGlDbGllbnQgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2NvbW1lcmNlLWFwaSc7XG5pbXBvcnQgeyBXaWRnZXRTdHJpbmcsIFdpZGdldFRleHQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS93aWRnZXRUZXh0JztcbmltcG9ydCB7IFdpZGdldFRleHRSZXF1ZXN0IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvd2lkZ2V0VGV4dFJlcXVlc3QnO1xuaW1wb3J0IHsgdG9DYW1lbENhc2UgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxzL3NuYWtlVG9DYW1lbFRyYW5zZm9ybWVyJztcbmltcG9ydCB7IGdldFF1ZXJ5UGFyYW0gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMnO1xuaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBBcHBEZXRhaWxzIH0gZnJvbSAnc3JjL2F0b21zL2FwcCc7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlL2F0b21TdG9yZSc7XG5pbXBvcnQgeyByZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvcmVzb2x2ZWRCYXNlQ29uZmlnVmVyc2lvbic7XG5pbXBvcnQgeyBXaWRnZXRUeXBlVjMgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXNWMyc7XG5pbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBUcmFja0V2ZW50UGFyYW1zIH0gZnJvbSAnLi4vYW1wbGl0dWRlU2VydmljZSc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2hhcmRjb3B5U2VydmljZScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhhcmRjb3B5UmVxdWVzdCB7XG4gIHdpZGdldFR5cGU6IFdpZGdldFR5cGVWMztcbiAgdXNlckV2ZW50OiBVc2VyRXZlbnQ7XG59XG5cbmV4cG9ydCB0eXBlIEhhcmRjb3B5UmVzcG9uc2UgPSB7XG4gIHJlc3BvbnNlSWQ6IHN0cmluZztcbiAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcmF3VmFsdWVzPzogUmVjb3JkPHN0cmluZywgV2lkZ2V0U3RyaW5nIHwgV2lkZ2V0U3RyaW5nW10+O1xuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUhhcmRjb3B5U2VydmljZSB7XG4gIGdldEhhcmRjb3B5KHJlcXVlc3Q6IEhhcmRjb3B5UmVxdWVzdCk6IFByb21pc2U8SGFyZGNvcHlSZXNwb25zZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFyZGNvcHlTZXJ2aWNlQ29uZmlnIHtcbiAgZ2V0QXBwRGV0YWlsczogKCkgPT4gQXBwRGV0YWlscztcbiAgZ2V0RmVhdHVyZUZsYWdzOiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgdHJhY2tFdmVudD86IChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG59XG5cbi8vIFNhbXBsZSByZXNwb25zZXMgdXNlZCBib3RoIGFzIGZhbGxiYWNrIHdoZW4gdGhlIGJhY2tlbmQgZmFpbHMgYW5kIGJ5IE1vY2tIYXJkY29weVNlcnZpY2UuXG5leHBvcnQgY29uc3QgTU9DS19IQVJEQ09QWV9SRVNQT05TRTogUGFydGlhbDxSZWNvcmQ8V2lkZ2V0VHlwZVYzLCBIYXJkY29weVJlc3BvbnNlPj4gPSB7XG4gIFtXaWRnZXRUeXBlVjMuUHJvbXB0Q2Fyb3VzZWxWM106IHtcbiAgICByZXNwb25zZUlkOiB1dWlkKCksXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICBwcm9tcHRCdXR0b25UZXh0czogW1xuICAgICAgICAnV2hhdCBhcmUgeW91ciBiZXN0IHNlbGxlcnM/JyxcbiAgICAgICAgJ1Nob3cgbWUgc3VtbWVyIGRyZXNzZXMnLFxuICAgICAgICAnRG8geW91IGhhdmUgZnJlZSBzaGlwcGluZz8nLFxuICAgICAgICAnV2hhdCBzaXplcyBhcmUgYXZhaWxhYmxlPycsXG4gICAgICAgICdDYW4gSSByZXR1cm4gaXRlbXM/JyxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAgW1dpZGdldFR5cGVWMy5UaXRsZWRQcm9tcHRDYXJvdXNlbFYzXToge1xuICAgIHJlc3BvbnNlSWQ6ICdtb2NrLXJlc3BvbnNlLWlkJyxcbiAgICBsYW5ndWFnZTogJ2VuJyxcbiAgICB2YWx1ZXM6IHtcbiAgICAgIHRpdGxlTGFiZWw6ICdOZWVkIHNvbWUgaGVscD8nLFxuICAgICAgcHJvbXB0QnV0dG9uVGV4dHM6IFtcbiAgICAgICAgJ1doYXQgYXJlIHlvdXIgYmVzdCBzZWxsZXJzPycsXG4gICAgICAgICdTaG93IG1lIHN1bW1lciBkcmVzc2VzJyxcbiAgICAgICAgJ0RvIHlvdSBoYXZlIGZyZWUgc2hpcHBpbmc/JyxcbiAgICAgICAgJ1doYXQgc2l6ZXMgYXJlIGF2YWlsYWJsZT8nLFxuICAgICAgICAnQ2FuIEkgcmV0dXJuIGl0ZW1zPycsXG4gICAgICBdLFxuICAgIH0sXG4gIH0sXG4gIFtXaWRnZXRUeXBlVjMuU29jaWFsUHJvb2ZWM106IHtcbiAgICByZXNwb25zZUlkOiAnbW9jay1yZXNwb25zZS1pZCcsXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICB0aXRsZUxhYmVsOiAnU2hvcHBpbmcgQXNzaXN0YW50JyxcbiAgICAgIG51bWJlck9mQ3VzdG9tZXJzVGV4dDogJzEyMyBjdXN0b21lcnMnLFxuICAgICAgY3VzdG9tZXJRdWVyeVRleHQ6ICdmb3VuZCB3aGF0IHRoZXkgd2VyZSBsb29raW5nIGZvci4uLicsXG4gICAgICBwcmltYXJ5QnV0dG9uVGV4dDogJ1N0YXJ0IHNob3BwaW5nJyxcbiAgICAgIHNlY29uZGFyeUJ1dHRvblRpdGxlVGV4dDogJ1BvcHVsYXIgc2VhcmNoZXMnLFxuICAgICAgc2Vjb25kYXJ5QnV0dG9uVGV4dHM6IFtcbiAgICAgICAgJ1doeSBzaG91bGQgSSBidXkgZnJvbSB5b3U/JyxcbiAgICAgICAgJ0hvdyBkbyBJIHJldHVybiBhbiBpdGVtPycsXG4gICAgICAgICdOZXcgYXJyaXZhbHMnLFxuICAgICAgICAnU2FsZSBpdGVtcycsXG4gICAgICAgICdQb3B1bGFyIGl0ZW1zJyxcbiAgICAgIF0sXG4gICAgICB0ZXh0RmllbGRQbGFjZWhvbGRlclRleHQ6ICdBc2sgbWUgYW55dGhpbmcuLi4nLFxuICAgIH0sXG4gIH0sXG4gIFtXaWRnZXRUeXBlVjMuVHlwaW5nQW5pbWF0aW9uVjNdOiB7XG4gICAgcmVzcG9uc2VJZDogJ21vY2stcmVzcG9uc2UtaWQnLFxuICAgIGxhbmd1YWdlOiAnZW4nLFxuICAgIHZhbHVlczoge1xuICAgICAgdGl0bGVMYWJlbDogJ1Nob3BwaW5nIEFzc2lzdGFudCcsXG4gICAgICBoZWFkbGluZVRleHQ6ICdOZWVkIGhlbHAgZmluZGluZycsXG4gICAgICBhbmltYXRlZFRleHRTZXF1ZW5jZTogW1xuICAgICAgICAndGhlIHBlcmZlY3QgZ2lmdCBmb3IgeW91ciBsb3ZlZCBvbmVzPycsXG4gICAgICAgICdzb21ldGhpbmcgc3BlY2lhbCBmb3IgdGhlIGhvbGlkYXlzPycsXG4gICAgICAgICd0aGUgaWRlYWwgcHJlc2VudCBmb3Igc29tZW9uZSBzcGVjaWFsPycsXG4gICAgICBdLFxuICAgICAgaGludFRleHQ6ICdBc2sgbWUgYW55dGhpbmcnLFxuICAgICAgcHJvbXB0QnV0dG9uVGV4dHM6IFtcbiAgICAgICAgJ1doYXQgYXJlIHlvdXIgYmVzdCBzZWxsZXJzPycsXG4gICAgICAgICdTaG93IG1lIHN1bW1lciBkcmVzc2VzJyxcbiAgICAgICAgJ0RvIHlvdSBoYXZlIGZyZWUgc2hpcHBpbmc/JyxcbiAgICAgICAgJ1doYXQgc2l6ZXMgYXJlIGF2YWlsYWJsZT8nLFxuICAgICAgXSxcbiAgICAgIHRleHRGaWVsZEFyaWFMYWJlbDogJ0FzayBtZSBhbnl0aGluZycsXG4gICAgfSxcbiAgfSxcbiAgW1dpZGdldFR5cGVWMy5DaGF0UHJldmlld0NvbXBhcmlzb25WM106IHtcbiAgICByZXNwb25zZUlkOiAnbW9jay1yZXNwb25zZS1pZCcsXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICB0aXRsZUxhYmVsOiAnU2hvcHBpbmcgQXNzaXN0YW50JyxcbiAgICAgIGhlYWRsaW5lVGV4dDogJ05lZWQgaGVscCBjb21wYXJpbmc/JyxcbiAgICAgIHRleHRGaWVsZFBsYWNlaG9sZGVyVGV4dDogJ0FzayBtZSBhbnl0aGluZy4uLicsXG4gICAgfSxcbiAgfSxcbiAgW1dpZGdldFR5cGVWMy5DaGF0UHJldmlld0xvYWRpbmdWM106IHtcbiAgICByZXNwb25zZUlkOiAnbW9jay1yZXNwb25zZS1pZCcsXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICB0aXRsZUxhYmVsOiAnU2hvcHBpbmcgQXNzaXN0YW50JyxcbiAgICAgIHRleHRGaWVsZFBsYWNlaG9sZGVyVGV4dDogJ0FzayBtZSBhbnl0aGluZy4uLicsXG4gICAgfSxcbiAgfSxcbiAgW1dpZGdldFR5cGVWMy5DaGF0UHJldmlld1YzXToge1xuICAgIHJlc3BvbnNlSWQ6ICdtb2NrLXJlc3BvbnNlLWlkJyxcbiAgICBsYW5ndWFnZTogJ2VuJyxcbiAgICB2YWx1ZXM6IHtcbiAgICAgIHRpdGxlTGFiZWw6ICdTaG9wcGluZyBBc3Npc3RhbnQnLFxuICAgICAgdGV4dEZpZWxkUGxhY2Vob2xkZXJUZXh0OiAnQXNrIG1lIGFueXRoaW5nLi4uJyxcbiAgICB9LFxuICB9LFxuICBbV2lkZ2V0VHlwZVYzLlByb21wdEJ1dHRvbkNhcm91c2VsV2l0aEltYWdlVjNdOiB7XG4gICAgcmVzcG9uc2VJZDogJ21vY2stcmVzcG9uc2UtaWQnLFxuICAgIGxhbmd1YWdlOiAnZW4nLFxuICAgIHZhbHVlczoge1xuICAgICAgdGl0bGVMYWJlbDogJ05lZWQgc29tZSBoZWxwPycsXG4gICAgICBwcm9tcHRCdXR0b25zVGV4dHM6IFsnSGVscCBtZSBmaW5kIGEgcHJvZHVjdCcsIFwiV2hhdCdzIG9uIHlvdXIgbWluZD9cIiwgJ1RhbGsgdG8gYSBodW1hbiddLFxuICAgICAgdGV4dEZpZWxkUGxhY2Vob2xkZXJUZXh0OiAnQXNrIG1lIGFueXRoaW5nLi4uJyxcbiAgICB9LFxuICB9LFxuICBbV2lkZ2V0VHlwZVYzLlByb2R1Y3RDYXJkVjNdOiB7XG4gICAgcmVzcG9uc2VJZDogJ21vY2stcmVzcG9uc2UtaWQnLFxuICAgIGxhbmd1YWdlOiAnZW4nLFxuICAgIHZhbHVlczoge1xuICAgICAgaGVhZGxpbmU6ICdEaXNjb3ZlciBZb3VyIFBlcmZlY3QgU3R5bGUnLFxuICAgICAgYW5pbWF0ZWRUZXh0OiBbXG4gICAgICAgICd0aGUgcGVyZmVjdCBvdXRmaXQgZm9yIGFueSBvY2Nhc2lvbicsXG4gICAgICAgICd0cmVuZGluZyBmYXNoaW9uIHRoYXQgZml0cyB5b3VyIGxpZmVzdHlsZScsXG4gICAgICAgICdxdWFsaXR5IHBpZWNlcyB0aGF0IGxhc3QnLFxuICAgICAgXSxcbiAgICAgIHByb21wdHM6IFtcbiAgICAgICAgJ1doYXQgYXJlIHlvdXIgYmVzdCBzZWxsZXJzPycsXG4gICAgICAgICdTaG93IG1lIHN1bW1lciBkcmVzc2VzJyxcbiAgICAgICAgJ0RvIHlvdSBoYXZlIGZyZWUgc2hpcHBpbmc/JyxcbiAgICAgICAgJ1doYXQgc2l6ZXMgYXJlIGF2YWlsYWJsZT8nLFxuICAgICAgICAnQ2FuIEkgcmV0dXJuIGl0ZW1zPycsXG4gICAgICBdLFxuICAgICAgcGxhY2Vob2xkZXI6ICdBc2sgbWUgYW55dGhpbmcuLi4nLFxuICAgIH0sXG4gIH0sXG4gIFtXaWRnZXRUeXBlVjMuRmxvYXRpbmdDaGF0VjNdOiB7XG4gICAgcmVzcG9uc2VJZDogJ21vY2stcmVzcG9uc2UtaWQnLFxuICAgIGxhbmd1YWdlOiAnZW4nLFxuICAgIHZhbHVlczoge1xuICAgICAgd2VsY29tZU1lc3NhZ2VUaXRsZTogJ1dlbGNvbWUgdG8gRW52aXZlIEFJJyxcbiAgICAgIHdlbGNvbWVNZXNzYWdlVGV4dDpcbiAgICAgICAgJ1lvdXIgcGVyc29uYWwgc2hvcHBlciB0cmFpbmVkIG9uIHRoZSBjb2xsZWN0aXZlIGtub3dsZWRnZSBvZiB0aG91c2FuZHMgb2YgcmVhbCBleHBlcnRzIScsXG4gICAgICBjaGF0Rm9vdGVyVGV4dEZpZWxkUGxhY2Vob2xkZXJUZXh0OiAnQXNrIG1lIGFueXRoaW5nLi4uJyxcbiAgICAgIGRpc2NsYWltZXJUZXh0OiAnVGhpcyBpcyBhIGRpc2NsYWltZXIuLi4nLFxuICAgICAgbGVmdFRvZ2dsZUxhYmVsOiAnU2hvcCB3aXRoIEFJJyxcbiAgICAgIHJpZ2h0VG9nZ2xlTGFiZWw6ICdMaXZlIHN1cHBvcnQnLFxuICAgIH0sXG4gIH0sXG4gIFtXaWRnZXRUeXBlVjMuRnVsbFBhZ2VTYWxlc0FnZW50VjNdOiB7XG4gICAgcmVzcG9uc2VJZDogJ21vY2stcmVzcG9uc2UtaWQnLFxuICAgIGxhbmd1YWdlOiAnZW4nLFxuICAgIHZhbHVlczoge1xuICAgICAgd2VsY29tZU1lc3NhZ2VUaXRsZTogJ1dlbGNvbWUgdG8gRW52aXZlIEFJJyxcbiAgICAgIHdlbGNvbWVNZXNzYWdlVGV4dDpcbiAgICAgICAgJ1lvdXIgcGVyc29uYWwgc2hvcHBlciB0cmFpbmVkIG9uIHRoZSBjb2xsZWN0aXZlIGtub3dsZWRnZSBvZiB0aG91c2FuZHMgb2YgcmVhbCBleHBlcnRzIScsXG4gICAgICBjaGF0Rm9vdGVyVGV4dEZpZWxkUGxhY2Vob2xkZXJUZXh0OiAnQXNrIG1lIGFueXRoaW5nLi4uJyxcbiAgICAgIGRpc2NsYWltZXJUZXh0OiAnVGhpcyBpcyBhIGRpc2NsYWltZXIuLi4nLFxuICAgICAgd2VsY29tZU92ZXJsYXlMaW5rTGlzdFRpdGxlOiAnRXhwbG9yZSBtb3JlJyxcbiAgICB9LFxuICB9LFxufTtcblxuY29uc3QgY29udmVydFRvSGFyZGNvcHlSZXNwb25zZSA9IChyZXNwb25zZTogV2lkZ2V0VGV4dCk6IEhhcmRjb3B5UmVzcG9uc2UgPT4gKHtcbiAgcmVzcG9uc2VJZDogcmVzcG9uc2UucmVzcG9uc2VJZCxcbiAgbGFuZ3VhZ2U6IHJlc3BvbnNlLmxhbmd1YWdlLFxuICByYXdWYWx1ZXM6IHJlc3BvbnNlLnZhbHVlcyxcbiAgdmFsdWVzOiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UudmFsdWVzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xuICAgICAgdG9DYW1lbENhc2Uoa2V5KSxcbiAgICAgIHZhbHVlLmxlbmd0aCA9PT0gMSA/IHZhbHVlWzBdLnZhbHVlIDogdmFsdWUubWFwKHYgPT4gdi52YWx1ZSksXG4gICAgXSksXG4gICksXG59KTtcblxuZXhwb3J0IGNsYXNzIEhhcmRjb3B5U2VydmljZSBpbXBsZW1lbnRzIElIYXJkY29weVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogSGFyZGNvcHlTZXJ2aWNlQ29uZmlnKSB7fVxuXG4gIGFzeW5jIGdldEhhcmRjb3B5KHJlcXVlc3Q6IEhhcmRjb3B5UmVxdWVzdCk6IFByb21pc2U8SGFyZGNvcHlSZXNwb25zZT4ge1xuICAgIGNvbnN0IG92ZXJyaWRlQ29uZmlnVmVyc2lvbiA9XG4gICAgICBnZXRRdWVyeVBhcmFtKCdzcGlmZnlfY29uZmlnX3ZlcnNpb24nKSB8fFxuICAgICAgZ2V0UXVlcnlQYXJhbSgnZW52aXZlX2NvbmZpZ192ZXJzaW9uJykgfHxcbiAgICAgIGdldEF0b21TdG9yZSgpLmdldChyZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSkgfHxcbiAgICAgIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHdpZGdldFRleHRSZXF1ZXN0OiBXaWRnZXRUZXh0UmVxdWVzdCA9IHtcbiAgICAgIHJlcXVlc3RJZDogdXVpZCgpLFxuICAgICAgd2lkZ2V0VHlwZTogcmVxdWVzdC53aWRnZXRUeXBlLFxuICAgICAgY29udGV4dDogdGhpcy5jb25maWcuZ2V0QXBwRGV0YWlscygpLFxuICAgICAgZmVhdHVyZUZsYWdzOiB0aGlzLmNvbmZpZy5nZXRGZWF0dXJlRmxhZ3MoKSxcbiAgICAgIGxhbmd1YWdlOiBuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdIHx8ICdlbicsXG4gICAgICBvdmVycmlkZUNvbmZpZ1ZlcnNpb24sXG4gICAgICB1cmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgIH07XG5cbiAgICB0aGlzLmNvbmZpZy50cmFja0V2ZW50Py4oe1xuICAgICAgZXZlbnROYW1lOiBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLldpZGdldFRleHRSZXF1ZXN0LFxuICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICB3aWRnZXRfdHlwZTogcmVxdWVzdC53aWRnZXRUeXBlLFxuICAgICAgICByZXF1ZXN0X2lkOiB3aWRnZXRUZXh0UmVxdWVzdC5yZXF1ZXN0SWQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SGFyZGNvcHkod2lkZ2V0VGV4dFJlcXVlc3QpO1xuICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZFJlc3BvbnNlID0gY29udmVydFRvSGFyZGNvcHlSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgIGxvZ2dlci5sb2dEZWJ1ZygnY29udmVydGVkIHJlc3BvbnNlJywgY29udmVydGVkUmVzcG9uc2UpO1xuICAgICAgICB0aGlzLmNvbmZpZy50cmFja0V2ZW50Py4oe1xuICAgICAgICAgIGV2ZW50TmFtZTogRW52aXZlTWV0cmljc0V2ZW50TmFtZS5XaWRnZXRUZXh0UmVzcG9uc2UsXG4gICAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgICAgd2lkZ2V0X3R5cGU6IHJlcXVlc3Qud2lkZ2V0VHlwZSxcbiAgICAgICAgICAgIHJlc3BvbnNlX2lkOiByZXNwb25zZS5yZXNwb25zZUlkLFxuICAgICAgICAgICAgd2lkZ2V0X3RleHQ6IHJlc3BvbnNlLnZhbHVlcyxcbiAgICAgICAgICAgIHJlcXVlc3RfaWQ6IHdpZGdldFRleHRSZXF1ZXN0LnJlcXVlc3RJZCxcbiAgICAgICAgICAgIC8vIFdoaWNoIG1ldGhvZCBzZXJ2ZWQgZWFjaCBvdmVycmlkZGVuIHNsb3Qg4oCUIHRyYWluaW5nL2F0dHJpYnV0aW9uXG4gICAgICAgICAgICAvLyByZWFkcyB0aGlzIGZyb20gdGhlIGFuYWx5dGljcyBldmVudDsgcGFzc2VkIHRocm91Z2ggdmVyYmF0aW0uXG4gICAgICAgICAgICAuLi4ocmVzcG9uc2UuYWlTdWdnZXN0aW9uc0F0dHJpYnV0aW9uQnlTbG90XG4gICAgICAgICAgICAgID8geyBhaV9zdWdnZXN0aW9uc19hdHRyaWJ1dGlvbl9ieV9zbG90OiByZXNwb25zZS5haVN1Z2dlc3Rpb25zQXR0cmlidXRpb25CeVNsb3QgfVxuICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRlZFJlc3BvbnNlO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIubG9nRXJyb3IoJ2Vycm9yIGdldHRpbmcgaGFyZGNvcHkgZnJvbSBiYWNrZW5kJywgZXJyb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IG1vY2tSZXNwb25zZSA9IE1PQ0tfSEFSRENPUFlfUkVTUE9OU0VbcmVxdWVzdC53aWRnZXRUeXBlXTtcbiAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ25vIHJlYWwgcmVzcG9uc2UsIHVzaW5nIG1vY2snLCBtb2NrUmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIG1vY2tSZXNwb25zZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBoYXJkY29weSByZXNwb25zZSBmb3VuZCBmb3Igd2lkZ2V0IHR5cGU6ICR7cmVxdWVzdC53aWRnZXRUeXBlfWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrSGFyZGNvcHlTZXJ2aWNlIGltcGxlbWVudHMgSUhhcmRjb3B5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcnJpZGVzOiBQYXJ0aWFsPFJlY29yZDxXaWRnZXRUeXBlVjMsIEhhcmRjb3B5UmVzcG9uc2U+PiA9IHt9KSB7fVxuXG4gIGFzeW5jIGdldEhhcmRjb3B5KHJlcXVlc3Q6IEhhcmRjb3B5UmVxdWVzdCk6IFByb21pc2U8SGFyZGNvcHlSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZhbGxiYWNrV2lkZ2V0VHlwZSA9XG4gICAgICByZXF1ZXN0LndpZGdldFR5cGUgPT09IFdpZGdldFR5cGVWMy5Qcm9kdWN0Q2FyZFYzXG4gICAgICAgID8gV2lkZ2V0VHlwZVYzLkltYWdlUHJvbXB0Q2FyZFYzXG4gICAgICAgIDogcmVxdWVzdC53aWRnZXRUeXBlO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPVxuICAgICAgdGhpcy5vdmVycmlkZXNbcmVxdWVzdC53aWRnZXRUeXBlXSA/P1xuICAgICAgdGhpcy5vdmVycmlkZXNbZmFsbGJhY2tXaWRnZXRUeXBlXSA/P1xuICAgICAgTU9DS19IQVJEQ09QWV9SRVNQT05TRVtyZXF1ZXN0LndpZGdldFR5cGVdO1xuXG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBoYXJkY29weSByZXNwb25zZSBmb3VuZCBmb3Igd2lkZ2V0IHR5cGU6ICR7cmVxdWVzdC53aWRnZXRUeXBlfWApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWNBLE1BQU0sU0FBUyxJQUFJQSxlQUFPLGtCQUFrQjtBQXlCNUMsTUFBYUMseUJBQTBFO0VBQ3BGLGFBQWEsbUJBQW1CO0VBQy9CLFlBQVlDLElBQU07RUFDbEIsVUFBVTtFQUNWLFFBQVEsRUFDTixtQkFBbUI7R0FDakI7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNELEVBQ0Y7RUFDRjtFQUNBLGFBQWEseUJBQXlCO0VBQ3JDLFlBQVk7RUFDWixVQUFVO0VBQ1YsUUFBUTtHQUNOLFlBQVk7R0FDWixtQkFBbUI7SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNEO0dBQ0Y7RUFDRjtFQUNBLGFBQWEsZ0JBQWdCO0VBQzVCLFlBQVk7RUFDWixVQUFVO0VBQ1YsUUFBUTtHQUNOLFlBQVk7R0FDWix1QkFBdUI7R0FDdkIsbUJBQW1CO0dBQ25CLG1CQUFtQjtHQUNuQiwwQkFBMEI7R0FDMUIsc0JBQXNCO0lBQ3BCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDRDtHQUNELDBCQUEwQjtHQUMzQjtFQUNGO0VBQ0EsYUFBYSxvQkFBb0I7RUFDaEMsWUFBWTtFQUNaLFVBQVU7RUFDVixRQUFRO0dBQ04sWUFBWTtHQUNaLGNBQWM7R0FDZCxzQkFBc0I7SUFDcEI7SUFDQTtJQUNBO0lBQ0Q7R0FDRCxVQUFVO0dBQ1YsbUJBQW1CO0lBQ2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7R0FDRCxvQkFBb0I7R0FDckI7RUFD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
256
+ export { HARDCOPY_TIMEOUT_MS, HardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService };
257
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFyZGNvcHlTZXJ2aWNlLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwidGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IiwiTU9DS19IQVJEQ09QWV9SRVNQT05TRTogUGFydGlhbDxSZWNvcmQ8V2lkZ2V0VHlwZVYzLCBIYXJkY29weVJlc3BvbnNlPj4iLCJ1dWlkIiwiY29uZmlnOiBIYXJkY29weVNlcnZpY2VDb25maWciLCJ3aWRnZXRUZXh0UmVxdWVzdDogV2lkZ2V0VGV4dFJlcXVlc3QiLCJ3aXJlV2lkZ2V0VHlwZTogc3RyaW5nIiwiZmFsbGJhY2tSZWFzb246ICd0aW1lb3V0JyB8ICdlcnJvcicgfCB1bmRlZmluZWQiLCJDb21tZXJjZUFwaUNsaWVudCIsIm92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8V2lkZ2V0VHlwZVYzLCBIYXJkY29weVJlc3BvbnNlPj4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvaGFyZGNvcHlTZXJ2aWNlL2hhcmRjb3B5U2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgQ29tbWVyY2VBcGlDbGllbnQgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2NvbW1lcmNlLWFwaSc7XG5pbXBvcnQgeyBXaWRnZXRTdHJpbmcsIFdpZGdldFRleHQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS93aWRnZXRUZXh0JztcbmltcG9ydCB7IFdpZGdldFRleHRSZXF1ZXN0IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvd2lkZ2V0VGV4dFJlcXVlc3QnO1xuaW1wb3J0IHsgdG9DYW1lbENhc2UgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxzL3NuYWtlVG9DYW1lbFRyYW5zZm9ybWVyJztcbmltcG9ydCB7IGdldFF1ZXJ5UGFyYW0gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMnO1xuaW1wb3J0IHsgY29yZVdpZGdldFR5cGVUb0FwaVdpZGdldFR5cGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMvd2lkZ2V0VGV4dFJlcXVlc3RUb0FwaVJlcXVlc3QnO1xuaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBBcHBEZXRhaWxzIH0gZnJvbSAnc3JjL2F0b21zL2FwcCc7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlL2F0b21TdG9yZSc7XG5pbXBvcnQgeyByZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvcmVzb2x2ZWRCYXNlQ29uZmlnVmVyc2lvbic7XG5pbXBvcnQgeyBXaWRnZXRUeXBlVjMgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXNWMyc7XG5pbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBUcmFja0V2ZW50UGFyYW1zIH0gZnJvbSAnLi4vYW1wbGl0dWRlU2VydmljZSc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2hhcmRjb3B5U2VydmljZScpO1xuXG4vLyBMb25nZXN0IGEgaGFyZGNvcHkgcmVxdWVzdCBtYXkgaGFuZyBiZWZvcmUgd2Ugc3RvcCB3YWl0aW5nIGZvciBpdC4gVGhlIGJhY2tlbmQtZXJyb3Jcbi8vIHBhdGggYmVsb3cgYWxyZWFkeSBmYWxscyBiYWNrIHRvIHN0YXRpYyBjb3B5LCBidXQgYSByZXF1ZXN0IHRoYXQgbmV2ZXIgc2V0dGxlcyBhdCBhbGxcbi8vIG5ldmVyIHJlYWNoZXMgdGhhdCBjYXRjaCDigJQgaXQgbGVmdCB0aGUgd2lkZ2V0J3MgbG9hZGluZyBsYXRjaCB1bnJlc29sdmVkIGZvcmV2ZXIsIHdoaWNoXG4vLyBpcyB0aGUgXCJQTFAgc3RheWluZyBpbiBsb2FkaW5nIHN0YXRlXCIgZmFpbHVyZS4gUmFjaW5nIHRoZSByZXF1ZXN0IGFnYWluc3QgdGhpcyB0aW1lb3V0XG4vLyB0dXJucyBhIGhhbmcgaW50byB0aGUgc2FtZSBmYWxsYmFjayBwYXRoIGFuIGVycm9yIHRha2VzLCBzbyB0aGUgd2lkZ2V0IGFsd2F5cyBsZWF2ZXMgaXRzXG4vLyBsb2FkaW5nIHN0YXRlLlxuLy9cbi8vIEtlcHQgdW5kZXIgdGhlIH40LTVzIGF0IHdoaWNoIHNlc3Npb24gcmVwbGF5cyBzaG93IHNob3BwZXJzIGFiYW5kb24gYSBzdGlsbC1sb2FkaW5nXG4vLyB3aWRnZXQ6IGEgcmVzY3VlIHRoYXQgZmlyZXMgYWZ0ZXIgdGhleSd2ZSBsZWZ0IGhlbHBzIG5vIG9uZS4gV2hlbiBpdCBmaXJlcywgdGhlIGNhdGNoXG4vLyBiZWxvdyBsb2dzIGFuIGVycm9yIChtZXNzYWdlIGluY2x1ZGVzIFwidGltZWQgb3V0XCIpIOKAlCB0aGF0IGxvZyBpcyB0aGUgc2lnbmFsIG1vbml0b3Jpbmdcbi8vIGNhbiBjb3VudCB0byBtZWFzdXJlIGhvdyBvZnRlbiBoYXJkY29weSBzdGFsbHMuXG5leHBvcnQgY29uc3QgSEFSRENPUFlfVElNRU9VVF9NUyA9IDQwMDA7XG5cbi8vIFJlamVjdCBpZiBgcHJvbWlzZWAgaGFzIG5vdCBzZXR0bGVkIHdpdGhpbiBgbXNgLiBUaGUgdW5kZXJseWluZyByZXF1ZXN0IGlzIG5vdCBhYm9ydGVkXG4vLyAoYSBsYXRlIHJlc3BvbnNlIGlzIHNpbXBseSBkaXNjYXJkZWQpIOKAlCB0aGUgb25seSBnb2FsIGlzIHRvIHN0b3AgKndhaXRpbmcqLCBzbyB0aGVcbi8vIGNhbGxlcidzIGVycm9yIGhhbmRsaW5nIGNhbiBydW4uXG5jb25zdCB3aXRoVGltZW91dCA9IDxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCBtczogbnVtYmVyKTogUHJvbWlzZTxUPiA9PiB7XG4gIGxldCB0aW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIGNvbnN0IHRpbWVvdXQgPSBuZXcgUHJvbWlzZTxuZXZlcj4oKF8sIHJlamVjdCkgPT4ge1xuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBoYXJkY29weSByZXF1ZXN0IHRpbWVkIG91dCBhZnRlciAke21zfW1zYCkpLCBtcyk7XG4gIH0pO1xuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtwcm9taXNlLCB0aW1lb3V0XSkuZmluYWxseSgoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBIYXJkY29weVJlcXVlc3Qge1xuICB3aWRnZXRUeXBlOiBXaWRnZXRUeXBlVjM7XG4gIHVzZXJFdmVudDogVXNlckV2ZW50O1xufVxuXG5leHBvcnQgdHlwZSBIYXJkY29weVJlc3BvbnNlID0ge1xuICByZXNwb25zZUlkOiBzdHJpbmc7XG4gIGxhbmd1YWdlOiBzdHJpbmc7XG4gIHJhd1ZhbHVlcz86IFJlY29yZDxzdHJpbmcsIFdpZGdldFN0cmluZyB8IFdpZGdldFN0cmluZ1tdPjtcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT47XG4gIC8vIEhvdyB0aGUgY29weSB3YXMgc2VydmVkLCBmb3Igd2lkZ2V0LWxvYWQgZGlhZ25vc3RpY3M6ICdhcGknID0gbGl2ZSBiYWNrZW5kIHJlc3BvbnNlLFxuICAvLyAnc3RhdGljJyA9IGZlbGwgYmFjayB0byB0aGUgYnVuZGxlZCBNT0NLX0hBUkRDT1BZX1JFU1BPTlNFIGFmdGVyIGEgYmFja2VuZCBlcnJvciBvciB0aW1lb3V0LlxuICBzZXJ2ZWRGcm9tPzogJ2FwaScgfCAnc3RhdGljJztcbiAgZmFsbGJhY2tSZWFzb24/OiAndGltZW91dCcgfCAnZXJyb3InO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJSGFyZGNvcHlTZXJ2aWNlIHtcbiAgZ2V0SGFyZGNvcHkocmVxdWVzdDogSGFyZGNvcHlSZXF1ZXN0KTogUHJvbWlzZTxIYXJkY29weVJlc3BvbnNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIYXJkY29weVNlcnZpY2VDb25maWcge1xuICBnZXRBcHBEZXRhaWxzOiAoKSA9PiBBcHBEZXRhaWxzO1xuICBnZXRGZWF0dXJlRmxhZ3M6ICgpID0+IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICB0cmFja0V2ZW50PzogKHBhcmFtczogVHJhY2tFdmVudFBhcmFtcykgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuLy8gU2FtcGxlIHJlc3BvbnNlcyB1c2VkIGJvdGggYXMgZmFsbGJhY2sgd2hlbiB0aGUgYmFja2VuZCBmYWlscyBhbmQgYnkgTW9ja0hhcmRjb3B5U2VydmljZS5cbmV4cG9ydCBjb25zdCBNT0NLX0hBUkRDT1BZX1JFU1BPTlNFOiBQYXJ0aWFsPFJlY29yZDxXaWRnZXRUeXBlVjMsIEhhcmRjb3B5UmVzcG9uc2U+PiA9IHtcbiAgW1dpZGdldFR5cGVWMy5Qcm9tcHRDYXJvdXNlbFYzXToge1xuICAgIHJlc3BvbnNlSWQ6IHV1aWQoKSxcbiAgICBsYW5ndWFnZTogJ2VuJyxcbiAgICB2YWx1ZXM6IHtcbiAgICAgIHByb21wdEJ1dHRvblRleHRzOiBbXG4gICAgICAgICdXaGF0IGFyZSB5b3VyIGJlc3Qgc2VsbGVycz8nLFxuICAgICAgICAnU2hvdyBtZSBzdW1tZXIgZHJlc3NlcycsXG4gICAgICAgICdEbyB5b3UgaGF2ZSBmcmVlIHNoaXBwaW5nPycsXG4gICAgICAgICdXaGF0IHNpemVzIGFyZSBhdmFpbGFibGU/JyxcbiAgICAgICAgJ0NhbiBJIHJldHVybiBpdGVtcz8nLFxuICAgICAgXSxcbiAgICB9LFxuICB9LFxuICBbV2lkZ2V0VHlwZVYzLlRpdGxlZFByb21wdENhcm91c2VsVjNdOiB7XG4gICAgcmVzcG9uc2VJZDogJ21vY2stcmVzcG9uc2UtaWQnLFxuICAgIGxhbmd1YWdlOiAnZW4nLFxuICAgIHZhbHVlczoge1xuICAgICAgdGl0bGVMYWJlbDogJ05lZWQgc29tZSBoZWxwPycsXG4gICAgICBwcm9tcHRCdXR0b25UZXh0czogW1xuICAgICAgICAnV2hhdCBhcmUgeW91ciBiZXN0IHNlbGxlcnM/JyxcbiAgICAgICAgJ1Nob3cgbWUgc3VtbWVyIGRyZXNzZXMnLFxuICAgICAgICAnRG8geW91IGhhdmUgZnJlZSBzaGlwcGluZz8nLFxuICAgICAgICAnV2hhdCBzaXplcyBhcmUgYXZhaWxhYmxlPycsXG4gICAgICAgICdDYW4gSSByZXR1cm4gaXRlbXM/JyxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAgW1dpZGdldFR5cGVWMy5Tb2NpYWxQcm9vZlYzXToge1xuICAgIHJlc3BvbnNlSWQ6ICdtb2NrLXJlc3BvbnNlLWlkJyxcbiAgICBsYW5ndWFnZTogJ2VuJyxcbiAgICB2YWx1ZXM6IHtcbiAgICAgIHRpdGxlTGFiZWw6ICdTaG9wcGluZyBBc3Npc3RhbnQnLFxuICAgICAgbnVtYmVyT2ZDdXN0b21lcnNUZXh0OiAnMTIzIGN1c3RvbWVycycsXG4gICAgICBjdXN0b21lclF1ZXJ5VGV4dDogJ2ZvdW5kIHdoYXQgdGhleSB3ZXJlIGxvb2tpbmcgZm9yLi4uJyxcbiAgICAgIHByaW1hcnlCdXR0b25UZXh0OiAnU3RhcnQgc2hvcHBpbmcnLFxuICAgICAgc2Vjb25kYXJ5QnV0dG9uVGl0bGVUZXh0OiAnUG9wdWxhciBzZWFyY2hlcycsXG4gICAgICBzZWNvbmRhcnlCdXR0b25UZXh0czogW1xuICAgICAgICAnV2h5IHNob3VsZCBJIGJ1eSBmcm9tIHlvdT8nLFxuICAgICAgICAnSG93IGRvIEkgcmV0dXJuIGFuIGl0ZW0/JyxcbiAgICAgICAgJ05ldyBhcnJpdmFscycsXG4gICAgICAgICdTYWxlIGl0ZW1zJyxcbiAgICAgICAgJ1BvcHVsYXIgaXRlbXMnLFxuICAgICAgXSxcbiAgICAgIHRleHRGaWVsZFBsYWNlaG9sZGVyVGV4dDogJ0FzayBtZSBhbnl0aGluZy4uLicsXG4gICAgfSxcbiAgfSxcbiAgW1dpZGdldFR5cGVWMy5UeXBpbmdBbmltYXRpb25WM106IHtcbiAgICByZXNwb25zZUlkOiAnbW9jay1yZXNwb25zZS1pZCcsXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICB0aXRsZUxhYmVsOiAnU2hvcHBpbmcgQXNzaXN0YW50JyxcbiAgICAgIGhlYWRsaW5lVGV4dDogJ05lZWQgaGVscCBmaW5kaW5nJyxcbiAgICAgIGFuaW1hdGVkVGV4dFNlcXVlbmNlOiBbXG4gICAgICAgICd0aGUgcGVyZmVjdCBnaWZ0IGZvciB5b3VyIGxvdmVkIG9uZXM/JyxcbiAgICAgICAgJ3NvbWV0aGluZyBzcGVjaWFsIGZvciB0aGUgaG9saWRheXM/JyxcbiAgICAgICAgJ3RoZSBpZGVhbCBwcmVzZW50IGZvciBzb21lb25lIHNwZWNpYWw/JyxcbiAgICAgIF0sXG4gICAgICBoaW50VGV4dDogJ0FzayBtZSBhbnl0aGluZycsXG4gICAgICBwcm9tcHRCdXR0b25UZXh0czogW1xuICAgICAgICAnV2hhdCBhcmUgeW91ciBiZXN0IHNlbGxlcnM/JyxcbiAgICAgICAgJ1Nob3cgbWUgc3VtbWVyIGRyZXNzZXMnLFxuICAgICAgICAnRG8geW91IGhhdmUgZnJlZSBzaGlwcGluZz8nLFxuICAgICAgICAnV2hhdCBzaXplcyBhcmUgYXZhaWxhYmxlPycsXG4gICAgICBdLFxuICAgICAgdGV4dEZpZWxkQXJpYUxhYmVsOiAnQXNrIG1lIGFueXRoaW5nJyxcbiAgICB9LFxuICB9LFxuICBbV2lkZ2V0VHlwZVYzLkNoYXRQcmV2aWV3Q29tcGFyaXNvblYzXToge1xuICAgIHJlc3BvbnNlSWQ6ICdtb2NrLXJlc3BvbnNlLWlkJyxcbiAgICBsYW5ndWFnZTogJ2VuJyxcbiAgICB2YWx1ZXM6IHtcbiAgICAgIHRpdGxlTGFiZWw6ICdTaG9wcGluZyBBc3Npc3RhbnQnLFxuICAgICAgaGVhZGxpbmVUZXh0OiAnTmVlZCBoZWxwIGNvbXBhcmluZz8nLFxuICAgICAgdGV4dEZpZWxkUGxhY2Vob2xkZXJUZXh0OiAnQXNrIG1lIGFueXRoaW5nLi4uJyxcbiAgICB9LFxuICB9LFxuICBbV2lkZ2V0VHlwZVYzLkNoYXRQcmV2aWV3TG9hZGluZ1YzXToge1xuICAgIHJlc3BvbnNlSWQ6ICdtb2NrLXJlc3BvbnNlLWlkJyxcbiAgICBsYW5ndWFnZTogJ2VuJyxcbiAgICB2YWx1ZXM6IHtcbiAgICAgIHRpdGxlTGFiZWw6ICdTaG9wcGluZyBBc3Npc3RhbnQnLFxuICAgICAgdGV4dEZpZWxkUGxhY2Vob2xkZXJUZXh0OiAnQXNrIG1lIGFueXRoaW5nLi4uJyxcbiAgICB9LFxuICB9LFxuICBbV2lkZ2V0VHlwZVYzLkNoYXRQcmV2aWV3VjNdOiB7XG4gICAgcmVzcG9uc2VJZDogJ21vY2stcmVzcG9uc2UtaWQnLFxuICAgIGxhbmd1YWdlOiAnZW4nLFxuICAgIHZhbHVlczoge1xuICAgICAgdGl0bGVMYWJlbDogJ1Nob3BwaW5nIEFzc2lzdGFudCcsXG4gICAgICB0ZXh0RmllbGRQbGFjZWhvbGRlclRleHQ6ICdBc2sgbWUgYW55dGhpbmcuLi4nLFxuICAgIH0sXG4gIH0sXG4gIFtXaWRnZXRUeXBlVjMuUHJvbXB0QnV0dG9uQ2Fyb3VzZWxXaXRoSW1hZ2VWM106IHtcbiAgICByZXNwb25zZUlkOiAnbW9jay1yZXNwb25zZS1pZCcsXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICB0aXRsZUxhYmVsOiAnTmVlZCBzb21lIGhlbHA/JyxcbiAgICAgIHByb21wdEJ1dHRvbnNUZXh0czogWydIZWxwIG1lIGZpbmQgYSBwcm9kdWN0JywgXCJXaGF0J3Mgb24geW91ciBtaW5kP1wiLCAnVGFsayB0byBhIGh1bWFuJ10sXG4gICAgICB0ZXh0RmllbGRQbGFjZWhvbGRlclRleHQ6ICdBc2sgbWUgYW55dGhpbmcuLi4nLFxuICAgIH0sXG4gIH0sXG4gIFtXaWRnZXRUeXBlVjMuUHJvZHVjdENhcmRWM106IHtcbiAgICByZXNwb25zZUlkOiAnbW9jay1yZXNwb25zZS1pZCcsXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICBoZWFkbGluZTogJ0Rpc2NvdmVyIFlvdXIgUGVyZmVjdCBTdHlsZScsXG4gICAgICBhbmltYXRlZFRleHQ6IFtcbiAgICAgICAgJ3RoZSBwZXJmZWN0IG91dGZpdCBmb3IgYW55IG9jY2FzaW9uJyxcbiAgICAgICAgJ3RyZW5kaW5nIGZhc2hpb24gdGhhdCBmaXRzIHlvdXIgbGlmZXN0eWxlJyxcbiAgICAgICAgJ3F1YWxpdHkgcGllY2VzIHRoYXQgbGFzdCcsXG4gICAgICBdLFxuICAgICAgcHJvbXB0czogW1xuICAgICAgICAnV2hhdCBhcmUgeW91ciBiZXN0IHNlbGxlcnM/JyxcbiAgICAgICAgJ1Nob3cgbWUgc3VtbWVyIGRyZXNzZXMnLFxuICAgICAgICAnRG8geW91IGhhdmUgZnJlZSBzaGlwcGluZz8nLFxuICAgICAgICAnV2hhdCBzaXplcyBhcmUgYXZhaWxhYmxlPycsXG4gICAgICAgICdDYW4gSSByZXR1cm4gaXRlbXM/JyxcbiAgICAgIF0sXG4gICAgICBwbGFjZWhvbGRlcjogJ0FzayBtZSBhbnl0aGluZy4uLicsXG4gICAgfSxcbiAgfSxcbiAgW1dpZGdldFR5cGVWMy5GbG9hdGluZ0NoYXRWM106IHtcbiAgICByZXNwb25zZUlkOiAnbW9jay1yZXNwb25zZS1pZCcsXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICB3ZWxjb21lTWVzc2FnZVRpdGxlOiAnV2VsY29tZSB0byBFbnZpdmUgQUknLFxuICAgICAgd2VsY29tZU1lc3NhZ2VUZXh0OlxuICAgICAgICAnWW91ciBwZXJzb25hbCBzaG9wcGVyIHRyYWluZWQgb24gdGhlIGNvbGxlY3RpdmUga25vd2xlZGdlIG9mIHRob3VzYW5kcyBvZiByZWFsIGV4cGVydHMhJyxcbiAgICAgIGNoYXRGb290ZXJUZXh0RmllbGRQbGFjZWhvbGRlclRleHQ6ICdBc2sgbWUgYW55dGhpbmcuLi4nLFxuICAgICAgZGlzY2xhaW1lclRleHQ6ICdUaGlzIGlzIGEgZGlzY2xhaW1lci4uLicsXG4gICAgICBsZWZ0VG9nZ2xlTGFiZWw6ICdTaG9wIHdpdGggQUknLFxuICAgICAgcmlnaHRUb2dnbGVMYWJlbDogJ0xpdmUgc3VwcG9ydCcsXG4gICAgfSxcbiAgfSxcbiAgW1dpZGdldFR5cGVWMy5GdWxsUGFnZVNhbGVzQWdlbnRWM106IHtcbiAgICByZXNwb25zZUlkOiAnbW9jay1yZXNwb25zZS1pZCcsXG4gICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgdmFsdWVzOiB7XG4gICAgICB3ZWxjb21lTWVzc2FnZVRpdGxlOiAnV2VsY29tZSB0byBFbnZpdmUgQUknLFxuICAgICAgd2VsY29tZU1lc3NhZ2VUZXh0OlxuICAgICAgICAnWW91ciBwZXJzb25hbCBzaG9wcGVyIHRyYWluZWQgb24gdGhlIGNvbGxlY3RpdmUga25vd2xlZGdlIG9mIHRob3VzYW5kcyBvZiByZWFsIGV4cGVydHMhJyxcbiAgICAgIGNoYXRGb290ZXJUZXh0RmllbGRQbGFjZWhvbGRlclRleHQ6ICdBc2sgbWUgYW55dGhpbmcuLi4nLFxuICAgICAgZGlzY2xhaW1lclRleHQ6ICdUaGlzIGlzIGEgZGlzY2xhaW1lci4uLicsXG4gICAgICB3ZWxjb21lT3ZlcmxheUxpbmtMaXN0VGl0bGU6ICdFeHBsb3JlIG1vcmUnLFxuICAgIH0sXG4gIH0sXG59O1xuXG5jb25zdCBjb252ZXJ0VG9IYXJkY29weVJlc3BvbnNlID0gKHJlc3BvbnNlOiBXaWRnZXRUZXh0KTogSGFyZGNvcHlSZXNwb25zZSA9PiAoe1xuICByZXNwb25zZUlkOiByZXNwb25zZS5yZXNwb25zZUlkLFxuICBsYW5ndWFnZTogcmVzcG9uc2UubGFuZ3VhZ2UsXG4gIHJhd1ZhbHVlczogcmVzcG9uc2UudmFsdWVzLFxuICB2YWx1ZXM6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhyZXNwb25zZS52YWx1ZXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbXG4gICAgICB0b0NhbWVsQ2FzZShrZXkpLFxuICAgICAgdmFsdWUubGVuZ3RoID09PSAxID8gdmFsdWVbMF0udmFsdWUgOiB2YWx1ZS5tYXAodiA9PiB2LnZhbHVlKSxcbiAgICBdKSxcbiAgKSxcbn0pO1xuXG5leHBvcnQgY2xhc3MgSGFyZGNvcHlTZXJ2aWNlIGltcGxlbWVudHMgSUhhcmRjb3B5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBIYXJkY29weVNlcnZpY2VDb25maWcpIHt9XG5cbiAgYXN5bmMgZ2V0SGFyZGNvcHkocmVxdWVzdDogSGFyZGNvcHlSZXF1ZXN0KTogUHJvbWlzZTxIYXJkY29weVJlc3BvbnNlPiB7XG4gICAgY29uc3Qgb3ZlcnJpZGVDb25maWdWZXJzaW9uID1cbiAgICAgIGdldFF1ZXJ5UGFyYW0oJ3NwaWZmeV9jb25maWdfdmVyc2lvbicpIHx8XG4gICAgICBnZXRRdWVyeVBhcmFtKCdlbnZpdmVfY29uZmlnX3ZlcnNpb24nKSB8fFxuICAgICAgZ2V0QXRvbVN0b3JlKCkuZ2V0KHJlc29sdmVkQmFzZUNvbmZpZ1ZlcnNpb25BdG9tKSB8fFxuICAgICAgdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgd2lkZ2V0VGV4dFJlcXVlc3Q6IFdpZGdldFRleHRSZXF1ZXN0ID0ge1xuICAgICAgcmVxdWVzdElkOiB1dWlkKCksXG4gICAgICB3aWRnZXRUeXBlOiByZXF1ZXN0LndpZGdldFR5cGUsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbmZpZy5nZXRBcHBEZXRhaWxzKCksXG4gICAgICBmZWF0dXJlRmxhZ3M6IHRoaXMuY29uZmlnLmdldEZlYXR1cmVGbGFncygpLFxuICAgICAgbGFuZ3VhZ2U6IG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gfHwgJ2VuJyxcbiAgICAgIG92ZXJyaWRlQ29uZmlnVmVyc2lvbixcbiAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgfTtcblxuICAgIC8vIFRoZSBXaWRnZXQgVGV4dCBldmVudHMgbXVzdCBjYXJyeSB0aGUgQVBJLWZhY2luZyAodHJhbnNsYXRlZCkgd2lkZ2V0IHR5cGUsIG5vdCB0aGVcbiAgICAvLyBpbnRlcm5hbCBvbmU6IHRoZSBBSS1zdWdnZXN0aW9ucyBhY2NvdW50aW5nIGpvaW5zIHRoZXNlIGV2ZW50cyBhZ2FpbnN0IHRoZSBiYWNrZW5kXG4gICAgLy8gcmVnaXN0cnksIHdoaWNoIGlzIGtleWVkIGJ5IHRoZSB3aXJlIHR5cGUgKGUuZy4gUHJvZHVjdENhcmRWMyBpcyBzZW50IOKAlCBhbmQgc3RvcmVkIOKAlFxuICAgIC8vIGFzIEltYWdlUHJvbXB0Q2FyZFYzKS4gU3RhbXBpbmcgdGhlIGludGVybmFsIG5hbWUgaGVyZSB6ZXJvZWQgdGhvc2Ugc3RhdHMuIEFuXG4gICAgLy8gdW5tYXBwZWQgdHlwZSBrZWVwcyB0aGUgaW50ZXJuYWwgbmFtZSDigJQgYW5hbHl0aWNzIG11c3QgbmV2ZXIgYmxvY2sgc2VydmluZy5cbiAgICBsZXQgd2lyZVdpZGdldFR5cGU6IHN0cmluZyA9IHJlcXVlc3Qud2lkZ2V0VHlwZTtcbiAgICB0cnkge1xuICAgICAgd2lyZVdpZGdldFR5cGUgPSBjb3JlV2lkZ2V0VHlwZVRvQXBpV2lkZ2V0VHlwZShyZXF1ZXN0LndpZGdldFR5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdubyB3aXJlIG1hcHBpbmcgZm9yIHdpZGdldCB0eXBlIOKAlCBrZWVwaW5nIGludGVybmFsIG5hbWUnLCB7XG4gICAgICAgIHdpZGdldFR5cGU6IHJlcXVlc3Qud2lkZ2V0VHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlnLnRyYWNrRXZlbnQ/Lih7XG4gICAgICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0VGV4dFJlcXVlc3QsXG4gICAgICBldmVudFByb3BzOiB7XG4gICAgICAgIHdpZGdldF90eXBlOiB3aXJlV2lkZ2V0VHlwZSxcbiAgICAgICAgcmVxdWVzdF9pZDogd2lkZ2V0VGV4dFJlcXVlc3QucmVxdWVzdElkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFJlYXNvbiB0aGUgQVBJIHBhdGggZmFpbGVkLCBzdXJmYWNlZCBvbiB0aGUgc3RhdGljIGZhbGxiYWNrIGZvciB3aWRnZXQtbG9hZCBkaWFnbm9zdGljcy5cbiAgICBsZXQgZmFsbGJhY2tSZWFzb246ICd0aW1lb3V0JyB8ICdlcnJvcicgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgd2l0aFRpbWVvdXQoXG4gICAgICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEhhcmRjb3B5KHdpZGdldFRleHRSZXF1ZXN0KSxcbiAgICAgICAgSEFSRENPUFlfVElNRU9VVF9NUyxcbiAgICAgICk7XG4gICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUmVzcG9uc2UgPSBjb252ZXJ0VG9IYXJkY29weVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdjb252ZXJ0ZWQgcmVzcG9uc2UnLCBjb252ZXJ0ZWRSZXNwb25zZSk7XG4gICAgICAgIHRoaXMuY29uZmlnLnRyYWNrRXZlbnQ/Lih7XG4gICAgICAgICAgZXZlbnROYW1lOiBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLldpZGdldFRleHRSZXNwb25zZSxcbiAgICAgICAgICBldmVudFByb3BzOiB7XG4gICAgICAgICAgICB3aWRnZXRfdHlwZTogd2lyZVdpZGdldFR5cGUsXG4gICAgICAgICAgICByZXNwb25zZV9pZDogcmVzcG9uc2UucmVzcG9uc2VJZCxcbiAgICAgICAgICAgIHdpZGdldF90ZXh0OiByZXNwb25zZS52YWx1ZXMsXG4gICAgICAgICAgICByZXF1ZXN0X2lkOiB3aWRnZXRUZXh0UmVxdWVzdC5yZXF1ZXN0SWQsXG4gICAgICAgICAgICAvLyBXaGljaCBtZXRob2Qgc2VydmVkIGVhY2ggb3ZlcnJpZGRlbiBzbG90IOKAlCB0cmFpbmluZy9hdHRyaWJ1dGlvblxuICAgICAgICAgICAgLy8gcmVhZHMgdGhpcyBmcm9tIHRoZSBhbmFseXRpY3MgZXZlbnQ7IHBhc3NlZCB0aHJvdWdoIHZlcmJhdGltLlxuICAgICAgICAgICAgLi4uKHJlc3BvbnNlLmFpU3VnZ2VzdGlvbnNBdHRyaWJ1dGlvbkJ5U2xvdFxuICAgICAgICAgICAgICA/IHsgYWlfc3VnZ2VzdGlvbnNfYXR0cmlidXRpb25fYnlfc2xvdDogcmVzcG9uc2UuYWlTdWdnZXN0aW9uc0F0dHJpYnV0aW9uQnlTbG90IH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IC4uLmNvbnZlcnRlZFJlc3BvbnNlLCBzZXJ2ZWRGcm9tOiAnYXBpJyB9O1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIubG9nRXJyb3IoJ2Vycm9yIGdldHRpbmcgaGFyZGNvcHkgZnJvbSBiYWNrZW5kJywgZXJyb3IpO1xuICAgICAgZmFsbGJhY2tSZWFzb24gPVxuICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3RpbWVkIG91dCcpID8gJ3RpbWVvdXQnIDogJ2Vycm9yJztcbiAgICB9XG5cbiAgICBjb25zdCBtb2NrUmVzcG9uc2UgPSBNT0NLX0hBUkRDT1BZX1JFU1BPTlNFW3JlcXVlc3Qud2lkZ2V0VHlwZV07XG4gICAgaWYgKG1vY2tSZXNwb25zZSkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdubyByZWFsIHJlc3BvbnNlLCB1c2luZyBtb2NrJywgbW9ja1Jlc3BvbnNlKTtcbiAgICAgIHJldHVybiB7IC4uLm1vY2tSZXNwb25zZSwgc2VydmVkRnJvbTogJ3N0YXRpYycsIGZhbGxiYWNrUmVhc29uOiBmYWxsYmFja1JlYXNvbiA/PyAnZXJyb3InIH07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgTm8gaGFyZGNvcHkgcmVzcG9uc2UgZm91bmQgZm9yIHdpZGdldCB0eXBlOiAke3JlcXVlc3Qud2lkZ2V0VHlwZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9ja0hhcmRjb3B5U2VydmljZSBpbXBsZW1lbnRzIElIYXJkY29weVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8V2lkZ2V0VHlwZVYzLCBIYXJkY29weVJlc3BvbnNlPj4gPSB7fSkge31cblxuICBhc3luYyBnZXRIYXJkY29weShyZXF1ZXN0OiBIYXJkY29weVJlcXVlc3QpOiBQcm9taXNlPEhhcmRjb3B5UmVzcG9uc2U+IHtcbiAgICBjb25zdCBmYWxsYmFja1dpZGdldFR5cGUgPVxuICAgICAgcmVxdWVzdC53aWRnZXRUeXBlID09PSBXaWRnZXRUeXBlVjMuUHJvZHVjdENhcmRWM1xuICAgICAgICA/IFdpZGdldFR5cGVWMy5JbWFnZVByb21wdENhcmRWM1xuICAgICAgICA6IHJlcXVlc3Qud2lkZ2V0VHlwZTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID1cbiAgICAgIHRoaXMub3ZlcnJpZGVzW3JlcXVlc3Qud2lkZ2V0VHlwZV0gPz9cbiAgICAgIHRoaXMub3ZlcnJpZGVzW2ZhbGxiYWNrV2lkZ2V0VHlwZV0gPz9cbiAgICAgIE1PQ0tfSEFSRENPUFlfUkVTUE9OU0VbcmVxdWVzdC53aWRnZXRUeXBlXTtcblxuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gaGFyZGNvcHkgcmVzcG9uc2UgZm91bmQgZm9yIHdpZGdldCB0eXBlOiAke3JlcXVlc3Qud2lkZ2V0VHlwZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBZUEsTUFBTSxTQUFTLElBQUlBLGVBQU8sa0JBQWtCO0FBYTVDLE1BQWEsc0JBQXNCO0FBS25DLE1BQU0sZUFBa0IsU0FBcUIsT0FBMkI7Q0FDdEUsSUFBSUM7Q0FDSixNQUFNLFVBQVUsSUFBSSxTQUFnQixHQUFHLFdBQVc7QUFDaEQsVUFBUSxpQkFBaUIsdUJBQU8sSUFBSSxNQUFNLG9DQUFvQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUc7R0FDM0Y7QUFDRixRQUFPLFFB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
@@ -1,5 +1,6 @@
1
1
  const require_hardcopyService = require('./hardcopyService.cjs');
2
2
 
3
+ exports.HARDCOPY_TIMEOUT_MS = require_hardcopyService.HARDCOPY_TIMEOUT_MS;
3
4
  exports.HardcopyService = require_hardcopyService.HardcopyService;
4
5
  exports.MOCK_HARDCOPY_RESPONSE = require_hardcopyService.MOCK_HARDCOPY_RESPONSE;
5
6
  exports.MockHardcopyService = require_hardcopyService.MockHardcopyService;
@@ -1,2 +1,2 @@
1
- import { HardcopyRequest, HardcopyResponse, HardcopyService, HardcopyServiceConfig, IHardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService } from "./hardcopyService.cjs";
2
- export { HardcopyRequest, HardcopyResponse, HardcopyService, HardcopyServiceConfig, IHardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService };
1
+ import { HARDCOPY_TIMEOUT_MS, HardcopyRequest, HardcopyResponse, HardcopyService, HardcopyServiceConfig, IHardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService } from "./hardcopyService.cjs";
2
+ export { HARDCOPY_TIMEOUT_MS, HardcopyRequest, HardcopyResponse, HardcopyService, HardcopyServiceConfig, IHardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService };
@@ -1,2 +1,2 @@
1
- import { HardcopyRequest, HardcopyResponse, HardcopyService, HardcopyServiceConfig, IHardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService } from "./hardcopyService.js";
2
- export { HardcopyRequest, HardcopyResponse, HardcopyService, HardcopyServiceConfig, IHardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService };
1
+ import { HARDCOPY_TIMEOUT_MS, HardcopyRequest, HardcopyResponse, HardcopyService, HardcopyServiceConfig, IHardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService } from "./hardcopyService.js";
2
+ export { HARDCOPY_TIMEOUT_MS, HardcopyRequest, HardcopyResponse, HardcopyService, HardcopyServiceConfig, IHardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService };
@@ -1,3 +1,3 @@
1
- import { HardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService } from "./hardcopyService.js";
1
+ import { HARDCOPY_TIMEOUT_MS, HardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService } from "./hardcopyService.js";
2
2
 
3
- export { HardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService };
3
+ export { HARDCOPY_TIMEOUT_MS, HardcopyService, MOCK_HARDCOPY_RESPONSE, MockHardcopyService };
@@ -21,7 +21,7 @@ const logger = new require_logger.default("urlResolverWarmupService");
21
21
  * fetching. Concurrent calls for the same URL are deduped inside
22
22
  * CommerceApiClient.resolveUrl.
23
23
  */
24
- const warmUrlResolver = async ({ baseUrl, apiKey, enviveServiceConfig, show, enviveOn, env, contextSource, featureFlagService }) => {
24
+ const warmUrlResolver = async ({ baseUrl, apiKey, enviveServiceConfig, show, enviveOn, env, contextSource, featureFlagService, precomputedUrlResolving }) => {
25
25
  try {
26
26
  const store = require_atomStore.getAtomStore();
27
27
  const cleansedUrl = window.location.href.toLowerCase().trim();
@@ -39,7 +39,7 @@ const warmUrlResolver = async ({ baseUrl, apiKey, enviveServiceConfig, show, env
39
39
  if (featureFlagService && store.get(require_graphqlConfig.featureFlagServiceAtom) === void 0) store.set(require_graphqlConfig.featureFlagServiceAtom, { featureFlagService });
40
40
  const { baseVersion, baseVersionSource } = enviveServiceConfig.orgConfig?.resolution ?? {};
41
41
  if (baseVersion && baseVersionSource && baseVersionSource !== "deployed") store.set(require_resolvedBaseConfigVersion.resolvedBaseConfigVersionAtom, baseVersion);
42
- const response = await require_application_commerce_api.default.resolveUrl(cleansedUrl);
42
+ const response = precomputedUrlResolving && precomputedUrlResolving.url === cleansedUrl ? precomputedUrlResolving.response : await require_application_commerce_api.default.resolveUrl(cleansedUrl);
43
43
  store.set(require_variant.urlResolverAtom, {
44
44
  url: cleansedUrl,
45
45
  response
@@ -51,4 +51,4 @@ const warmUrlResolver = async ({ baseUrl, apiKey, enviveServiceConfig, show, env
51
51
 
52
52
  //#endregion
53
53
  exports.warmUrlResolver = warmUrlResolver;
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwiZ2V0QXRvbVN0b3JlIiwidXJsUmVzb2x2ZXJBdG9tIiwiZW52aXZlQ29uZmlnQXRvbSIsImZlYXR1cmVGbGFnU2VydmljZUF0b20iLCJyZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSIsIkNvbW1lcmNlQXBpQ2xpZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VybFJlc29sdmVyV2FybXVwU2VydmljZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbWVyY2VBcGlDbGllbnQgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2NvbW1lcmNlLWFwaSc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBVcmxSZXNvbHZlclJlc3BvbnNlLCB1cmxSZXNvbHZlckF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgZ2V0QXRvbVN0b3JlIH0gZnJvbSAnc3JjL2F0b21zL2F0b21TdG9yZS9hdG9tU3RvcmUnO1xuaW1wb3J0IHsgZW52aXZlQ29uZmlnQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCB7IHJlc29sdmVkQmFzZUNvbmZpZ1ZlcnNpb25BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9yZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uJztcbmltcG9ydCB7IGZlYXR1cmVGbGFnU2VydmljZUF0b20gfSBmcm9tICdzcmMvYXRvbXMvb3JnL2dyYXBocWxDb25maWcnO1xuaW1wb3J0IHsgRW52aXZlU2VydmljZUNvbmZpZyB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ3VybFJlc29sdmVyV2FybXVwU2VydmljZScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhcm1VcmxSZXNvbHZlclBhcmFtcyB7XG4gIGJhc2VVcmw6IHN0cmluZztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIGVudml2ZVNlcnZpY2VDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWc7XG4gIHNob3c/OiBib29sZWFuO1xuICBlbnZpdmVPbj86IGJvb2xlYW47XG4gIGVudj86IHN0cmluZztcbiAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlPzogRmVhdHVyZUZsYWdTZXJ2aWNlO1xufVxuXG4vKipcbiAqIEZpcmVzIHRoZSAvdjEvdXJsX3Jlc29sdmluZyByZXF1ZXN0IGFzIHNvb24gYXMgdGhlIG9yZyBjb25maWcgaXMgYXZhaWxhYmxlLFxuICogaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgUmVhY3QgdHJlZSB0byBtb3VudCBhbmQgUGFnZVByb3ZpZGVyJ3MgZWZmZWN0IHRvXG4gKiBydW4g4oCUIHRoYXQgcmVtb3ZlcyBhIGZ1bGwgbmV0d29yayByb3VuZCB0cmlwIGZyb20gdGhlIGZpcnN0LXdpZGdldC1wYWludFxuICogY3JpdGljYWwgcGF0aC5cbiAqXG4gKiBTZWVkcyB0aGUgc2FtZSBhdG9tcyBFbnZpdmVQcm92aWRlci9FbnZpdmVDb25maWdQcm92aWRlciBwb3B1bGF0ZSBsYXRlclxuICogKHdpdGggaWRlbnRpY2FsIHZhbHVlcykgc28gdGhlIHJlcXVlc3QgY29udGV4dCBtYXRjaGVzIHRoZSBvbmVcbiAqIFBhZ2VQcm92aWRlciB3b3VsZCBzZW5kLCB0aGVuIHN0b3JlcyB0aGUgcmVzcG9uc2UgaW4gdGhlXG4gKiBzZXNzaW9uU3RvcmFnZS1iYWNrZWQgdXJsUmVzb2x2ZXJBdG9tIHRoYXQgUGFnZVByb3ZpZGVyIGNvbnN1bHRzIGJlZm9yZVxuICogZmV0Y2hpbmcuIENvbmN1cnJlbnQgY2FsbHMgZm9yIHRoZSBzYW1lIFVSTCBhcmUgZGVkdXBlZCBpbnNpZGVcbiAqIENvbW1lcmNlQXBpQ2xpZW50LnJlc29sdmVVcmwuXG4gKi9cbmV4cG9ydCBjb25zdCB3YXJtVXJsUmVzb2x2ZXIgPSBhc3luYyAoe1xuICBiYXNlVXJsLFxuICBhcGlLZXksXG4gIGVudml2ZVNlcnZpY2VDb25maWcsXG4gIHNob3csXG4gIGVudml2ZU9uLFxuICBlbnYsXG4gIGNvbnRleHRTb3VyY2UsXG4gIGZlYXR1cmVGbGFnU2VydmljZSxcbn06IFdhcm1VcmxSZXNvbHZlclBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gICAgLy8gTXVzdCBtYXRjaCBQYWdlUHJvdmlkZXIncyBVUkwgY2xlYW5zaW5nIHNvIHRoZSBjYWNoZSBrZXkgbGluZXMgdXAuXG4gICAgY29uc3QgY2xlYW5zZWRVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAoc3RvcmUuZ2V0KHVybFJlc29sdmVyQXRvbSlbY2xlYW5zZWRVcmxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGhlIENvbW1lcmNlQXBpQ2xpZW50IHNpbmdsZXRvbiBjYXB0dXJlcyBiYXNlVXJsL2FwaUtleSBhdCBmaXJzdFxuICAgIC8vIGluc3RhbnRpYXRpb24sIHNvIHRoZXNlIGF0b21zIG11c3QgYmUgc2VlZGVkIGJlZm9yZSBhbnkgQVBJIGNhbGwuXG4gICAgLy8gT25seSBzZWVkIHdoZW4gdW5zZXQg4oCUIHByb3ZpZGVycyBvd24gdGhpcyBhdG9tIG9uY2UgUmVhY3QgbW91bnRzLlxuICAgIGlmIChzdG9yZS5nZXQoZW52aXZlQ29uZmlnQXRvbSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RvcmUuc2V0KGVudml2ZUNvbmZpZ0F0b20sIHtcbiAgICAgICAgYmFzZVVybCxcbiAgICAgICAgb3JnTGV2ZWxBcGlLZXk6IGFwaUtleSxcbiAgICAgICAgb3JnU2hvcnROYW1lOiBlbnZpdmVTZXJ2aWNlQ29uZmlnLm9yZy5vcmcuc2hvcnRfbmFtZSxcbiAgICAgICAgb3JnSWQ6IGVudml2ZVNlcnZpY2VDb25maWcub3JnLm9yZy5pZCxcbiAgICAgICAgc2hvdyxcbiAgICAgICAgZW52aXZlT24sXG4gICAgICAgIGVudixcbiAgICAgICAgY29udGV4dFNvdXJjZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyByZXNvbHZlVXJsIHJlYWRzIGZlYXR1cmUgZ2F0ZXMgdGhyb3VnaCBmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tOyB3aXRob3V0XG4gICAgLy8gdGhpcyBzZWVkIHRoZSB3YXJtLXVwIHJlcXVlc3QgaXMgY29tcHV0ZWQgd2l0aCBmZWF0dXJlX2dhdGVzPXt9IGFuZFxuICAgIC8vIHRoYXQgcmVzcG9uc2UgaXMgd2hhdCBnZXRzIGNhY2hlZCBmb3IgUGFnZVByb3ZpZGVyLlxuICAgIGlmIChmZWF0dXJlRmxhZ1NlcnZpY2UgJiYgc3RvcmUuZ2V0KGZlYXR1cmVGbGFnU2VydmljZUF0b20pID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0b3JlLnNldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tLCB7IGZlYXR1cmVGbGFnU2VydmljZSB9KTtcbiAgICB9XG4gICAgLy8gTWlycm9ycyBFbnZpdmVQcm92aWRlcjogXCJkZXBsb3llZFwiIGlzIHRoZSBuby1waW4gc2VudGluZWwuXG4gICAgY29uc3QgeyBiYXNlVmVyc2lvbiwgYmFzZVZlcnNpb25Tb3VyY2UgfSA9IGVudml2ZVNlcnZpY2VDb25maWcub3JnQ29uZmlnPy5yZXNvbHV0aW9uID8/IHt9O1xuICAgIGlmIChiYXNlVmVyc2lvbiAmJiBiYXNlVmVyc2lvblNvdXJjZSAmJiBiYXNlVmVyc2lvblNvdXJjZSAhPT0gJ2RlcGxveWVkJykge1xuICAgICAgc3RvcmUuc2V0KHJlc29sdmVkQmFzZUNvbmZpZ1ZlcnNpb25BdG9tLCBiYXNlVmVyc2lvbik7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQucmVzb2x2ZVVybChjbGVhbnNlZFVybCkpIGFzIFVybFJlc29sdmVyUmVzcG9uc2U7XG4gICAgc3RvcmUuc2V0KHVybFJlc29sdmVyQXRvbSwgeyB1cmw6IGNsZWFuc2VkVXJsLCByZXNwb25zZSB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRmFpbCBvcGVuOiBQYWdlUHJvdmlkZXIgaXNzdWVzIGl0cyBvd24gcmVzb2x2ZVVybCBjYWxsIHdoZW4gdGhlIGNhY2hlXG4gICAgLy8gaXMgZW1wdHksIHNvIGEgd2FybS11cCBmYWlsdXJlIG5ldmVyIGJsb2NrcyByZW5kZXJpbmcuXG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdVUkwgcmVzb2x2ZXIgd2FybS11cCBmYWlsZWQnLCBlcnIpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQSxNQUFNLFNBQVMsSUFBSUEsdUJBQU8sMkJBQTJCOzs7Ozs7Ozs7Ozs7OztBQTBCckQsTUFBYSxrQkFBa0IsT0FBTyxFQUNwQyxTQUNBLFFBQ0EscUJBQ0EsTUFDQSxVQUNBLEtBQ0EsZUFDQSx5QkFDMEM7QUFDMUMsS0FBSTtFQUNGLE1BQU0sUUFBUUMsZ0NBQWM7RUFFNUIsTUFBTSxjQUFjLE9BQU8sU0FBUyxLQUFLLGFBQWEsQ0FBQyxNQUFNO0FBQzdELE1BQUksTUFBTSxJQUFJQyxnQ0FBZ0IsQ0FBQyxhQUM3QjtBQU1GLE1BQUksTUFBTSxJQUFJQyxtREFBaUIsS0FBSyxPQUNsQyxPQUFNLElBQUlBLG9EQUFrQjtHQUMxQjtHQUNBLGdCQUFnQjtHQUNoQixjQUFjLG9CQUFvQixJQUFJLElBQUk7R0FDMUMsT0FBTyxvQkFBb0IsSUFBSSxJQUFJO0dBQ25DO0dBQ0E7R0FDQTtHQUNBO0dBQ0QsQ0FBQztBQUtKLE1BQUksc0JBQXNCLE1BQU0sSUFBSUMsNkNBQXVCLEtBQUssT0FDOUQsT0FBTSxJQUFJQSw4Q0FBd0IsRUFBRSxvQkFBb0IsQ0FBQztFQUczRCxNQUFNLEVBQUUsYUFBYSxzQkFBc0Isb0JBQW9CLFdBQVcsY0FBYyxFQUFFO0FBQzFGLE1BQUksZUFBZSxxQkFBcUIsc0JBQXNCLFdBQzVELE9BQU0sSUFBSUMsaUVBQStCLFlBQVk7RUFHdkQsTUFBTSxXQUFZLE1BQU1DLHlDQUFrQixXQUFXLFlBQVk7QUFDakUsUUFBTSxJQUFJSixpQ0FBaUI7R0FBRSxLQUFLO0dBQWE7R0FBVSxDQUFDO1VBQ25ELEtBQUs7QUFHWixTQUFPLFNBQVMsK0JBQStCLElBQUkifQ==
54
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwiZ2V0QXRvbVN0b3JlIiwidXJsUmVzb2x2ZXJBdG9tIiwiZW52aXZlQ29uZmlnQXRvbSIsImZlYXR1cmVGbGFnU2VydmljZUF0b20iLCJyZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSIsIkNvbW1lcmNlQXBpQ2xpZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VybFJlc29sdmVyV2FybXVwU2VydmljZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbWVyY2VBcGlDbGllbnQgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2NvbW1lcmNlLWFwaSc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBVcmxSZXNvbHZlclJlc3BvbnNlLCB1cmxSZXNvbHZlckF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgZ2V0QXRvbVN0b3JlIH0gZnJvbSAnc3JjL2F0b21zL2F0b21TdG9yZS9hdG9tU3RvcmUnO1xuaW1wb3J0IHsgZW52aXZlQ29uZmlnQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCB7IHJlc29sdmVkQmFzZUNvbmZpZ1ZlcnNpb25BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9yZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uJztcbmltcG9ydCB7IGZlYXR1cmVGbGFnU2VydmljZUF0b20gfSBmcm9tICdzcmMvYXRvbXMvb3JnL2dyYXBocWxDb25maWcnO1xuaW1wb3J0IHsgRW52aXZlU2VydmljZUNvbmZpZyB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ3VybFJlc29sdmVyV2FybXVwU2VydmljZScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhcm1VcmxSZXNvbHZlclBhcmFtcyB7XG4gIGJhc2VVcmw6IHN0cmluZztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIGVudml2ZVNlcnZpY2VDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWc7XG4gIHNob3c/OiBib29sZWFuO1xuICBlbnZpdmVPbj86IGJvb2xlYW47XG4gIGVudj86IHN0cmluZztcbiAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlPzogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICAvLyBUaGUgdXJsX3Jlc29sdmluZyByZXN1bHQgL3YxL3Nlc3Npb24vYm9vdHN0cmFwIGFscmVhZHkgcHJvZHVjZWQgKHVuaWZpZWQtY29uZmlnXG4gIC8vIGdhdGUgT04pLCBwYWlyZWQgd2l0aCB0aGUgVVJMIGl0IHdhcyByZXNvbHZlZCBmb3IuIFdoZW4gc2V0IEFORCB0aGF0IFVSTCBzdGlsbFxuICAvLyBtYXRjaGVzIHRoZSBjdXJyZW50IG9uZSwgdGhlIHdhcm0tdXAgc2VlZHMgdXJsUmVzb2x2ZXJBdG9tIHdpdGggaXQgYW5kIHNraXBzXG4gIC8vIGl0cyBvd24gL3YxL3VybF9yZXNvbHZpbmcgY2FsbCDigJQgdGhlIHRoaXJkIGxlZyBvZiB0aGUgM+KGkjEgY29uc29saWRhdGlvbi4gSWYgYVxuICAvLyBTUEEgbmF2aWdhdGlvbiBjaGFuZ2VkIHRoZSBVUkwgc2luY2UgYm9vdHN0cmFwIHJhbiwgdGhlIFVSTHMgbm8gbG9uZ2VyIG1hdGNoXG4gIC8vIGFuZCB0aGUgd2FybS11cCBmYWxscyBiYWNrIHRvIHJlc29sdmVVcmwgKHNvIGEgc3RhbGUgdmFyaWFudCBpcyBuZXZlciBjYWNoZWRcbiAgLy8gdW5kZXIgdGhlIG5ldyBVUkwpLiBUaGUgYXRvbS1zZWVkaW5nIGFib3ZlIHN0aWxsIHJ1bnMgZWl0aGVyIHdheSwgc29cbiAgLy8gUGFnZVByb3ZpZGVyIChhbmQgYW55IGxhdGVyIG5hdmlnYXRpb24gcmVzb2x2ZVVybCkgc2VlcyB0aGUgc2FtZSBjb250ZXh0LlxuICBwcmVjb21wdXRlZFVybFJlc29sdmluZz86IHsgdXJsOiBzdHJpbmc7IHJlc3BvbnNlOiBVcmxSZXNvbHZlclJlc3BvbnNlIH0gfCBudWxsO1xufVxuXG4vKipcbiAqIEZpcmVzIHRoZSAvdjEvdXJsX3Jlc29sdmluZyByZXF1ZXN0IGFzIHNvb24gYXMgdGhlIG9yZyBjb25maWcgaXMgYXZhaWxhYmxlLFxuICogaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgUmVhY3QgdHJlZSB0byBtb3VudCBhbmQgUGFnZVByb3ZpZGVyJ3MgZWZmZWN0IHRvXG4gKiBydW4g4oCUIHRoYXQgcmVtb3ZlcyBhIGZ1bGwgbmV0d29yayByb3VuZCB0cmlwIGZyb20gdGhlIGZpcnN0LXdpZGdldC1wYWludFxuICogY3JpdGljYWwgcGF0aC5cbiAqXG4gKiBTZWVkcyB0aGUgc2FtZSBhdG9tcyBFbnZpdmVQcm92aWRlci9FbnZpdmVDb25maWdQcm92aWRlciBwb3B1bGF0ZSBsYXRlclxuICogKHdpdGggaWRlbnRpY2FsIHZhbHVlcykgc28gdGhlIHJlcXVlc3QgY29udGV4dCBtYXRjaGVzIHRoZSBvbmVcbiAqIFBhZ2VQcm92aWRlciB3b3VsZCBzZW5kLCB0aGVuIHN0b3JlcyB0aGUgcmVzcG9uc2UgaW4gdGhlXG4gKiBzZXNzaW9uU3RvcmFnZS1iYWNrZWQgdXJsUmVzb2x2ZXJBdG9tIHRoYXQgUGFnZVByb3ZpZGVyIGNvbnN1bHRzIGJlZm9yZVxuICogZmV0Y2hpbmcuIENvbmN1cnJlbnQgY2FsbHMgZm9yIHRoZSBzYW1lIFVSTCBhcmUgZGVkdXBlZCBpbnNpZGVcbiAqIENvbW1lcmNlQXBpQ2xpZW50LnJlc29sdmVVcmwuXG4gKi9cbmV4cG9ydCBjb25zdCB3YXJtVXJsUmVzb2x2ZXIgPSBhc3luYyAoe1xuICBiYXNlVXJsLFxuICBhcGlLZXksXG4gIGVudml2ZVNlcnZpY2VDb25maWcsXG4gIHNob3csXG4gIGVudml2ZU9uLFxuICBlbnYsXG4gIGNvbnRleHRTb3VyY2UsXG4gIGZlYXR1cmVGbGFnU2VydmljZSxcbiAgcHJlY29tcHV0ZWRVcmxSZXNvbHZpbmcsXG59OiBXYXJtVXJsUmVzb2x2ZXJQYXJhbXMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgIC8vIE11c3QgbWF0Y2ggUGFnZVByb3ZpZGVyJ3MgVVJMIGNsZWFuc2luZyBzbyB0aGUgY2FjaGUga2V5IGxpbmVzIHVwLlxuICAgIGNvbnN0IGNsZWFuc2VkVXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgaWYgKHN0b3JlLmdldCh1cmxSZXNvbHZlckF0b20pW2NsZWFuc2VkVXJsXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoZSBDb21tZXJjZUFwaUNsaWVudCBzaW5nbGV0b24gY2FwdHVyZXMgYmFzZVVybC9hcGlLZXkgYXQgZmlyc3RcbiAgICAvLyBpbnN0YW50aWF0aW9uLCBzbyB0aGVzZSBhdG9tcyBtdXN0IGJlIHNlZWRlZCBiZWZvcmUgYW55IEFQSSBjYWxsLlxuICAgIC8vIE9ubHkgc2VlZCB3aGVuIHVuc2V0IOKAlCBwcm92aWRlcnMgb3duIHRoaXMgYXRvbSBvbmNlIFJlYWN0IG1vdW50cy5cbiAgICBpZiAoc3RvcmUuZ2V0KGVudml2ZUNvbmZpZ0F0b20pID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0b3JlLnNldChlbnZpdmVDb25maWdBdG9tLCB7XG4gICAgICAgIGJhc2VVcmwsXG4gICAgICAgIG9yZ0xldmVsQXBpS2V5OiBhcGlLZXksXG4gICAgICAgIG9yZ1Nob3J0TmFtZTogZW52aXZlU2VydmljZUNvbmZpZy5vcmcub3JnLnNob3J0X25hbWUsXG4gICAgICAgIG9yZ0lkOiBlbnZpdmVTZXJ2aWNlQ29uZmlnLm9yZy5vcmcuaWQsXG4gICAgICAgIHNob3csXG4gICAgICAgIGVudml2ZU9uLFxuICAgICAgICBlbnYsXG4gICAgICAgIGNvbnRleHRTb3VyY2UsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gcmVzb2x2ZVVybCByZWFkcyBmZWF0dXJlIGdhdGVzIHRocm91Z2ggZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbTsgd2l0aG91dFxuICAgIC8vIHRoaXMgc2VlZCB0aGUgd2FybS11cCByZXF1ZXN0IGlzIGNvbXB1dGVkIHdpdGggZmVhdHVyZV9nYXRlcz17fSBhbmRcbiAgICAvLyB0aGF0IHJlc3BvbnNlIGlzIHdoYXQgZ2V0cyBjYWNoZWQgZm9yIFBhZ2VQcm92aWRlci5cbiAgICBpZiAoZmVhdHVyZUZsYWdTZXJ2aWNlICYmIHN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdG9yZS5zZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSwgeyBmZWF0dXJlRmxhZ1NlcnZpY2UgfSk7XG4gICAgfVxuICAgIC8vIE1pcnJvcnMgRW52aXZlUHJvdmlkZXI6IFwiZGVwbG95ZWRcIiBpcyB0aGUgbm8tcGluIHNlbnRpbmVsLlxuICAgIGNvbnN0IHsgYmFzZVZlcnNpb24sIGJhc2VWZXJzaW9uU291cmNlIH0gPSBlbnZpdmVTZXJ2aWNlQ29uZmlnLm9yZ0NvbmZpZz8ucmVzb2x1dGlvbiA/PyB7fTtcbiAgICBpZiAoYmFzZVZlcnNpb24gJiYgYmFzZVZlcnNpb25Tb3VyY2UgJiYgYmFzZVZlcnNpb25Tb3VyY2UgIT09ICdkZXBsb3llZCcpIHtcbiAgICAgIHN0b3JlLnNldChyZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSwgYmFzZVZlcnNpb24pO1xuICAgIH1cblxuICAgIC8vIEJvb3RzdHJhcCBhbHJlYWR5IHJlc29sdmVkIGEgVVJMIGluIHRoZSBzYW1lIHJvdW5kIHRyaXAgYXMgdGhlIGNvbmZpZyDigJRcbiAgICAvLyByZXVzZSBpdCBPTkxZIHdoZW4gaXQncyBzdGlsbCB0aGUgY3VycmVudCBVUkwsIHNvIGl0cyB2YXJpYW50IGlzIG5ldmVyXG4gICAgLy8gY2FjaGVkIHVuZGVyIGEgZGlmZmVyZW50IGtleSBhZnRlciBhIFNQQSBuYXZpZ2F0aW9uLiBPdGhlcndpc2UgcmVzb2x2ZSB0aGVcbiAgICAvLyBjdXJyZW50IFVSTCBvdXJzZWx2ZXMgKHNhbWUgYXMgdGhlIG5vLXByZWNvbXB1dGUgcGF0aCkuXG4gICAgY29uc3QgcmVzcG9uc2UgPVxuICAgICAgcHJlY29tcHV0ZWRVcmxSZXNvbHZpbmcgJiYgcHJlY29tcHV0ZWRVcmxSZXNvbHZpbmcudXJsID09PSBjbGVhbnNlZFVybFxuICAgICAgICA/IHByZWNvbXB1dGVkVXJsUmVzb2x2aW5nLnJlc3BvbnNlXG4gICAgICAgIDogKChhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5yZXNvbHZlVXJsKGNsZWFuc2VkVXJsKSkgYXMgVXJsUmVzb2x2ZXJSZXNwb25zZSk7XG4gICAgc3RvcmUuc2V0KHVybFJlc29sdmVyQXRvbSwgeyB1cmw6IGNsZWFuc2VkVXJsLCByZXNwb25zZSB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRmFpbCBvcGVuOiBQYWdlUHJvdmlkZXIgaXNzdWVzIGl0cyBvd24gcmVzb2x2ZVVybCBjYWxsIHdoZW4gdGhlIGNhY2hlXG4gICAgLy8gaXMgZW1wdHksIHNvIGEgd2FybS11cCBmYWlsdXJlIG5ldmVyIGJsb2NrcyByZW5kZXJpbmcuXG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdVUkwgcmVzb2x2ZXIgd2FybS11cCBmYWlsZWQnLCBlcnIpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQSxNQUFNLFNBQVMsSUFBSUEsdUJBQU8sMkJBQTJCOzs7Ozs7Ozs7Ozs7OztBQW1DckQsTUFBYSxrQkFBa0IsT0FBTyxFQUNwQyxTQUNBLFFBQ0EscUJBQ0EsTUFDQSxVQUNBLEtBQ0EsZUFDQSxvQkFDQSw4QkFDMEM7QUFDMUMsS0FBSTtFQUNGLE1BQU0sUUFBUUMsZ0NBQWM7RUFFNUIsTUFBTSxjQUFjLE9BQU8sU0FBUyxLQUFLLGFBQWEsQ0FBQyxNQUFNO0FBQzdELE1BQUksTUFBTSxJQUFJQyxnQ0FBZ0IsQ0FBQyxhQUM3QjtBQU1GLE1BQUksTUFBTSxJQUFJQyxtREFBaUIsS0FBSyxPQUNsQyxPQUFNLElBQUlBLG9EQUFrQjtHQUMxQjtHQUNBLGdCQUFnQjtHQUNoQixjQUFjLG9CQUFvQixJQUFJLElBQUk7R0FDMUMsT0FBTyxvQkFBb0IsSUFBSSxJQUFJO0dBQ25DO0dBQ0E7R0FDQTtHQUNBO0dBQ0QsQ0FBQztBQUtKLE1BQUksc0JBQXNCLE1BQU0sSUFBSUMsNkNBQXVCLEtBQUssT0FDOUQsT0FBTSxJQUFJQSw4Q0FBd0IsRUFBRSxvQkFBb0IsQ0FBQztFQUczRCxNQUFNLEVBQUUsYUFBYSxzQkFBc0Isb0JBQW9CLFdBQVcsY0FBYyxFQUFFO0FBQzFGLE1BQUksZUFBZSxxQkFBcUIsc0JBQXNCLFdBQzVELE9BQU0sSUFBSUMsaUVBQStCLFlBQVk7RUFPdkQsTUFBTSxXQUNKLDJCQUEyQix3QkFBd0IsUUFBUSxjQUN2RCx3QkFBd0IsV0FDdEIsTUFBTUMseUNBQWtCLFdBQVcsWUFBWTtBQUN2RCxRQUFNLElBQUlKLGlDQUFpQjtHQUFFLEtBQUs7R0FBYTtHQUFVLENBQUM7VUFDbkQsS0FBSztBQUdaLFNBQU8sU0FBUywrQkFBK0IsSUFBSSJ9
@@ -1,3 +1,4 @@
1
+ import { UrlResolverResponse } from "../../atoms/app/variant.cjs";
1
2
  import { FeatureFlagService } from "../featureFlagService/index.cjs";
2
3
  import { EnviveServiceConfig } from "../enviveConfigService/enviveConfigService.cjs";
3
4
 
@@ -11,6 +12,10 @@ interface WarmUrlResolverParams {
11
12
  env?: string;
12
13
  contextSource?: string;
13
14
  featureFlagService?: FeatureFlagService;
15
+ precomputedUrlResolving?: {
16
+ url: string;
17
+ response: UrlResolverResponse;
18
+ } | null;
14
19
  }
15
20
  /**
16
21
  * Fires the /v1/url_resolving request as soon as the org config is available,
@@ -33,8 +38,9 @@ declare const warmUrlResolver: ({
33
38
  enviveOn,
34
39
  env,
35
40
  contextSource,
36
- featureFlagService
41
+ featureFlagService,
42
+ precomputedUrlResolving
37
43
  }: WarmUrlResolverParams) => Promise<void>;
38
44
  //#endregion
39
45
  export { WarmUrlResolverParams, warmUrlResolver };
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VybFJlc29sdmVyV2FybXVwU2VydmljZS9pbmRleC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudml2ZVNlcnZpY2VDb25maWcgfSBmcm9tICdzcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZSc7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UnO1xuZXhwb3J0IGludGVyZmFjZSBXYXJtVXJsUmVzb2x2ZXJQYXJhbXMge1xuICAgIGJhc2VVcmw6IHN0cmluZztcbiAgICBhcGlLZXk6IHN0cmluZztcbiAgICBlbnZpdmVTZXJ2aWNlQ29uZmlnOiBFbnZpdmVTZXJ2aWNlQ29uZmlnO1xuICAgIHNob3c/OiBib29sZWFuO1xuICAgIGVudml2ZU9uPzogYm9vbGVhbjtcbiAgICBlbnY/OiBzdHJpbmc7XG4gICAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/OiBGZWF0dXJlRmxhZ1NlcnZpY2U7XG59XG4vKipcbiAqIEZpcmVzIHRoZSAvdjEvdXJsX3Jlc29sdmluZyByZXF1ZXN0IGFzIHNvb24gYXMgdGhlIG9yZyBjb25maWcgaXMgYXZhaWxhYmxlLFxuICogaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgUmVhY3QgdHJlZSB0byBtb3VudCBhbmQgUGFnZVByb3ZpZGVyJ3MgZWZmZWN0IHRvXG4gKiBydW4g4oCUIHRoYXQgcmVtb3ZlcyBhIGZ1bGwgbmV0d29yayByb3VuZCB0cmlwIGZyb20gdGhlIGZpcnN0LXdpZGdldC1wYWludFxuICogY3JpdGljYWwgcGF0aC5cbiAqXG4gKiBTZWVkcyB0aGUgc2FtZSBhdG9tcyBFbnZpdmVQcm92aWRlci9FbnZpdmVDb25maWdQcm92aWRlciBwb3B1bGF0ZSBsYXRlclxuICogKHdpdGggaWRlbnRpY2FsIHZhbHVlcykgc28gdGhlIHJlcXVlc3QgY29udGV4dCBtYXRjaGVzIHRoZSBvbmVcbiAqIFBhZ2VQcm92aWRlciB3b3VsZCBzZW5kLCB0aGVuIHN0b3JlcyB0aGUgcmVzcG9uc2UgaW4gdGhlXG4gKiBzZXNzaW9uU3RvcmFnZS1iYWNrZWQgdXJsUmVzb2x2ZXJBdG9tIHRoYXQgUGFnZVByb3ZpZGVyIGNvbnN1bHRzIGJlZm9yZVxuICogZmV0Y2hpbmcuIENvbmN1cnJlbnQgY2FsbHMgZm9yIHRoZSBzYW1lIFVSTCBhcmUgZGVkdXBlZCBpbnNpZGVcbiAqIENvbW1lcmNlQXBpQ2xpZW50LnJlc29sdmVVcmwuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHdhcm1VcmxSZXNvbHZlcjogKHsgYmFzZVVybCwgYXBpS2V5LCBlbnZpdmVTZXJ2aWNlQ29uZmlnLCBzaG93LCBlbnZpdmVPbiwgZW52LCBjb250ZXh0U291cmNlLCBmZWF0dXJlRmxhZ1NlcnZpY2UsIH06IFdhcm1VcmxSZXNvbHZlclBhcmFtcykgPT4gUHJvbWlzZTx2b2lkPjtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLElBQVcsd0JBQXdCO0NBQUM7T0FBRztPQUFBO0NBQUE7QUFDdkMsSUFBVyxrQkFBUTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQSJ9
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VybFJlc29sdmVyV2FybXVwU2VydmljZS9pbmRleC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVybFJlc29sdmVyUmVzcG9uc2UgfSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgRW52aXZlU2VydmljZUNvbmZpZyB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5leHBvcnQgaW50ZXJmYWNlIFdhcm1VcmxSZXNvbHZlclBhcmFtcyB7XG4gICAgYmFzZVVybDogc3RyaW5nO1xuICAgIGFwaUtleTogc3RyaW5nO1xuICAgIGVudml2ZVNlcnZpY2VDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWc7XG4gICAgc2hvdz86IGJvb2xlYW47XG4gICAgZW52aXZlT24/OiBib29sZWFuO1xuICAgIGVudj86IHN0cmluZztcbiAgICBjb250ZXh0U291cmNlPzogc3RyaW5nO1xuICAgIGZlYXR1cmVGbGFnU2VydmljZT86IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgICBwcmVjb21wdXRlZFVybFJlc29sdmluZz86IHtcbiAgICAgICAgdXJsOiBzdHJpbmc7XG4gICAgICAgIHJlc3BvbnNlOiBVcmxSZXNvbHZlclJlc3BvbnNlO1xuICAgIH0gfCBudWxsO1xufVxuLyoqXG4gKiBGaXJlcyB0aGUgL3YxL3VybF9yZXNvbHZpbmcgcmVxdWVzdCBhcyBzb29uIGFzIHRoZSBvcmcgY29uZmlnIGlzIGF2YWlsYWJsZSxcbiAqIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIFJlYWN0IHRyZWUgdG8gbW91bnQgYW5kIFBhZ2VQcm92aWRlcidzIGVmZmVjdCB0b1xuICogcnVuIOKAlCB0aGF0IHJlbW92ZXMgYSBmdWxsIG5ldHdvcmsgcm91bmQgdHJpcCBmcm9tIHRoZSBmaXJzdC13aWRnZXQtcGFpbnRcbiAqIGNyaXRpY2FsIHBhdGguXG4gKlxuICogU2VlZHMgdGhlIHNhbWUgYXRvbXMgRW52aXZlUHJvdmlkZXIvRW52aXZlQ29uZmlnUHJvdmlkZXIgcG9wdWxhdGUgbGF0ZXJcbiAqICh3aXRoIGlkZW50aWNhbCB2YWx1ZXMpIHNvIHRoZSByZXF1ZXN0IGNvbnRleHQgbWF0Y2hlcyB0aGUgb25lXG4gKiBQYWdlUHJvdmlkZXIgd291bGQgc2VuZCwgdGhlbiBzdG9yZXMgdGhlIHJlc3BvbnNlIGluIHRoZVxuICogc2Vzc2lvblN0b3JhZ2UtYmFja2VkIHVybFJlc29sdmVyQXRvbSB0aGF0IFBhZ2VQcm92aWRlciBjb25zdWx0cyBiZWZvcmVcbiAqIGZldGNoaW5nLiBDb25jdXJyZW50IGNhbGxzIGZvciB0aGUgc2FtZSBVUkwgYXJlIGRlZHVwZWQgaW5zaWRlXG4gKiBDb21tZXJjZUFwaUNsaWVudC5yZXNvbHZlVXJsLlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCB3YXJtVXJsUmVzb2x2ZXI6ICh7IGJhc2VVcmwsIGFwaUtleSwgZW52aXZlU2VydmljZUNvbmZpZywgc2hvdywgZW52aXZlT24sIGVudiwgY29udGV4dFNvdXJjZSwgZmVhdHVyZUZsYWdTZXJ2aWNlLCBwcmVjb21wdXRlZFVybFJlc29sdmluZywgfTogV2FybVVybFJlc29sdmVyUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUdBLElBQVcsd0JBQXdCO0NBQUM7T0FBRztPQUFBO09BQUE7Q0FBQTtBQUN2QyxJQUFXLGtCQUFRO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
@@ -1,3 +1,4 @@
1
+ import { UrlResolverResponse } from "../../atoms/app/variant.js";
1
2
  import { FeatureFlagService } from "../featureFlagService/index.js";
2
3
  import { EnviveServiceConfig } from "../enviveConfigService/enviveConfigService.js";
3
4
 
@@ -11,6 +12,10 @@ interface WarmUrlResolverParams {
11
12
  env?: string;
12
13
  contextSource?: string;
13
14
  featureFlagService?: FeatureFlagService;
15
+ precomputedUrlResolving?: {
16
+ url: string;
17
+ response: UrlResolverResponse;
18
+ } | null;
14
19
  }
15
20
  /**
16
21
  * Fires the /v1/url_resolving request as soon as the org config is available,
@@ -33,8 +38,9 @@ declare const warmUrlResolver: ({
33
38
  enviveOn,
34
39
  env,
35
40
  contextSource,
36
- featureFlagService
41
+ featureFlagService,
42
+ precomputedUrlResolving
37
43
  }: WarmUrlResolverParams) => Promise<void>;
38
44
  //#endregion
39
45
  export { WarmUrlResolverParams, warmUrlResolver };
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdXJsUmVzb2x2ZXJXYXJtdXBTZXJ2aWNlL2luZGV4LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXZlU2VydmljZUNvbmZpZyB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5leHBvcnQgaW50ZXJmYWNlIFdhcm1VcmxSZXNvbHZlclBhcmFtcyB7XG4gICAgYmFzZVVybDogc3RyaW5nO1xuICAgIGFwaUtleTogc3RyaW5nO1xuICAgIGVudml2ZVNlcnZpY2VDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWc7XG4gICAgc2hvdz86IGJvb2xlYW47XG4gICAgZW52aXZlT24/OiBib29sZWFuO1xuICAgIGVudj86IHN0cmluZztcbiAgICBjb250ZXh0U291cmNlPzogc3RyaW5nO1xuICAgIGZlYXR1cmVGbGFnU2VydmljZT86IEZlYXR1cmVGbGFnU2VydmljZTtcbn1cbi8qKlxuICogRmlyZXMgdGhlIC92MS91cmxfcmVzb2x2aW5nIHJlcXVlc3QgYXMgc29vbiBhcyB0aGUgb3JnIGNvbmZpZyBpcyBhdmFpbGFibGUsXG4gKiBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBSZWFjdCB0cmVlIHRvIG1vdW50IGFuZCBQYWdlUHJvdmlkZXIncyBlZmZlY3QgdG9cbiAqIHJ1biDigJQgdGhhdCByZW1vdmVzIGEgZnVsbCBuZXR3b3JrIHJvdW5kIHRyaXAgZnJvbSB0aGUgZmlyc3Qtd2lkZ2V0LXBhaW50XG4gKiBjcml0aWNhbCBwYXRoLlxuICpcbiAqIFNlZWRzIHRoZSBzYW1lIGF0b21zIEVudml2ZVByb3ZpZGVyL0Vudml2ZUNvbmZpZ1Byb3ZpZGVyIHBvcHVsYXRlIGxhdGVyXG4gKiAod2l0aCBpZGVudGljYWwgdmFsdWVzKSBzbyB0aGUgcmVxdWVzdCBjb250ZXh0IG1hdGNoZXMgdGhlIG9uZVxuICogUGFnZVByb3ZpZGVyIHdvdWxkIHNlbmQsIHRoZW4gc3RvcmVzIHRoZSByZXNwb25zZSBpbiB0aGVcbiAqIHNlc3Npb25TdG9yYWdlLWJhY2tlZCB1cmxSZXNvbHZlckF0b20gdGhhdCBQYWdlUHJvdmlkZXIgY29uc3VsdHMgYmVmb3JlXG4gKiBmZXRjaGluZy4gQ29uY3VycmVudCBjYWxscyBmb3IgdGhlIHNhbWUgVVJMIGFyZSBkZWR1cGVkIGluc2lkZVxuICogQ29tbWVyY2VBcGlDbGllbnQucmVzb2x2ZVVybC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgd2FybVVybFJlc29sdmVyOiAoeyBiYXNlVXJsLCBhcGlLZXksIGVudml2ZVNlcnZpY2VDb25maWcsIHNob3csIGVudml2ZU9uLCBlbnYsIGNvbnRleHRTb3VyY2UsIGZlYXR1cmVGbGFnU2VydmljZSwgfTogV2FybVVybFJlc29sdmVyUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBVyx3QkFBd0I7Q0FBQztPQUFHO09BQUE7Q0FBQTtBQUN2QyxJQUFXLGtCQUFRO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBIn0=
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdXJsUmVzb2x2ZXJXYXJtdXBTZXJ2aWNlL2luZGV4LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXJsUmVzb2x2ZXJSZXNwb25zZSB9IGZyb20gJ3NyYy9hdG9tcy9hcHAvdmFyaWFudCc7XG5pbXBvcnQgeyBFbnZpdmVTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2Vudml2ZUNvbmZpZ1NlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvc2VydmljZXMvZmVhdHVyZUZsYWdTZXJ2aWNlJztcbmV4cG9ydCBpbnRlcmZhY2UgV2FybVVybFJlc29sdmVyUGFyYW1zIHtcbiAgICBiYXNlVXJsOiBzdHJpbmc7XG4gICAgYXBpS2V5OiBzdHJpbmc7XG4gICAgZW52aXZlU2VydmljZUNvbmZpZzogRW52aXZlU2VydmljZUNvbmZpZztcbiAgICBzaG93PzogYm9vbGVhbjtcbiAgICBlbnZpdmVPbj86IGJvb2xlYW47XG4gICAgZW52Pzogc3RyaW5nO1xuICAgIGNvbnRleHRTb3VyY2U/OiBzdHJpbmc7XG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlPzogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICAgIHByZWNvbXB1dGVkVXJsUmVzb2x2aW5nPzoge1xuICAgICAgICB1cmw6IHN0cmluZztcbiAgICAgICAgcmVzcG9uc2U6IFVybFJlc29sdmVyUmVzcG9uc2U7XG4gICAgfSB8IG51bGw7XG59XG4vKipcbiAqIEZpcmVzIHRoZSAvdjEvdXJsX3Jlc29sdmluZyByZXF1ZXN0IGFzIHNvb24gYXMgdGhlIG9yZyBjb25maWcgaXMgYXZhaWxhYmxlLFxuICogaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgUmVhY3QgdHJlZSB0byBtb3VudCBhbmQgUGFnZVByb3ZpZGVyJ3MgZWZmZWN0IHRvXG4gKiBydW4g4oCUIHRoYXQgcmVtb3ZlcyBhIGZ1bGwgbmV0d29yayByb3VuZCB0cmlwIGZyb20gdGhlIGZpcnN0LXdpZGdldC1wYWludFxuICogY3JpdGljYWwgcGF0aC5cbiAqXG4gKiBTZWVkcyB0aGUgc2FtZSBhdG9tcyBFbnZpdmVQcm92aWRlci9FbnZpdmVDb25maWdQcm92aWRlciBwb3B1bGF0ZSBsYXRlclxuICogKHdpdGggaWRlbnRpY2FsIHZhbHVlcykgc28gdGhlIHJlcXVlc3QgY29udGV4dCBtYXRjaGVzIHRoZSBvbmVcbiAqIFBhZ2VQcm92aWRlciB3b3VsZCBzZW5kLCB0aGVuIHN0b3JlcyB0aGUgcmVzcG9uc2UgaW4gdGhlXG4gKiBzZXNzaW9uU3RvcmFnZS1iYWNrZWQgdXJsUmVzb2x2ZXJBdG9tIHRoYXQgUGFnZVByb3ZpZGVyIGNvbnN1bHRzIGJlZm9yZVxuICogZmV0Y2hpbmcuIENvbmN1cnJlbnQgY2FsbHMgZm9yIHRoZSBzYW1lIFVSTCBhcmUgZGVkdXBlZCBpbnNpZGVcbiAqIENvbW1lcmNlQXBpQ2xpZW50LnJlc29sdmVVcmwuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHdhcm1VcmxSZXNvbHZlcjogKHsgYmFzZVVybCwgYXBpS2V5LCBlbnZpdmVTZXJ2aWNlQ29uZmlnLCBzaG93LCBlbnZpdmVPbiwgZW52LCBjb250ZXh0U291cmNlLCBmZWF0dXJlRmxhZ1NlcnZpY2UsIHByZWNvbXB1dGVkVXJsUmVzb2x2aW5nLCB9OiBXYXJtVXJsUmVzb2x2ZXJQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsSUFBVyx3QkFBd0I7Q0FBQztPQUFHO09BQUE7T0FBQTtDQUFBO0FBQ3ZDLElBQVcsa0JBQVE7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQSJ9
@@ -21,7 +21,7 @@ const logger = new logger_default("urlResolverWarmupService");
21
21
  * fetching. Concurrent calls for the same URL are deduped inside
22
22
  * CommerceApiClient.resolveUrl.
23
23
  */
24
- const warmUrlResolver = async ({ baseUrl, apiKey, enviveServiceConfig, show, enviveOn, env, contextSource, featureFlagService }) => {
24
+ const warmUrlResolver = async ({ baseUrl, apiKey, enviveServiceConfig, show, enviveOn, env, contextSource, featureFlagService, precomputedUrlResolving }) => {
25
25
  try {
26
26
  const store = getAtomStore();
27
27
  const cleansedUrl = window.location.href.toLowerCase().trim();
@@ -39,7 +39,7 @@ const warmUrlResolver = async ({ baseUrl, apiKey, enviveServiceConfig, show, env
39
39
  if (featureFlagService && store.get(featureFlagServiceAtom) === void 0) store.set(featureFlagServiceAtom, { featureFlagService });
40
40
  const { baseVersion, baseVersionSource } = enviveServiceConfig.orgConfig?.resolution ?? {};
41
41
  if (baseVersion && baseVersionSource && baseVersionSource !== "deployed") store.set(resolvedBaseConfigVersionAtom, baseVersion);
42
- const response = await commerce_api_default.resolveUrl(cleansedUrl);
42
+ const response = precomputedUrlResolving && precomputedUrlResolving.url === cleansedUrl ? precomputedUrlResolving.response : await commerce_api_default.resolveUrl(cleansedUrl);
43
43
  store.set(urlResolverAtom, {
44
44
  url: cleansedUrl,
45
45
  response
@@ -51,4 +51,4 @@ const warmUrlResolver = async ({ baseUrl, apiKey, enviveServiceConfig, show, env
51
51
 
52
52
  //#endregion
53
53
  export { warmUrlResolver };
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJMb2dnZXIiLCJDb21tZXJjZUFwaUNsaWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy91cmxSZXNvbHZlcldhcm11cFNlcnZpY2UvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbW1lcmNlQXBpQ2xpZW50IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGknO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgVXJsUmVzb2x2ZXJSZXNwb25zZSwgdXJsUmVzb2x2ZXJBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcC92YXJpYW50JztcbmltcG9ydCB7IGdldEF0b21TdG9yZSB9IGZyb20gJ3NyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlJztcbmltcG9ydCB7IGVudml2ZUNvbmZpZ0F0b20gfSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyByZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvcmVzb2x2ZWRCYXNlQ29uZmlnVmVyc2lvbic7XG5pbXBvcnQgeyBmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tIH0gZnJvbSAnc3JjL2F0b21zL29yZy9ncmFwaHFsQ29uZmlnJztcbmltcG9ydCB7IEVudml2ZVNlcnZpY2VDb25maWcgfSBmcm9tICdzcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZSc7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCd1cmxSZXNvbHZlcldhcm11cFNlcnZpY2UnKTtcblxuZXhwb3J0IGludGVyZmFjZSBXYXJtVXJsUmVzb2x2ZXJQYXJhbXMge1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIGFwaUtleTogc3RyaW5nO1xuICBlbnZpdmVTZXJ2aWNlQ29uZmlnOiBFbnZpdmVTZXJ2aWNlQ29uZmlnO1xuICBzaG93PzogYm9vbGVhbjtcbiAgZW52aXZlT24/OiBib29sZWFuO1xuICBlbnY/OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U/OiBzdHJpbmc7XG4gIGZlYXR1cmVGbGFnU2VydmljZT86IEZlYXR1cmVGbGFnU2VydmljZTtcbn1cblxuLyoqXG4gKiBGaXJlcyB0aGUgL3YxL3VybF9yZXNvbHZpbmcgcmVxdWVzdCBhcyBzb29uIGFzIHRoZSBvcmcgY29uZmlnIGlzIGF2YWlsYWJsZSxcbiAqIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIFJlYWN0IHRyZWUgdG8gbW91bnQgYW5kIFBhZ2VQcm92aWRlcidzIGVmZmVjdCB0b1xuICogcnVuIOKAlCB0aGF0IHJlbW92ZXMgYSBmdWxsIG5ldHdvcmsgcm91bmQgdHJpcCBmcm9tIHRoZSBmaXJzdC13aWRnZXQtcGFpbnRcbiAqIGNyaXRpY2FsIHBhdGguXG4gKlxuICogU2VlZHMgdGhlIHNhbWUgYXRvbXMgRW52aXZlUHJvdmlkZXIvRW52aXZlQ29uZmlnUHJvdmlkZXIgcG9wdWxhdGUgbGF0ZXJcbiAqICh3aXRoIGlkZW50aWNhbCB2YWx1ZXMpIHNvIHRoZSByZXF1ZXN0IGNvbnRleHQgbWF0Y2hlcyB0aGUgb25lXG4gKiBQYWdlUHJvdmlkZXIgd291bGQgc2VuZCwgdGhlbiBzdG9yZXMgdGhlIHJlc3BvbnNlIGluIHRoZVxuICogc2Vzc2lvblN0b3JhZ2UtYmFja2VkIHVybFJlc29sdmVyQXRvbSB0aGF0IFBhZ2VQcm92aWRlciBjb25zdWx0cyBiZWZvcmVcbiAqIGZldGNoaW5nLiBDb25jdXJyZW50IGNhbGxzIGZvciB0aGUgc2FtZSBVUkwgYXJlIGRlZHVwZWQgaW5zaWRlXG4gKiBDb21tZXJjZUFwaUNsaWVudC5yZXNvbHZlVXJsLlxuICovXG5leHBvcnQgY29uc3Qgd2FybVVybFJlc29sdmVyID0gYXN5bmMgKHtcbiAgYmFzZVVybCxcbiAgYXBpS2V5LFxuICBlbnZpdmVTZXJ2aWNlQ29uZmlnLFxuICBzaG93LFxuICBlbnZpdmVPbixcbiAgZW52LFxuICBjb250ZXh0U291cmNlLFxuICBmZWF0dXJlRmxhZ1NlcnZpY2UsXG59OiBXYXJtVXJsUmVzb2x2ZXJQYXJhbXMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgIC8vIE11c3QgbWF0Y2ggUGFnZVByb3ZpZGVyJ3MgVVJMIGNsZWFuc2luZyBzbyB0aGUgY2FjaGUga2V5IGxpbmVzIHVwLlxuICAgIGNvbnN0IGNsZWFuc2VkVXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgaWYgKHN0b3JlLmdldCh1cmxSZXNvbHZlckF0b20pW2NsZWFuc2VkVXJsXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoZSBDb21tZXJjZUFwaUNsaWVudCBzaW5nbGV0b24gY2FwdHVyZXMgYmFzZVVybC9hcGlLZXkgYXQgZmlyc3RcbiAgICAvLyBpbnN0YW50aWF0aW9uLCBzbyB0aGVzZSBhdG9tcyBtdXN0IGJlIHNlZWRlZCBiZWZvcmUgYW55IEFQSSBjYWxsLlxuICAgIC8vIE9ubHkgc2VlZCB3aGVuIHVuc2V0IOKAlCBwcm92aWRlcnMgb3duIHRoaXMgYXRvbSBvbmNlIFJlYWN0IG1vdW50cy5cbiAgICBpZiAoc3RvcmUuZ2V0KGVudml2ZUNvbmZpZ0F0b20pID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0b3JlLnNldChlbnZpdmVDb25maWdBdG9tLCB7XG4gICAgICAgIGJhc2VVcmwsXG4gICAgICAgIG9yZ0xldmVsQXBpS2V5OiBhcGlLZXksXG4gICAgICAgIG9yZ1Nob3J0TmFtZTogZW52aXZlU2VydmljZUNvbmZpZy5vcmcub3JnLnNob3J0X25hbWUsXG4gICAgICAgIG9yZ0lkOiBlbnZpdmVTZXJ2aWNlQ29uZmlnLm9yZy5vcmcuaWQsXG4gICAgICAgIHNob3csXG4gICAgICAgIGVudml2ZU9uLFxuICAgICAgICBlbnYsXG4gICAgICAgIGNvbnRleHRTb3VyY2UsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gcmVzb2x2ZVVybCByZWFkcyBmZWF0dXJlIGdhdGVzIHRocm91Z2ggZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbTsgd2l0aG91dFxuICAgIC8vIHRoaXMgc2VlZCB0aGUgd2FybS11cCByZXF1ZXN0IGlzIGNvbXB1dGVkIHdpdGggZmVhdHVyZV9nYXRlcz17fSBhbmRcbiAgICAvLyB0aGF0IHJlc3BvbnNlIGlzIHdoYXQgZ2V0cyBjYWNoZWQgZm9yIFBhZ2VQcm92aWRlci5cbiAgICBpZiAoZmVhdHVyZUZsYWdTZXJ2aWNlICYmIHN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdG9yZS5zZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSwgeyBmZWF0dXJlRmxhZ1NlcnZpY2UgfSk7XG4gICAgfVxuICAgIC8vIE1pcnJvcnMgRW52aXZlUHJvdmlkZXI6IFwiZGVwbG95ZWRcIiBpcyB0aGUgbm8tcGluIHNlbnRpbmVsLlxuICAgIGNvbnN0IHsgYmFzZVZlcnNpb24sIGJhc2VWZXJzaW9uU291cmNlIH0gPSBlbnZpdmVTZXJ2aWNlQ29uZmlnLm9yZ0NvbmZpZz8ucmVzb2x1dGlvbiA/PyB7fTtcbiAgICBpZiAoYmFzZVZlcnNpb24gJiYgYmFzZVZlcnNpb25Tb3VyY2UgJiYgYmFzZVZlcnNpb25Tb3VyY2UgIT09ICdkZXBsb3llZCcpIHtcbiAgICAgIHN0b3JlLnNldChyZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSwgYmFzZVZlcnNpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LnJlc29sdmVVcmwoY2xlYW5zZWRVcmwpKSBhcyBVcmxSZXNvbHZlclJlc3BvbnNlO1xuICAgIHN0b3JlLnNldCh1cmxSZXNvbHZlckF0b20sIHsgdXJsOiBjbGVhbnNlZFVybCwgcmVzcG9uc2UgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIEZhaWwgb3BlbjogUGFnZVByb3ZpZGVyIGlzc3VlcyBpdHMgb3duIHJlc29sdmVVcmwgY2FsbCB3aGVuIHRoZSBjYWNoZVxuICAgIC8vIGlzIGVtcHR5LCBzbyBhIHdhcm0tdXAgZmFpbHVyZSBuZXZlciBibG9ja3MgcmVuZGVyaW5nLlxuICAgIGxvZ2dlci5sb2dEZWJ1ZygnVVJMIHJlc29sdmVyIHdhcm0tdXAgZmFpbGVkJywgZXJyKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBVUEsTUFBTSxTQUFTLElBQUlBLGVBQU8sMkJBQTJCOzs7Ozs7Ozs7Ozs7OztBQTBCckQsTUFBYSxrQkFBa0IsT0FBTyxFQUNwQyxTQUNBLFFBQ0EscUJBQ0EsTUFDQSxVQUNBLEtBQ0EsZUFDQSx5QkFDMEM7QUFDMUMsS0FBSTtFQUNGLE1BQU0sUUFBUSxjQUFjO0VBRTVCLE1BQU0sY0FBYyxPQUFPLFNBQVMsS0FBSyxhQUFhLENBQUMsTUFBTTtBQUM3RCxNQUFJLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxhQUM3QjtBQU1GLE1BQUksTUFBTSxJQUFJLGlCQUFpQixLQUFLLE9BQ2xDLE9BQU0sSUFBSSxrQkFBa0I7R0FDMUI7R0FDQSxnQkFBZ0I7R0FDaEIsY0FBYyxvQkFBb0IsSUFBSSxJQUFJO0dBQzFDLE9BQU8sb0JBQW9CLElBQUksSUFBSTtHQUNuQztHQUNBO0dBQ0E7R0FDQTtHQUNELENBQUM7QUFLSixNQUFJLHNCQUFzQixNQUFNLElBQUksdUJBQXVCLEtBQUssT0FDOUQsT0FBTSxJQUFJLHdCQUF3QixFQUFFLG9CQUFvQixDQUFDO0VBRzNELE1BQU0sRUFBRSxhQUFhLHNCQUFzQixvQkFBb0IsV0FBVyxjQUFjLEVBQUU7QUFDMUYsTUFBSSxlQUFlLHFCQUFxQixzQkFBc0IsV0FDNUQsT0FBTSxJQUFJLCtCQUErQixZQUFZO0VBR3ZELE1BQU0sV0FBWSxNQUFNQyxxQkFBa0IsV0FBVyxZQUFZO0FBQ2pFLFFBQU0sSUFBSSxpQkFBaUI7R0FBRSxLQUFLO0dBQWE7R0FBVSxDQUFDO1VBQ25ELEtBQUs7QUFHWixTQUFPLFNBQVMsK0JBQStCLElBQUkifQ==
54
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJMb2dnZXIiLCJDb21tZXJjZUFwaUNsaWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy91cmxSZXNvbHZlcldhcm11cFNlcnZpY2UvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbW1lcmNlQXBpQ2xpZW50IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGknO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgVXJsUmVzb2x2ZXJSZXNwb25zZSwgdXJsUmVzb2x2ZXJBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcC92YXJpYW50JztcbmltcG9ydCB7IGdldEF0b21TdG9yZSB9IGZyb20gJ3NyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlJztcbmltcG9ydCB7IGVudml2ZUNvbmZpZ0F0b20gfSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyByZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvcmVzb2x2ZWRCYXNlQ29uZmlnVmVyc2lvbic7XG5pbXBvcnQgeyBmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tIH0gZnJvbSAnc3JjL2F0b21zL29yZy9ncmFwaHFsQ29uZmlnJztcbmltcG9ydCB7IEVudml2ZVNlcnZpY2VDb25maWcgfSBmcm9tICdzcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZSc7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCd1cmxSZXNvbHZlcldhcm11cFNlcnZpY2UnKTtcblxuZXhwb3J0IGludGVyZmFjZSBXYXJtVXJsUmVzb2x2ZXJQYXJhbXMge1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIGFwaUtleTogc3RyaW5nO1xuICBlbnZpdmVTZXJ2aWNlQ29uZmlnOiBFbnZpdmVTZXJ2aWNlQ29uZmlnO1xuICBzaG93PzogYm9vbGVhbjtcbiAgZW52aXZlT24/OiBib29sZWFuO1xuICBlbnY/OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U/OiBzdHJpbmc7XG4gIGZlYXR1cmVGbGFnU2VydmljZT86IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgLy8gVGhlIHVybF9yZXNvbHZpbmcgcmVzdWx0IC92MS9zZXNzaW9uL2Jvb3RzdHJhcCBhbHJlYWR5IHByb2R1Y2VkICh1bmlmaWVkLWNvbmZpZ1xuICAvLyBnYXRlIE9OKSwgcGFpcmVkIHdpdGggdGhlIFVSTCBpdCB3YXMgcmVzb2x2ZWQgZm9yLiBXaGVuIHNldCBBTkQgdGhhdCBVUkwgc3RpbGxcbiAgLy8gbWF0Y2hlcyB0aGUgY3VycmVudCBvbmUsIHRoZSB3YXJtLXVwIHNlZWRzIHVybFJlc29sdmVyQXRvbSB3aXRoIGl0IGFuZCBza2lwc1xuICAvLyBpdHMgb3duIC92MS91cmxfcmVzb2x2aW5nIGNhbGwg4oCUIHRoZSB0aGlyZCBsZWcgb2YgdGhlIDPihpIxIGNvbnNvbGlkYXRpb24uIElmIGFcbiAgLy8gU1BBIG5hdmlnYXRpb24gY2hhbmdlZCB0aGUgVVJMIHNpbmNlIGJvb3RzdHJhcCByYW4sIHRoZSBVUkxzIG5vIGxvbmdlciBtYXRjaFxuICAvLyBhbmQgdGhlIHdhcm0tdXAgZmFsbHMgYmFjayB0byByZXNvbHZlVXJsIChzbyBhIHN0YWxlIHZhcmlhbnQgaXMgbmV2ZXIgY2FjaGVkXG4gIC8vIHVuZGVyIHRoZSBuZXcgVVJMKS4gVGhlIGF0b20tc2VlZGluZyBhYm92ZSBzdGlsbCBydW5zIGVpdGhlciB3YXksIHNvXG4gIC8vIFBhZ2VQcm92aWRlciAoYW5kIGFueSBsYXRlciBuYXZpZ2F0aW9uIHJlc29sdmVVcmwpIHNlZXMgdGhlIHNhbWUgY29udGV4dC5cbiAgcHJlY29tcHV0ZWRVcmxSZXNvbHZpbmc/OiB7IHVybDogc3RyaW5nOyByZXNwb25zZTogVXJsUmVzb2x2ZXJSZXNwb25zZSB9IHwgbnVsbDtcbn1cblxuLyoqXG4gKiBGaXJlcyB0aGUgL3YxL3VybF9yZXNvbHZpbmcgcmVxdWVzdCBhcyBzb29uIGFzIHRoZSBvcmcgY29uZmlnIGlzIGF2YWlsYWJsZSxcbiAqIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIFJlYWN0IHRyZWUgdG8gbW91bnQgYW5kIFBhZ2VQcm92aWRlcidzIGVmZmVjdCB0b1xuICogcnVuIOKAlCB0aGF0IHJlbW92ZXMgYSBmdWxsIG5ldHdvcmsgcm91bmQgdHJpcCBmcm9tIHRoZSBmaXJzdC13aWRnZXQtcGFpbnRcbiAqIGNyaXRpY2FsIHBhdGguXG4gKlxuICogU2VlZHMgdGhlIHNhbWUgYXRvbXMgRW52aXZlUHJvdmlkZXIvRW52aXZlQ29uZmlnUHJvdmlkZXIgcG9wdWxhdGUgbGF0ZXJcbiAqICh3aXRoIGlkZW50aWNhbCB2YWx1ZXMpIHNvIHRoZSByZXF1ZXN0IGNvbnRleHQgbWF0Y2hlcyB0aGUgb25lXG4gKiBQYWdlUHJvdmlkZXIgd291bGQgc2VuZCwgdGhlbiBzdG9yZXMgdGhlIHJlc3BvbnNlIGluIHRoZVxuICogc2Vzc2lvblN0b3JhZ2UtYmFja2VkIHVybFJlc29sdmVyQXRvbSB0aGF0IFBhZ2VQcm92aWRlciBjb25zdWx0cyBiZWZvcmVcbiAqIGZldGNoaW5nLiBDb25jdXJyZW50IGNhbGxzIGZvciB0aGUgc2FtZSBVUkwgYXJlIGRlZHVwZWQgaW5zaWRlXG4gKiBDb21tZXJjZUFwaUNsaWVudC5yZXNvbHZlVXJsLlxuICovXG5leHBvcnQgY29uc3Qgd2FybVVybFJlc29sdmVyID0gYXN5bmMgKHtcbiAgYmFzZVVybCxcbiAgYXBpS2V5LFxuICBlbnZpdmVTZXJ2aWNlQ29uZmlnLFxuICBzaG93LFxuICBlbnZpdmVPbixcbiAgZW52LFxuICBjb250ZXh0U291cmNlLFxuICBmZWF0dXJlRmxhZ1NlcnZpY2UsXG4gIHByZWNvbXB1dGVkVXJsUmVzb2x2aW5nLFxufTogV2FybVVybFJlc29sdmVyUGFyYW1zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgICAvLyBNdXN0IG1hdGNoIFBhZ2VQcm92aWRlcidzIFVSTCBjbGVhbnNpbmcgc28gdGhlIGNhY2hlIGtleSBsaW5lcyB1cC5cbiAgICBjb25zdCBjbGVhbnNlZFVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGlmIChzdG9yZS5nZXQodXJsUmVzb2x2ZXJBdG9tKVtjbGVhbnNlZFVybF0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUaGUgQ29tbWVyY2VBcGlDbGllbnQgc2luZ2xldG9uIGNhcHR1cmVzIGJhc2VVcmwvYXBpS2V5IGF0IGZpcnN0XG4gICAgLy8gaW5zdGFudGlhdGlvbiwgc28gdGhlc2UgYXRvbXMgbXVzdCBiZSBzZWVkZWQgYmVmb3JlIGFueSBBUEkgY2FsbC5cbiAgICAvLyBPbmx5IHNlZWQgd2hlbiB1bnNldCDigJQgcHJvdmlkZXJzIG93biB0aGlzIGF0b20gb25jZSBSZWFjdCBtb3VudHMuXG4gICAgaWYgKHN0b3JlLmdldChlbnZpdmVDb25maWdBdG9tKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdG9yZS5zZXQoZW52aXZlQ29uZmlnQXRvbSwge1xuICAgICAgICBiYXNlVXJsLFxuICAgICAgICBvcmdMZXZlbEFwaUtleTogYXBpS2V5LFxuICAgICAgICBvcmdTaG9ydE5hbWU6IGVudml2ZVNlcnZpY2VDb25maWcub3JnLm9yZy5zaG9ydF9uYW1lLFxuICAgICAgICBvcmdJZDogZW52aXZlU2VydmljZUNvbmZpZy5vcmcub3JnLmlkLFxuICAgICAgICBzaG93LFxuICAgICAgICBlbnZpdmVPbixcbiAgICAgICAgZW52LFxuICAgICAgICBjb250ZXh0U291cmNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIHJlc29sdmVVcmwgcmVhZHMgZmVhdHVyZSBnYXRlcyB0aHJvdWdoIGZlYXR1cmVGbGFnU2VydmljZUF0b207IHdpdGhvdXRcbiAgICAvLyB0aGlzIHNlZWQgdGhlIHdhcm0tdXAgcmVxdWVzdCBpcyBjb21wdXRlZCB3aXRoIGZlYXR1cmVfZ2F0ZXM9e30gYW5kXG4gICAgLy8gdGhhdCByZXNwb25zZSBpcyB3aGF0IGdldHMgY2FjaGVkIGZvciBQYWdlUHJvdmlkZXIuXG4gICAgaWYgKGZlYXR1cmVGbGFnU2VydmljZSAmJiBzdG9yZS5nZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RvcmUuc2V0KGZlYXR1cmVGbGFnU2VydmljZUF0b20sIHsgZmVhdHVyZUZsYWdTZXJ2aWNlIH0pO1xuICAgIH1cbiAgICAvLyBNaXJyb3JzIEVudml2ZVByb3ZpZGVyOiBcImRlcGxveWVkXCIgaXMgdGhlIG5vLXBpbiBzZW50aW5lbC5cbiAgICBjb25zdCB7IGJhc2VWZXJzaW9uLCBiYXNlVmVyc2lvblNvdXJjZSB9ID0gZW52aXZlU2VydmljZUNvbmZpZy5vcmdDb25maWc/LnJlc29sdXRpb24gPz8ge307XG4gICAgaWYgKGJhc2VWZXJzaW9uICYmIGJhc2VWZXJzaW9uU291cmNlICYmIGJhc2VWZXJzaW9uU291cmNlICE9PSAnZGVwbG95ZWQnKSB7XG4gICAgICBzdG9yZS5zZXQocmVzb2x2ZWRCYXNlQ29uZmlnVmVyc2lvbkF0b20sIGJhc2VWZXJzaW9uKTtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgYWxyZWFkeSByZXNvbHZlZCBhIFVSTCBpbiB0aGUgc2FtZSByb3VuZCB0cmlwIGFzIHRoZSBjb25maWcg4oCUXG4gICAgLy8gcmV1c2UgaXQgT05MWSB3aGVuIGl0J3Mgc3RpbGwgdGhlIGN1cnJlbnQgVVJMLCBzbyBpdHMgdmFyaWFudCBpcyBuZXZlclxuICAgIC8vIGNhY2hlZCB1bmRlciBhIGRpZmZlcmVudCBrZXkgYWZ0ZXIgYSBTUEEgbmF2aWdhdGlvbi4gT3RoZXJ3aXNlIHJlc29sdmUgdGhlXG4gICAgLy8gY3VycmVudCBVUkwgb3Vyc2VsdmVzIChzYW1lIGFzIHRoZSBuby1wcmVjb21wdXRlIHBhdGgpLlxuICAgIGNvbnN0IHJlc3BvbnNlID1cbiAgICAgIHByZWNvbXB1dGVkVXJsUmVzb2x2aW5nICYmIHByZWNvbXB1dGVkVXJsUmVzb2x2aW5nLnVybCA9PT0gY2xlYW5zZWRVcmxcbiAgICAgICAgPyBwcmVjb21wdXRlZFVybFJlc29sdmluZy5yZXNwb25zZVxuICAgICAgICA6ICgoYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQucmVzb2x2ZVVybChjbGVhbnNlZFVybCkpIGFzIFVybFJlc29sdmVyUmVzcG9uc2UpO1xuICAgIHN0b3JlLnNldCh1cmxSZXNvbHZlckF0b20sIHsgdXJsOiBjbGVhbnNlZFVybCwgcmVzcG9uc2UgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIEZhaWwgb3BlbjogUGFnZVByb3ZpZGVyIGlzc3VlcyBpdHMgb3duIHJlc29sdmVVcmwgY2FsbCB3aGVuIHRoZSBjYWNoZVxuICAgIC8vIGlzIGVtcHR5LCBzbyBhIHdhcm0tdXAgZmFpbHVyZSBuZXZlciBibG9ja3MgcmVuZGVyaW5nLlxuICAgIGxvZ2dlci5sb2dEZWJ1ZygnVVJMIHJlc29sdmVyIHdhcm0tdXAgZmFpbGVkJywgZXJyKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBVUEsTUFBTSxTQUFTLElBQUlBLGVBQU8sMkJBQTJCOzs7Ozs7Ozs7Ozs7OztBQW1DckQsTUFBYSxrQkFBa0IsT0FBTyxFQUNwQyxTQUNBLFFBQ0EscUJBQ0EsTUFDQSxVQUNBLEtBQ0EsZUFDQSxvQkFDQSw4QkFDMEM7QUFDMUMsS0FBSTtFQUNGLE1BQU0sUUFBUSxjQUFjO0VBRTVCLE1BQU0sY0FBYyxPQUFPLFNBQVMsS0FBSyxhQUFhLENBQUMsTUFBTTtBQUM3RCxNQUFJLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxhQUM3QjtBQU1GLE1BQUksTUFBTSxJQUFJLGlCQUFpQixLQUFLLE9BQ2xDLE9BQU0sSUFBSSxrQkFBa0I7R0FDMUI7R0FDQSxnQkFBZ0I7R0FDaEIsY0FBYyxvQkFBb0IsSUFBSSxJQUFJO0dBQzFDLE9BQU8sb0JBQW9CLElBQUksSUFBSTtHQUNuQztHQUNBO0dBQ0E7R0FDQTtHQUNELENBQUM7QUFLSixNQUFJLHNCQUFzQixNQUFNLElBQUksdUJBQXVCLEtBQUssT0FDOUQsT0FBTSxJQUFJLHdCQUF3QixFQUFFLG9CQUFvQixDQUFDO0VBRzNELE1BQU0sRUFBRSxhQUFhLHNCQUFzQixvQkFBb0IsV0FBVyxjQUFjLEVBQUU7QUFDMUYsTUFBSSxlQUFlLHFCQUFxQixzQkFBc0IsV0FDNUQsT0FBTSxJQUFJLCtCQUErQixZQUFZO0VBT3ZELE1BQU0sV0FDSiwyQkFBMkIsd0JBQXdCLFFBQVEsY0FDdkQsd0JBQXdCLFdBQ3RCLE1BQU1DLHFCQUFrQixXQUFXLFlBQVk7QUFDdkQsUUFBTSxJQUFJLGlCQUFpQjtHQUFFLEtBQUs7R0FBYTtHQUFVLENBQUM7VUFDbkQsS0FBSztBQUdaLFNBQU8sU0FBUywrQkFBK0IsSUFBSSJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@envive-ai/react-hooks",
3
- "version": "0.3.62",
3
+ "version": "0.3.64",
4
4
  "description": "React hooks for connecting to Envive AI services.",
5
5
  "keywords": [
6
6
  "react",
@@ -414,6 +414,10 @@
414
414
  "import": "./dist/hooks/WidgetInteraction/utils.js",
415
415
  "require": "./dist/hooks/WidgetInteraction/utils.cjs"
416
416
  },
417
+ "./hooks/WidgetLoadDiagnostics": {
418
+ "import": "./dist/hooks/WidgetLoadDiagnostics/index.js",
419
+ "require": "./dist/hooks/WidgetLoadDiagnostics/index.cjs"
420
+ },
417
421
  "./interceptors": {
418
422
  "import": "./dist/interceptors/index.js",
419
423
  "require": "./dist/interceptors/index.cjs"
@@ -46,4 +46,10 @@ export enum FeatureGates {
46
46
  // instead of the legacy getProductsConfigByVersion / getColorsAndFrontend
47
47
  // path.
48
48
  UseUnifiedConfig = 'use_unified_config',
49
+ // Kill switch for the [Envive] Diagnostics widget-load events (mount / outcome / stall).
50
+ // Diagnostics are ON by default for every org so we can gather a cross-merchant baseline and
51
+ // tell whether one merchant's stuck rate is anomalous. Set this gate true — globally or
52
+ // per-org, via Statsig — to shut them off (e.g. after the data-gathering window, or if the
53
+ // volume is a problem).
54
+ IsWidgetDiagnosticsDisabled = 'is_widget_diagnostics_disabled',
49
55
  }
@@ -40,12 +40,19 @@ export const useIntersection = (
40
40
  element: RefObject<HTMLElement>,
41
41
  rootMargin: string,
42
42
  logContext?: Record<string, unknown>,
43
+ // Called the first time visibility is forced by the reconcile fallback (observer stayed
44
+ // silent for an on-screen element). Lets callers record that this widget's visibility came
45
+ // from the fallback rather than the observer — the diagnostic for observer failures.
46
+ onFallbackEngaged?: () => void,
43
47
  ) => {
44
48
  const [isVisible, setIsVisible] = useState(false);
45
49
  const observerRef = useRef<IntersectionObserver | null>(null);
46
50
  const observedNodeRef = useRef<HTMLElement | null>(null);
47
51
  const logContextRef = useRef(logContext);
48
52
  logContextRef.current = logContext;
53
+ const onFallbackEngagedRef = useRef(onFallbackEngaged);
54
+ onFallbackEngagedRef.current = onFallbackEngaged;
55
+ const fallbackEngagedRef = useRef(false);
49
56
 
50
57
  // Runs after every render so it catches when element.current transitions from null to a
51
58
  // mounted DOM node, AND when the node under the ref is replaced. The replacement case is
@@ -112,6 +119,10 @@ export const useIntersection = (
112
119
  },
113
120
  );
114
121
  }
122
+ if (!fallbackEngagedRef.current) {
123
+ fallbackEngagedRef.current = true;
124
+ onFallbackEngagedRef.current?.();
125
+ }
115
126
  setIsVisible(true);
116
127
  }
117
128
  };
@@ -0,0 +1,64 @@
1
+ import { act, renderHook } from '@testing-library/react';
2
+ import { RefObject } from 'react';
3
+ import { useTrackComponentVisibleEvent } from '../useTrackComponentVisibleEvent';
4
+
5
+ // Control the observer's isVisible and capture the fallback callback.
6
+ let mockIsVisible = false;
7
+ let capturedOnFallback: (() => void) | undefined;
8
+
9
+ vi.mock('src/hooks/Intersection/useIntersection', () => ({
10
+ useIntersection: (
11
+ _el: unknown,
12
+ _rm: unknown,
13
+ _ctx: unknown,
14
+ onFallback?: () => void,
15
+ ): boolean => {
16
+ capturedOnFallback = onFallback;
17
+ return mockIsVisible;
18
+ },
19
+ }));
20
+
21
+ vi.mock('src/contexts/amplitudeContext/amplitudeContext', () => ({
22
+ useAmplitude: () => ({ trackEvent: vi.fn(), isReady: true }),
23
+ }));
24
+
25
+ vi.mock('jotai', async (importOriginal: () => Promise<typeof import('jotai')>) => {
26
+ const actual = await importOriginal();
27
+ return { ...actual, useAtomValue: () => null };
28
+ });
29
+
30
+ const ref = { current: document.createElement('div') } as RefObject<HTMLElement>;
31
+
32
+ beforeEach(() => {
33
+ mockIsVisible = false;
34
+ capturedOnFallback = undefined;
35
+ });
36
+
37
+ describe('useTrackComponentVisibleEvent visibilitySource', () => {
38
+ it("stays 'pending' until visibility is established (so an eager load never claims 'observer')", () => {
39
+ const { result } = renderHook(() => useTrackComponentVisibleEvent(ref, {}));
40
+ expect(result.current.isVisible).toBe(false);
41
+ expect(result.current.visibilitySource).toBe('pending');
42
+ });
43
+
44
+ it("resolves to 'observer' when the observer reports the element visible", () => {
45
+ const { result, rerender } = renderHook(() => useTrackComponentVisibleEvent(ref, {}));
46
+ act(() => {
47
+ mockIsVisible = true;
48
+ rerender();
49
+ });
50
+ expect(result.current.visibilitySource).toBe('observer');
51
+ });
52
+
53
+ it("records 'fallback' when the reconcile fallback forces visibility (observer stayed silent)", () => {
54
+ const { result, rerender } = renderHook(() => useTrackComponentVisibleEvent(ref, {}));
55
+ act(() => {
56
+ // Fallback fires first (as it does in useIntersection, before its own setIsVisible)...
57
+ capturedOnFallback?.();
58
+ // ...then visibility flips true.
59
+ mockIsVisible = true;
60
+ rerender();
61
+ });
62
+ expect(result.current.visibilitySource).toBe('fallback');
63
+ });
64
+ });
@@ -1,5 +1,5 @@
1
1
  import { useAtomValue } from 'jotai';
2
- import { RefObject, useEffect, useRef } from 'react';
2
+ import { RefObject, useEffect, useRef, useState } from 'react';
3
3
  import Logger from 'src/application/logging/logger';
4
4
  import { pageVariantInfoAtom } from 'src/atoms/app';
5
5
  import { useAmplitude } from 'src/contexts/amplitudeContext/amplitudeContext';
@@ -34,10 +34,29 @@ export const useTrackComponentVisibleEvent = (
34
34
  eventProps?: Record<string, unknown>,
35
35
  rootMargin: string = '0px',
36
36
  enabled: boolean = true,
37
- ): { isVisible: boolean } => {
37
+ ): { isVisible: boolean; visibilitySource: 'observer' | 'fallback' | 'pending' } => {
38
+ // How visibility was established, for widget-load diagnostics:
39
+ // - 'pending' — not confirmed by either path yet. Stays this way for a `deferLoading: false`
40
+ // widget whose requests settle before the observer ever reports, so we don't
41
+ // falsely claim 'observer' for a load that never waited on visibility.
42
+ // - 'observer' — the IntersectionObserver reported the element visible.
43
+ // - 'fallback' — the reconcile fallback had to force it (observer stayed silent on-screen).
44
+ // State (not a ref) so consumers reliably re-render when the source resolves.
45
+ const [visibilitySource, setVisibilitySource] = useState<'observer' | 'fallback' | 'pending'>(
46
+ 'pending',
47
+ );
38
48
  // eventProps (widget_config_id, widget_type, …) double as log context so the hook's
39
49
  // visibility-fallback error identifies which widget it rescued.
40
- const isVisible = useIntersection(element, rootMargin, eventProps);
50
+ const isVisible = useIntersection(element, rootMargin, eventProps, () => {
51
+ // The observer stayed silent on-screen and the fallback forced visibility. This is recorded
52
+ // before useIntersection's own setIsVisible, so it wins over the 'observer' resolution below.
53
+ setVisibilitySource(prev => (prev === 'pending' ? 'fallback' : prev));
54
+ });
55
+ // Resolve 'pending' → 'observer' once the observer establishes visibility; a 'fallback'
56
+ // already recorded above is preserved.
57
+ useEffect(() => {
58
+ if (isVisible) setVisibilitySource(prev => (prev === 'pending' ? 'observer' : prev));
59
+ }, [isVisible]);
41
60
  const hasTrackedEvent = useRef(false);
42
61
  const { trackEvent } = useAmplitude();
43
62
  const variantInfo = useAtomValue(pageVariantInfoAtom);
@@ -87,5 +106,5 @@ export const useTrackComponentVisibleEvent = (
87
106
  });
88
107
  hasTrackedEvent.current = true;
89
108
  }, [enabled, isVisible, eventProps, trackEvent]);
90
- return { isVisible };
109
+ return { isVisible, visibilitySource };
91
110
  };