@genesislcap/design-system-configurator 14.145.1 → 14.145.2
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.
- package/dist/{122.122.f33a37da827907b9b77d.js → 122.122.98da6d5c488b3f19ba05.js} +3 -3
- package/dist/200.022e174c31702fe8e3319fef0d00834b.js.map +1 -0
- package/dist/200.200.de8b9ef46dab08273798.js +2 -0
- package/dist/{394.394.820e884fae784f5a5f83.js → 394.394.43c3036a4f85ce9697cf.js} +1 -1
- package/dist/{460.460.e8612fd1752ee2a1b166.js → 460.460.eabdb11e5bde407f7288.js} +1 -1
- package/dist/{755.755.768a0afb2b7d477c3848.js → 755.755.7c57469c073dae3d94a6.js} +1 -1
- package/dist/{8.8.a975a99c3fcd5fa7c0ec.js → 8.8.edb58e4a2d75f1be2524.js} +1 -1
- package/dist/{designSystemConfigurator.02b8d69be8d2a7ba89968dd7705cfe15.js.map → designSystemConfigurator.cfec15795ddbabb679f9e4c150cfa7b3.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/{main.27a7d93d9613a472f63b.js → main.2a5fd0221167da195620.js} +2 -2
- package/dist/{main.f7190ae550cb00f6b9b2c31e50106480.js.map → main.662ea901f57183c3b8cec7d55407a2b6.js.map} +1 -1
- package/dist/remoteEntry.js +2 -2
- package/package.json +7 -7
- package/dist/200.200.fcbc4e0d224abc8f50a8.js +0 -2
- package/dist/200.76f56ca24c96f5e9083af4290f22f314.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_genesislcap_design_system_configurator=self.webpackChunk_genesislcap_design_system_configurator||[]).push([[122],{85122:(e,a,r)=>{r.r(a),r.d(a,{ColorPalette:()=>Gh,ColorToken:()=>_h,ColorTokens:()=>qh,DesignSystemEditor:()=>Oh,DesignSystemExport:()=>Eh,DesignSystemPreview:()=>am,EventName:()=>bh,PreviewComponents:()=>Mh,PreviewForm:()=>gm,PreviewGrid:()=>cm,TypographyTokens:()=>Kh,defaultBodyFont:()=>wh,fontFamilies:()=>fh});var t={};r.r(t),r.d(t,{accentFillActive:()=>u.accentFillActive,accentFillActiveDelta:()=>u.accentFillActiveDelta,accentFillFocus:()=>u.accentFillFocus,accentFillFocusDelta:()=>u.accentFillFocusDelta,accentFillHover:()=>u.accentFillHover,accentFillHoverDelta:()=>u.accentFillHoverDelta,accentFillRest:()=>u.accentFillRest,accentFillRestDelta:()=>u.accentFillRestDelta,accentForegroundActive:()=>u.accentForegroundActive,accentForegroundActiveDelta:()=>u.accentForegroundActiveDelta,accentForegroundFocus:()=>u.accentForegroundFocus,accentForegroundFocusDelta:()=>u.accentForegroundFocusDelta,accentForegroundHover:()=>u.accentForegroundHover,accentForegroundHoverDelta:()=>u.accentForegroundHoverDelta,accentForegroundRest:()=>u.accentForegroundRest,accentForegroundRestDelta:()=>u.accentForegroundRestDelta,accentPalette:()=>u.accentPalette,baseHeightMultiplier:()=>u.baseHeightMultiplier,baseLayerLuminance:()=>u.baseLayerLuminance,bodyFont:()=>u.bodyFont,controlCornerRadius:()=>u.controlCornerRadius,defaultErrorColor:()=>xe,defaultSuccessColor:()=>Se,density:()=>u.density,designUnit:()=>u.designUnit,direction:()=>u.direction,disabledOpacity:()=>u.disabledOpacity,errorColor:()=>ke,fillColor:()=>u.fillColor,focusStrokeInner:()=>u.focusStrokeInner,focusStrokeOuter:()=>u.focusStrokeOuter,focusStrokeWidth:()=>u.focusStrokeWidth,foregroundOnAccentActive:()=>u.foregroundOnAccentActive,foregroundOnAccentActiveLarge:()=>u.foregroundOnAccentActiveLarge,foregroundOnAccentFocus:()=>u.foregroundOnAccentFocus,foregroundOnAccentFocusLarge:()=>u.foregroundOnAccentFocusLarge,foregroundOnAccentHover:()=>u.foregroundOnAccentHover,foregroundOnAccentHoverLarge:()=>u.foregroundOnAccentHoverLarge,foregroundOnAccentRest:()=>u.foregroundOnAccentRest,foregroundOnAccentRestLarge:()=>u.foregroundOnAccentRestLarge,neutralFillActive:()=>u.neutralFillActive,neutralFillActiveDelta:()=>u.neutralFillActiveDelta,neutralFillFocus:()=>u.neutralFillFocus,neutralFillFocusDelta:()=>u.neutralFillFocusDelta,neutralFillHover:()=>u.neutralFillHover,neutralFillHoverDelta:()=>u.neutralFillHoverDelta,neutralFillInputActive:()=>u.neutralFillInputActive,neutralFillInputActiveDelta:()=>u.neutralFillInputActiveDelta,neutralFillInputFocus:()=>u.neutralFillInputFocus,neutralFillInputFocusDelta:()=>u.neutralFillInputFocusDelta,neutralFillInputHover:()=>u.neutralFillInputHover,neutralFillInputHoverDelta:()=>u.neutralFillInputHoverDelta,neutralFillInputRest:()=>u.neutralFillInputRest,neutralFillInputRestDelta:()=>u.neutralFillInputRestDelta,neutralFillLayerRest:()=>u.neutralFillLayerRest,neutralFillLayerRestDelta:()=>u.neutralFillLayerRestDelta,neutralFillRest:()=>u.neutralFillRest,neutralFillRestDelta:()=>u.neutralFillRestDelta,neutralFillStealthActive:()=>u.neutralFillStealthActive,neutralFillStealthActiveDelta:()=>u.neutralFillStealthActiveDelta,neutralFillStealthFocus:()=>u.neutralFillStealthFocus,neutralFillStealthFocusDelta:()=>u.neutralFillStealthFocusDelta,neutralFillStealthHover:()=>u.neutralFillStealthHover,neutralFillStealthHoverDelta:()=>u.neutralFillStealthHoverDelta,neutralFillStealthRest:()=>u.neutralFillStealthRest,neutralFillStealthRestDelta:()=>u.neutralFillStealthRestDelta,neutralFillStrongActive:()=>u.neutralFillStrongActive,neutralFillStrongActiveDelta:()=>u.neutralFillStrongActiveDelta,neutralFillStrongFocus:()=>u.neutralFillStrongFocus,neutralFillStrongFocusDelta:()=>u.neutralFillStrongFocusDelta,neutralFillStrongHover:()=>u.neutralFillStrongHover,neutralFillStrongHoverDelta:()=>u.neutralFillStrongHoverDelta,neutralFillStrongRest:()=>u.neutralFillStrongRest,neutralFillStrongRestDelta:()=>u.neutralFillStrongRestDelta,neutralForegroundHint:()=>u.neutralForegroundHint,neutralForegroundRest:()=>u.neutralForegroundRest,neutralLayer1:()=>u.neutralLayer1,neutralLayer2:()=>u.neutralLayer2,neutralLayer3:()=>u.neutralLayer3,neutralLayer4:()=>u.neutralLayer4,neutralLayerCardContainer:()=>u.neutralLayerCardContainer,neutralLayerFloating:()=>u.neutralLayerFloating,neutralPalette:()=>u.neutralPalette,neutralStrokeActive:()=>u.neutralStrokeActive,neutralStrokeActiveDelta:()=>u.neutralStrokeActiveDelta,neutralStrokeDividerRest:()=>u.neutralStrokeDividerRest,neutralStrokeDividerRestDelta:()=>u.neutralStrokeDividerRestDelta,neutralStrokeFocus:()=>u.neutralStrokeFocus,neutralStrokeFocusDelta:()=>u.neutralStrokeFocusDelta,neutralStrokeHover:()=>u.neutralStrokeHover,neutralStrokeHoverDelta:()=>u.neutralStrokeHoverDelta,neutralStrokeRest:()=>u.neutralStrokeRest,neutralStrokeRestDelta:()=>u.neutralStrokeRestDelta,strokeWidth:()=>u.strokeWidth,successColor:()=>Ce,typeRampBaseFontSize:()=>u.typeRampBaseFontSize,typeRampBaseLineHeight:()=>u.typeRampBaseLineHeight,typeRampMinus1FontSize:()=>u.typeRampMinus1FontSize,typeRampMinus1LineHeight:()=>u.typeRampMinus1LineHeight,typeRampMinus2FontSize:()=>u.typeRampMinus2FontSize,typeRampMinus2LineHeight:()=>u.typeRampMinus2LineHeight,typeRampPlus1FontSize:()=>u.typeRampPlus1FontSize,typeRampPlus1LineHeight:()=>u.typeRampPlus1LineHeight,typeRampPlus2FontSize:()=>u.typeRampPlus2FontSize,typeRampPlus2LineHeight:()=>u.typeRampPlus2LineHeight,typeRampPlus3FontSize:()=>u.typeRampPlus3FontSize,typeRampPlus3LineHeight:()=>u.typeRampPlus3LineHeight,typeRampPlus4FontSize:()=>u.typeRampPlus4FontSize,typeRampPlus4LineHeight:()=>u.typeRampPlus4LineHeight,typeRampPlus5FontSize:()=>u.typeRampPlus5FontSize,typeRampPlus5LineHeight:()=>u.typeRampPlus5LineHeight,typeRampPlus6FontSize:()=>u.typeRampPlus6FontSize,typeRampPlus6LineHeight:()=>u.typeRampPlus6LineHeight});var o={};r.r(o),r.d(o,{accentPaletteValue:()=>$e,baseLayerLuminanceValue:()=>Fe,bodyFontValue:()=>Pe,controlCornerRadiusValue:()=>Re,densityValue:()=>Ne,designTokens:()=>Ue,designUnitValue:()=>Le,directionValue:()=>Te,neutralPaletteValue:()=>Ae,strokeWidthValue:()=>De,typeRampBaseFontSizeValue:()=>Be,typeRampBaseLineHeightValue:()=>Ge});var i={};r.r(i),r.d(i,{accentFillActive:()=>u.accentFillActive,accentFillActiveDelta:()=>u.accentFillActiveDelta,accentFillFocus:()=>u.accentFillFocus,accentFillFocusDelta:()=>u.accentFillFocusDelta,accentFillHover:()=>u.accentFillHover,accentFillHoverDelta:()=>u.accentFillHoverDelta,accentFillRest:()=>u.accentFillRest,accentFillRestDelta:()=>u.accentFillRestDelta,accentForegroundActive:()=>u.accentForegroundActive,accentForegroundActiveDelta:()=>u.accentForegroundActiveDelta,accentForegroundFocus:()=>u.accentForegroundFocus,accentForegroundFocusDelta:()=>u.accentForegroundFocusDelta,accentForegroundHover:()=>u.accentForegroundHover,accentForegroundHoverDelta:()=>u.accentForegroundHoverDelta,accentForegroundRest:()=>u.accentForegroundRest,accentForegroundRestDelta:()=>u.accentForegroundRestDelta,accentPalette:()=>u.accentPalette,baseHeightMultiplier:()=>u.baseHeightMultiplier,baseLayerLuminance:()=>u.baseLayerLuminance,bodyFont:()=>u.bodyFont,buyColor:()=>Og,controlCornerRadius:()=>u.controlCornerRadius,defaultBuyColor:()=>Fg,defaultErrorColor:()=>wg,defaultSellColor:()=>Dg,defaultSuccessColor:()=>kg,defaultWarningColor:()=>Cg,density:()=>u.density,designUnit:()=>u.designUnit,direction:()=>u.direction,disabledOpacity:()=>u.disabledOpacity,errorColor:()=>yg,fillColor:()=>u.fillColor,focusStrokeInner:()=>u.focusStrokeInner,focusStrokeOuter:()=>u.focusStrokeOuter,focusStrokeWidth:()=>u.focusStrokeWidth,foregroundOnAccentActive:()=>u.foregroundOnAccentActive,foregroundOnAccentActiveLarge:()=>u.foregroundOnAccentActiveLarge,foregroundOnAccentFocus:()=>u.foregroundOnAccentFocus,foregroundOnAccentFocusLarge:()=>u.foregroundOnAccentFocusLarge,foregroundOnAccentHover:()=>u.foregroundOnAccentHover,foregroundOnAccentHoverLarge:()=>u.foregroundOnAccentHoverLarge,foregroundOnAccentRest:()=>u.foregroundOnAccentRest,foregroundOnAccentRestLarge:()=>u.foregroundOnAccentRestLarge,neutralFillActive:()=>u.neutralFillActive,neutralFillActiveDelta:()=>u.neutralFillActiveDelta,neutralFillFocus:()=>u.neutralFillFocus,neutralFillFocusDelta:()=>u.neutralFillFocusDelta,neutralFillHover:()=>u.neutralFillHover,neutralFillHoverDelta:()=>u.neutralFillHoverDelta,neutralFillInputActive:()=>u.neutralFillInputActive,neutralFillInputActiveDelta:()=>u.neutralFillInputActiveDelta,neutralFillInputFocus:()=>u.neutralFillInputFocus,neutralFillInputFocusDelta:()=>u.neutralFillInputFocusDelta,neutralFillInputHover:()=>u.neutralFillInputHover,neutralFillInputHoverDelta:()=>u.neutralFillInputHoverDelta,neutralFillInputRest:()=>u.neutralFillInputRest,neutralFillInputRestDelta:()=>u.neutralFillInputRestDelta,neutralFillLayerRest:()=>u.neutralFillLayerRest,neutralFillLayerRestDelta:()=>u.neutralFillLayerRestDelta,neutralFillRest:()=>u.neutralFillRest,neutralFillRestDelta:()=>u.neutralFillRestDelta,neutralFillStealthActive:()=>u.neutralFillStealthActive,neutralFillStealthActiveDelta:()=>u.neutralFillStealthActiveDelta,neutralFillStealthFocus:()=>u.neutralFillStealthFocus,neutralFillStealthFocusDelta:()=>u.neutralFillStealthFocusDelta,neutralFillStealthHover:()=>u.neutralFillStealthHover,neutralFillStealthHoverDelta:()=>u.neutralFillStealthHoverDelta,neutralFillStealthRest:()=>u.neutralFillStealthRest,neutralFillStealthRestDelta:()=>u.neutralFillStealthRestDelta,neutralFillStrongActive:()=>u.neutralFillStrongActive,neutralFillStrongActiveDelta:()=>u.neutralFillStrongActiveDelta,neutralFillStrongFocus:()=>u.neutralFillStrongFocus,neutralFillStrongFocusDelta:()=>u.neutralFillStrongFocusDelta,neutralFillStrongHover:()=>u.neutralFillStrongHover,neutralFillStrongHoverDelta:()=>u.neutralFillStrongHoverDelta,neutralFillStrongRest:()=>u.neutralFillStrongRest,neutralFillStrongRestDelta:()=>u.neutralFillStrongRestDelta,neutralForegroundHint:()=>u.neutralForegroundHint,neutralForegroundRest:()=>u.neutralForegroundRest,neutralLayer1:()=>u.neutralLayer1,neutralLayer2:()=>u.neutralLayer2,neutralLayer3:()=>u.neutralLayer3,neutralLayer4:()=>u.neutralLayer4,neutralLayerCardContainer:()=>u.neutralLayerCardContainer,neutralLayerFloating:()=>u.neutralLayerFloating,neutralPalette:()=>u.neutralPalette,neutralStrokeActive:()=>u.neutralStrokeActive,neutralStrokeActiveDelta:()=>u.neutralStrokeActiveDelta,neutralStrokeDividerRest:()=>u.neutralStrokeDividerRest,neutralStrokeDividerRestDelta:()=>u.neutralStrokeDividerRestDelta,neutralStrokeFocus:()=>u.neutralStrokeFocus,neutralStrokeFocusDelta:()=>u.neutralStrokeFocusDelta,neutralStrokeHover:()=>u.neutralStrokeHover,neutralStrokeHoverDelta:()=>u.neutralStrokeHoverDelta,neutralStrokeRest:()=>u.neutralStrokeRest,neutralStrokeRestDelta:()=>u.neutralStrokeRestDelta,sellColor:()=>Rg,strokeWidth:()=>u.strokeWidth,successColor:()=>zg,typeRampBaseFontSize:()=>u.typeRampBaseFontSize,typeRampBaseLineHeight:()=>u.typeRampBaseLineHeight,typeRampMinus1FontSize:()=>u.typeRampMinus1FontSize,typeRampMinus1LineHeight:()=>u.typeRampMinus1LineHeight,typeRampMinus2FontSize:()=>u.typeRampMinus2FontSize,typeRampMinus2LineHeight:()=>u.typeRampMinus2LineHeight,typeRampPlus1FontSize:()=>u.typeRampPlus1FontSize,typeRampPlus1LineHeight:()=>u.typeRampPlus1LineHeight,typeRampPlus2FontSize:()=>u.typeRampPlus2FontSize,typeRampPlus2LineHeight:()=>u.typeRampPlus2LineHeight,typeRampPlus3FontSize:()=>u.typeRampPlus3FontSize,typeRampPlus3LineHeight:()=>u.typeRampPlus3LineHeight,typeRampPlus4FontSize:()=>u.typeRampPlus4FontSize,typeRampPlus4LineHeight:()=>u.typeRampPlus4LineHeight,typeRampPlus5FontSize:()=>u.typeRampPlus5FontSize,typeRampPlus5LineHeight:()=>u.typeRampPlus5LineHeight,typeRampPlus6FontSize:()=>u.typeRampPlus6FontSize,typeRampPlus6LineHeight:()=>u.typeRampPlus6LineHeight,warningColor:()=>$g});var n={};r.r(n),r.d(n,{accentFillActiveDeltaValue:()=>Eg,accentFillFocusDeltaValue:()=>Pg,accentFillHoverDeltaValue:()=>jg,accentFillRestDeltaValue:()=>Ig,accentForegroundActiveDeltaValue:()=>Ug,accentForegroundFocusDeltaValue:()=>Hg,accentForegroundHoverDeltaValue:()=>Gg,accentForegroundRestDeltaValue:()=>Bg,accentPaletteValue:()=>Ng,baseHeightMultiplierValue:()=>vs,baseLayerLuminanceValue:()=>Mg,bodyFontValue:()=>xs,controlCornerRadiusValue:()=>fs,densityValue:()=>ws,designTokens:()=>Bs,designUnitValue:()=>ys,directionValue:()=>us,disabledOpacityValue:()=>hs,focusStrokeWidthValue:()=>bs,neutralFillActiveDeltaValue:()=>Yg,neutralFillFocusDeltaValue:()=>Qg,neutralFillHoverDeltaValue:()=>Vg,neutralFillInputActiveDeltaValue:()=>Jg,neutralFillInputFocusDeltaValue:()=>Zg,neutralFillInputHoverDeltaValue:()=>qg,neutralFillInputRestDeltaValue:()=>Wg,neutralFillLayerRestDeltaValue:()=>ns,neutralFillRestDeltaValue:()=>_g,neutralFillStealthActiveDeltaValue:()=>es,neutralFillStealthFocusDeltaValue:()=>as,neutralFillStealthHoverDeltaValue:()=>Xg,neutralFillStealthRestDeltaValue:()=>Kg,neutralFillStrongActiveDeltaValue:()=>os,neutralFillStrongFocusDeltaValue:()=>is,neutralFillStrongHoverDeltaValue:()=>ts,neutralFillStrongRestDeltaValue:()=>rs,neutralPaletteValue:()=>Lg,neutralStrokeActiveDeltaValue:()=>ss,neutralStrokeDividerRestDeltaValue:()=>cs,neutralStrokeFocusDeltaValue:()=>ds,neutralStrokeHoverDeltaValue:()=>gs,neutralStrokeRestDeltaValue:()=>ls,prefix:()=>ps,strokeWidthValue:()=>ms,typeRampBaseFontSizeValue:()=>ks,typeRampBaseLineHeightValue:()=>zs,typeRampMinus1FontSizeValue:()=>Ss,typeRampMinus1LineHeightValue:()=>Cs,typeRampMinus2FontSizeValue:()=>$s,typeRampMinus2LineHeightValue:()=>As,typeRampPlus1FontSizeValue:()=>Fs,typeRampPlus1LineHeightValue:()=>Os,typeRampPlus2FontSizeValue:()=>Ts,typeRampPlus2LineHeightValue:()=>Ds,typeRampPlus3FontSizeValue:()=>Rs,typeRampPlus3LineHeightValue:()=>Ns,typeRampPlus4FontSizeValue:()=>Ls,typeRampPlus4LineHeightValue:()=>Ms,typeRampPlus5FontSizeValue:()=>Is,typeRampPlus5LineHeightValue:()=>js,typeRampPlus6FontSizeValue:()=>Es,typeRampPlus6LineHeightValue:()=>Ps});var l=r(52314),g=r(92592),s=r(66526),d=r(60724),c=r(79292),p=r(99667),u=r(41663),h=r(67973);const m=c.css`
|
|
1
|
+
"use strict";(self.webpackChunk_genesislcap_design_system_configurator=self.webpackChunk_genesislcap_design_system_configurator||[]).push([[122],{85122:(e,a,r)=>{r.r(a),r.d(a,{ColorPalette:()=>Gh,ColorToken:()=>_h,ColorTokens:()=>qh,DesignSystemEditor:()=>Oh,DesignSystemExport:()=>Eh,DesignSystemPreview:()=>am,EventName:()=>bh,PreviewComponents:()=>Mh,PreviewForm:()=>gm,PreviewGrid:()=>cm,TypographyTokens:()=>Kh,defaultBodyFont:()=>wh,fontFamilies:()=>fh});var t={};r.r(t),r.d(t,{accentFillActive:()=>u.accentFillActive,accentFillActiveDelta:()=>u.accentFillActiveDelta,accentFillFocus:()=>u.accentFillFocus,accentFillFocusDelta:()=>u.accentFillFocusDelta,accentFillHover:()=>u.accentFillHover,accentFillHoverDelta:()=>u.accentFillHoverDelta,accentFillRest:()=>u.accentFillRest,accentFillRestDelta:()=>u.accentFillRestDelta,accentForegroundActive:()=>u.accentForegroundActive,accentForegroundActiveDelta:()=>u.accentForegroundActiveDelta,accentForegroundFocus:()=>u.accentForegroundFocus,accentForegroundFocusDelta:()=>u.accentForegroundFocusDelta,accentForegroundHover:()=>u.accentForegroundHover,accentForegroundHoverDelta:()=>u.accentForegroundHoverDelta,accentForegroundRest:()=>u.accentForegroundRest,accentForegroundRestDelta:()=>u.accentForegroundRestDelta,accentPalette:()=>u.accentPalette,baseHeightMultiplier:()=>u.baseHeightMultiplier,baseLayerLuminance:()=>u.baseLayerLuminance,bodyFont:()=>u.bodyFont,controlCornerRadius:()=>u.controlCornerRadius,defaultErrorColor:()=>xe,defaultSuccessColor:()=>Se,density:()=>u.density,designUnit:()=>u.designUnit,direction:()=>u.direction,disabledOpacity:()=>u.disabledOpacity,errorColor:()=>ke,fillColor:()=>u.fillColor,focusStrokeInner:()=>u.focusStrokeInner,focusStrokeOuter:()=>u.focusStrokeOuter,focusStrokeWidth:()=>u.focusStrokeWidth,foregroundOnAccentActive:()=>u.foregroundOnAccentActive,foregroundOnAccentActiveLarge:()=>u.foregroundOnAccentActiveLarge,foregroundOnAccentFocus:()=>u.foregroundOnAccentFocus,foregroundOnAccentFocusLarge:()=>u.foregroundOnAccentFocusLarge,foregroundOnAccentHover:()=>u.foregroundOnAccentHover,foregroundOnAccentHoverLarge:()=>u.foregroundOnAccentHoverLarge,foregroundOnAccentRest:()=>u.foregroundOnAccentRest,foregroundOnAccentRestLarge:()=>u.foregroundOnAccentRestLarge,neutralFillActive:()=>u.neutralFillActive,neutralFillActiveDelta:()=>u.neutralFillActiveDelta,neutralFillFocus:()=>u.neutralFillFocus,neutralFillFocusDelta:()=>u.neutralFillFocusDelta,neutralFillHover:()=>u.neutralFillHover,neutralFillHoverDelta:()=>u.neutralFillHoverDelta,neutralFillInputActive:()=>u.neutralFillInputActive,neutralFillInputActiveDelta:()=>u.neutralFillInputActiveDelta,neutralFillInputFocus:()=>u.neutralFillInputFocus,neutralFillInputFocusDelta:()=>u.neutralFillInputFocusDelta,neutralFillInputHover:()=>u.neutralFillInputHover,neutralFillInputHoverDelta:()=>u.neutralFillInputHoverDelta,neutralFillInputRest:()=>u.neutralFillInputRest,neutralFillInputRestDelta:()=>u.neutralFillInputRestDelta,neutralFillLayerRest:()=>u.neutralFillLayerRest,neutralFillLayerRestDelta:()=>u.neutralFillLayerRestDelta,neutralFillRest:()=>u.neutralFillRest,neutralFillRestDelta:()=>u.neutralFillRestDelta,neutralFillStealthActive:()=>u.neutralFillStealthActive,neutralFillStealthActiveDelta:()=>u.neutralFillStealthActiveDelta,neutralFillStealthFocus:()=>u.neutralFillStealthFocus,neutralFillStealthFocusDelta:()=>u.neutralFillStealthFocusDelta,neutralFillStealthHover:()=>u.neutralFillStealthHover,neutralFillStealthHoverDelta:()=>u.neutralFillStealthHoverDelta,neutralFillStealthRest:()=>u.neutralFillStealthRest,neutralFillStealthRestDelta:()=>u.neutralFillStealthRestDelta,neutralFillStrongActive:()=>u.neutralFillStrongActive,neutralFillStrongActiveDelta:()=>u.neutralFillStrongActiveDelta,neutralFillStrongFocus:()=>u.neutralFillStrongFocus,neutralFillStrongFocusDelta:()=>u.neutralFillStrongFocusDelta,neutralFillStrongHover:()=>u.neutralFillStrongHover,neutralFillStrongHoverDelta:()=>u.neutralFillStrongHoverDelta,neutralFillStrongRest:()=>u.neutralFillStrongRest,neutralFillStrongRestDelta:()=>u.neutralFillStrongRestDelta,neutralForegroundHint:()=>u.neutralForegroundHint,neutralForegroundRest:()=>u.neutralForegroundRest,neutralLayer1:()=>u.neutralLayer1,neutralLayer2:()=>u.neutralLayer2,neutralLayer3:()=>u.neutralLayer3,neutralLayer4:()=>u.neutralLayer4,neutralLayerCardContainer:()=>u.neutralLayerCardContainer,neutralLayerFloating:()=>u.neutralLayerFloating,neutralPalette:()=>u.neutralPalette,neutralStrokeActive:()=>u.neutralStrokeActive,neutralStrokeActiveDelta:()=>u.neutralStrokeActiveDelta,neutralStrokeDividerRest:()=>u.neutralStrokeDividerRest,neutralStrokeDividerRestDelta:()=>u.neutralStrokeDividerRestDelta,neutralStrokeFocus:()=>u.neutralStrokeFocus,neutralStrokeFocusDelta:()=>u.neutralStrokeFocusDelta,neutralStrokeHover:()=>u.neutralStrokeHover,neutralStrokeHoverDelta:()=>u.neutralStrokeHoverDelta,neutralStrokeRest:()=>u.neutralStrokeRest,neutralStrokeRestDelta:()=>u.neutralStrokeRestDelta,strokeWidth:()=>u.strokeWidth,successColor:()=>Ce,typeRampBaseFontSize:()=>u.typeRampBaseFontSize,typeRampBaseLineHeight:()=>u.typeRampBaseLineHeight,typeRampMinus1FontSize:()=>u.typeRampMinus1FontSize,typeRampMinus1LineHeight:()=>u.typeRampMinus1LineHeight,typeRampMinus2FontSize:()=>u.typeRampMinus2FontSize,typeRampMinus2LineHeight:()=>u.typeRampMinus2LineHeight,typeRampPlus1FontSize:()=>u.typeRampPlus1FontSize,typeRampPlus1LineHeight:()=>u.typeRampPlus1LineHeight,typeRampPlus2FontSize:()=>u.typeRampPlus2FontSize,typeRampPlus2LineHeight:()=>u.typeRampPlus2LineHeight,typeRampPlus3FontSize:()=>u.typeRampPlus3FontSize,typeRampPlus3LineHeight:()=>u.typeRampPlus3LineHeight,typeRampPlus4FontSize:()=>u.typeRampPlus4FontSize,typeRampPlus4LineHeight:()=>u.typeRampPlus4LineHeight,typeRampPlus5FontSize:()=>u.typeRampPlus5FontSize,typeRampPlus5LineHeight:()=>u.typeRampPlus5LineHeight,typeRampPlus6FontSize:()=>u.typeRampPlus6FontSize,typeRampPlus6LineHeight:()=>u.typeRampPlus6LineHeight});var o={};r.r(o),r.d(o,{accentPaletteValue:()=>$e,baseLayerLuminanceValue:()=>Fe,bodyFontValue:()=>Pe,controlCornerRadiusValue:()=>Re,densityValue:()=>Ne,designTokens:()=>Ue,designUnitValue:()=>Le,directionValue:()=>Te,neutralPaletteValue:()=>Ae,strokeWidthValue:()=>De,typeRampBaseFontSizeValue:()=>Be,typeRampBaseLineHeightValue:()=>Ge});var i={};r.r(i),r.d(i,{accentFillActive:()=>u.accentFillActive,accentFillActiveDelta:()=>u.accentFillActiveDelta,accentFillFocus:()=>u.accentFillFocus,accentFillFocusDelta:()=>u.accentFillFocusDelta,accentFillHover:()=>u.accentFillHover,accentFillHoverDelta:()=>u.accentFillHoverDelta,accentFillRest:()=>u.accentFillRest,accentFillRestDelta:()=>u.accentFillRestDelta,accentForegroundActive:()=>u.accentForegroundActive,accentForegroundActiveDelta:()=>u.accentForegroundActiveDelta,accentForegroundFocus:()=>u.accentForegroundFocus,accentForegroundFocusDelta:()=>u.accentForegroundFocusDelta,accentForegroundHover:()=>u.accentForegroundHover,accentForegroundHoverDelta:()=>u.accentForegroundHoverDelta,accentForegroundRest:()=>u.accentForegroundRest,accentForegroundRestDelta:()=>u.accentForegroundRestDelta,accentPalette:()=>u.accentPalette,baseHeightMultiplier:()=>u.baseHeightMultiplier,baseLayerLuminance:()=>u.baseLayerLuminance,bodyFont:()=>u.bodyFont,buyColor:()=>Og,controlCornerRadius:()=>u.controlCornerRadius,defaultBuyColor:()=>Fg,defaultErrorColor:()=>wg,defaultSellColor:()=>Dg,defaultSuccessColor:()=>kg,defaultWarningColor:()=>Cg,density:()=>u.density,designUnit:()=>u.designUnit,direction:()=>u.direction,disabledOpacity:()=>u.disabledOpacity,errorColor:()=>yg,fillColor:()=>u.fillColor,focusStrokeInner:()=>u.focusStrokeInner,focusStrokeOuter:()=>u.focusStrokeOuter,focusStrokeWidth:()=>u.focusStrokeWidth,foregroundOnAccentActive:()=>u.foregroundOnAccentActive,foregroundOnAccentActiveLarge:()=>u.foregroundOnAccentActiveLarge,foregroundOnAccentFocus:()=>u.foregroundOnAccentFocus,foregroundOnAccentFocusLarge:()=>u.foregroundOnAccentFocusLarge,foregroundOnAccentHover:()=>u.foregroundOnAccentHover,foregroundOnAccentHoverLarge:()=>u.foregroundOnAccentHoverLarge,foregroundOnAccentRest:()=>u.foregroundOnAccentRest,foregroundOnAccentRestLarge:()=>u.foregroundOnAccentRestLarge,neutralFillActive:()=>u.neutralFillActive,neutralFillActiveDelta:()=>u.neutralFillActiveDelta,neutralFillFocus:()=>u.neutralFillFocus,neutralFillFocusDelta:()=>u.neutralFillFocusDelta,neutralFillHover:()=>u.neutralFillHover,neutralFillHoverDelta:()=>u.neutralFillHoverDelta,neutralFillInputActive:()=>u.neutralFillInputActive,neutralFillInputActiveDelta:()=>u.neutralFillInputActiveDelta,neutralFillInputFocus:()=>u.neutralFillInputFocus,neutralFillInputFocusDelta:()=>u.neutralFillInputFocusDelta,neutralFillInputHover:()=>u.neutralFillInputHover,neutralFillInputHoverDelta:()=>u.neutralFillInputHoverDelta,neutralFillInputRest:()=>u.neutralFillInputRest,neutralFillInputRestDelta:()=>u.neutralFillInputRestDelta,neutralFillLayerRest:()=>u.neutralFillLayerRest,neutralFillLayerRestDelta:()=>u.neutralFillLayerRestDelta,neutralFillRest:()=>u.neutralFillRest,neutralFillRestDelta:()=>u.neutralFillRestDelta,neutralFillStealthActive:()=>u.neutralFillStealthActive,neutralFillStealthActiveDelta:()=>u.neutralFillStealthActiveDelta,neutralFillStealthFocus:()=>u.neutralFillStealthFocus,neutralFillStealthFocusDelta:()=>u.neutralFillStealthFocusDelta,neutralFillStealthHover:()=>u.neutralFillStealthHover,neutralFillStealthHoverDelta:()=>u.neutralFillStealthHoverDelta,neutralFillStealthRest:()=>u.neutralFillStealthRest,neutralFillStealthRestDelta:()=>u.neutralFillStealthRestDelta,neutralFillStrongActive:()=>u.neutralFillStrongActive,neutralFillStrongActiveDelta:()=>u.neutralFillStrongActiveDelta,neutralFillStrongFocus:()=>u.neutralFillStrongFocus,neutralFillStrongFocusDelta:()=>u.neutralFillStrongFocusDelta,neutralFillStrongHover:()=>u.neutralFillStrongHover,neutralFillStrongHoverDelta:()=>u.neutralFillStrongHoverDelta,neutralFillStrongRest:()=>u.neutralFillStrongRest,neutralFillStrongRestDelta:()=>u.neutralFillStrongRestDelta,neutralForegroundHint:()=>u.neutralForegroundHint,neutralForegroundRest:()=>u.neutralForegroundRest,neutralLayer1:()=>u.neutralLayer1,neutralLayer2:()=>u.neutralLayer2,neutralLayer3:()=>u.neutralLayer3,neutralLayer4:()=>u.neutralLayer4,neutralLayerCardContainer:()=>u.neutralLayerCardContainer,neutralLayerFloating:()=>u.neutralLayerFloating,neutralPalette:()=>u.neutralPalette,neutralStrokeActive:()=>u.neutralStrokeActive,neutralStrokeActiveDelta:()=>u.neutralStrokeActiveDelta,neutralStrokeDividerRest:()=>u.neutralStrokeDividerRest,neutralStrokeDividerRestDelta:()=>u.neutralStrokeDividerRestDelta,neutralStrokeFocus:()=>u.neutralStrokeFocus,neutralStrokeFocusDelta:()=>u.neutralStrokeFocusDelta,neutralStrokeHover:()=>u.neutralStrokeHover,neutralStrokeHoverDelta:()=>u.neutralStrokeHoverDelta,neutralStrokeRest:()=>u.neutralStrokeRest,neutralStrokeRestDelta:()=>u.neutralStrokeRestDelta,sellColor:()=>Rg,strokeWidth:()=>u.strokeWidth,successColor:()=>zg,typeRampBaseFontSize:()=>u.typeRampBaseFontSize,typeRampBaseLineHeight:()=>u.typeRampBaseLineHeight,typeRampMinus1FontSize:()=>u.typeRampMinus1FontSize,typeRampMinus1LineHeight:()=>u.typeRampMinus1LineHeight,typeRampMinus2FontSize:()=>u.typeRampMinus2FontSize,typeRampMinus2LineHeight:()=>u.typeRampMinus2LineHeight,typeRampPlus1FontSize:()=>u.typeRampPlus1FontSize,typeRampPlus1LineHeight:()=>u.typeRampPlus1LineHeight,typeRampPlus2FontSize:()=>u.typeRampPlus2FontSize,typeRampPlus2LineHeight:()=>u.typeRampPlus2LineHeight,typeRampPlus3FontSize:()=>u.typeRampPlus3FontSize,typeRampPlus3LineHeight:()=>u.typeRampPlus3LineHeight,typeRampPlus4FontSize:()=>u.typeRampPlus4FontSize,typeRampPlus4LineHeight:()=>u.typeRampPlus4LineHeight,typeRampPlus5FontSize:()=>u.typeRampPlus5FontSize,typeRampPlus5LineHeight:()=>u.typeRampPlus5LineHeight,typeRampPlus6FontSize:()=>u.typeRampPlus6FontSize,typeRampPlus6LineHeight:()=>u.typeRampPlus6LineHeight,warningColor:()=>$g});var n={};r.r(n),r.d(n,{accentFillActiveDeltaValue:()=>Eg,accentFillFocusDeltaValue:()=>Pg,accentFillHoverDeltaValue:()=>jg,accentFillRestDeltaValue:()=>Ig,accentForegroundActiveDeltaValue:()=>Ug,accentForegroundFocusDeltaValue:()=>Hg,accentForegroundHoverDeltaValue:()=>Gg,accentForegroundRestDeltaValue:()=>Bg,accentPaletteValue:()=>Ng,baseHeightMultiplierValue:()=>vs,baseLayerLuminanceValue:()=>Mg,bodyFontValue:()=>xs,controlCornerRadiusValue:()=>fs,densityValue:()=>ws,designTokens:()=>Bs,designUnitValue:()=>ys,directionValue:()=>us,disabledOpacityValue:()=>hs,focusStrokeWidthValue:()=>bs,neutralFillActiveDeltaValue:()=>Yg,neutralFillFocusDeltaValue:()=>Qg,neutralFillHoverDeltaValue:()=>Vg,neutralFillInputActiveDeltaValue:()=>Jg,neutralFillInputFocusDeltaValue:()=>Zg,neutralFillInputHoverDeltaValue:()=>qg,neutralFillInputRestDeltaValue:()=>Wg,neutralFillLayerRestDeltaValue:()=>ns,neutralFillRestDeltaValue:()=>_g,neutralFillStealthActiveDeltaValue:()=>es,neutralFillStealthFocusDeltaValue:()=>as,neutralFillStealthHoverDeltaValue:()=>Xg,neutralFillStealthRestDeltaValue:()=>Kg,neutralFillStrongActiveDeltaValue:()=>os,neutralFillStrongFocusDeltaValue:()=>is,neutralFillStrongHoverDeltaValue:()=>ts,neutralFillStrongRestDeltaValue:()=>rs,neutralPaletteValue:()=>Lg,neutralStrokeActiveDeltaValue:()=>ss,neutralStrokeDividerRestDeltaValue:()=>cs,neutralStrokeFocusDeltaValue:()=>ds,neutralStrokeHoverDeltaValue:()=>gs,neutralStrokeRestDeltaValue:()=>ls,prefix:()=>ps,strokeWidthValue:()=>ms,typeRampBaseFontSizeValue:()=>ks,typeRampBaseLineHeightValue:()=>zs,typeRampMinus1FontSizeValue:()=>Ss,typeRampMinus1LineHeightValue:()=>Cs,typeRampMinus2FontSizeValue:()=>$s,typeRampMinus2LineHeightValue:()=>As,typeRampPlus1FontSizeValue:()=>Fs,typeRampPlus1LineHeightValue:()=>Os,typeRampPlus2FontSizeValue:()=>Ts,typeRampPlus2LineHeightValue:()=>Ds,typeRampPlus3FontSizeValue:()=>Rs,typeRampPlus3LineHeightValue:()=>Ns,typeRampPlus4FontSizeValue:()=>Ls,typeRampPlus4LineHeightValue:()=>Ms,typeRampPlus5FontSizeValue:()=>Is,typeRampPlus5LineHeightValue:()=>js,typeRampPlus6FontSizeValue:()=>Es,typeRampPlus6LineHeightValue:()=>Ps});var l=r(88915),g=r(92592),s=r(66526),d=r(60724),c=r(79292),p=r(99667),u=r(41663),h=r(67973);const m=c.css`
|
|
2
2
|
:host {
|
|
3
3
|
border: calc(${u.strokeWidth} * 1px) solid transparent;
|
|
4
4
|
margin: 0;
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
background: ${h.H.Canvas};
|
|
51
51
|
border-color: ${h.H.CanvasText};
|
|
52
52
|
}
|
|
53
|
-
`));var b=r(
|
|
53
|
+
`));var b=r(82318);const v=(0,b.createLogger)("foundation-form"),f={"^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$":"Invalid phone number. Must match +###-###-######"},w=c.html`
|
|
54
54
|
<template>
|
|
55
55
|
${(0,c.when)((e=>!1),c.html`
|
|
56
56
|
<zero-button class="clipboard-button" @click=${e=>e.copyUISchemaToClipboard()}>
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
</control-wrapper>
|
|
285
285
|
</template>
|
|
286
286
|
`)(e.prefix)}
|
|
287
|
-
`,tester:(0,d.yMz)(3,j),mapper:d.xq9};var P=r(
|
|
287
|
+
`,tester:(0,d.yMz)(3,j),mapper:d.xq9};var P=r(37576);const B=e=>a=>{if(!a||!(0,d.DRl)(a))return!1;const r=a.options;return!(!r||!r[e])},G=(0,d.xDy)(B("allOptionsResourceName"),(0,d.or)((0,d.wcO)((e=>(0,d.ndu)(e,"array"))),(0,d.wcO)((e=>e.hasOwnProperty("oneOf")&&e.oneOf.some((e=>(0,d.ndu)(e,"array")))))));P.MultiselectDatasource;const U={renderer:c.html`
|
|
288
288
|
${e=>((e="zero")=>c.html`
|
|
289
289
|
<template>
|
|
290
290
|
<control-wrapper
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"200.200.xxxxxxxxxxxxxxxxxxxx.js","mappings":"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","sources":["webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/credentialManager/credentialManager.types.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/credentialManager/credentialManager.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/user/user.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/auth/auth.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/auth/auth.types.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/env/variables.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/metadata/metadata.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/utils/regex.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/connect/connect.types.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/serializers/json/json.types.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/serializers/json/json.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/connect/http.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/connect/http.connect.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/connect/reconnectStrategy.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/connect/ticker.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/connect/socket.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/connect/connect.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/connect/message.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/datasource/dataServerResultFilter.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/datasource/datasource.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/datasource/criteriaFiltersToFields.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/datasource/datasource.types.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/datasource/normaliseCriteria.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/metadata/metadata.types.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/metadata/metadata.utils.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/session/session.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-comms/dist/esm/utils/logger.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/directives/sync/sync.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/directives/when-else/when-else.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/formatters/datetime.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/styles/dom.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/styles/typography.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/utils/logger.js","webpack://@genesislcap/design-system-configurator/../../foundation/foundation-utils/dist/esm/uuid/uuid.js"],"sourcesContent":["import { DI } from '@microsoft/fast-foundation';\n/**\n * The DI key which can be used for explicit configuration by the host application\n * @internal\n */\nexport const CredentialManagerConfig = DI.createInterface();\n","import { __awaiter, __decorate, __param, __rest } from \"tslib\";\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport jsCookie from 'js-cookie';\nimport { AuthType } from '../auth/auth.types';\nimport { Session } from '../session';\nimport { logger } from '../utils';\nimport { CredentialManagerConfig } from './credentialManager.types';\nfunction supportsCredentialsContainer() {\n if (!(navigator === null || navigator === void 0 ? void 0 : navigator.credentials)) {\n logger.warn('CredentialsContainer not available in this browser.');\n return false;\n }\n if (!('PasswordCredential' in window)) {\n logger.warn('PasswordCredential not available in this browser.');\n return false;\n }\n return true;\n}\n/**\n * The default separator used for splitting credential parts.\n * @public\n */\nexport const credentialSeparator = ':';\nfunction extractParts(input = '', separator = credentialSeparator, limit) {\n return input\n .split(separator, limit)\n .map((opt) => opt.trim())\n .filter((opt) => opt !== '');\n}\nfunction includesSeparator(input, separator = credentialSeparator) {\n const value = typeof input == 'string' && input.trim();\n return !!value && value.includes(separator);\n}\nfunction countSeparators(input, separator = credentialSeparator) {\n const value = typeof input == 'string' && input.trim();\n return !!value ? (input.match(new RegExp(separator, 'g')) || []).length : 0;\n}\nfunction prioritizeSeparatorInputs(inputs, separator = credentialSeparator) {\n for (const input of inputs) {\n if (includesSeparator(input, separator)) {\n return input;\n }\n }\n return inputs.find((input) => typeof input == 'string' && !!input.trim());\n}\nfunction createId(input, name, organisation) {\n const value = typeof input == 'string' && input.trim();\n if (!value || (organisation && !value.includes(organisation)) || countSeparators(value) > 1) {\n if (organisation && name && organisation !== name) {\n return `${name}:${organisation}`;\n }\n else {\n return name || organisation;\n }\n }\n return value;\n}\nfunction migrationFailedLogger(subtext = 'credential') {\n logger.warn(`Unable to migrate legacy ${subtext} to latest format. Please remove from your browser.`);\n}\n/**\n * The default request options for the CredentialManager service.\n * @public\n */\nexport const defaultCredentialRequestOptions = {\n password: true,\n mediation: 'optional', // < There are a couple of options depending on the level of user input we need\n};\n/**\n * The default configuration for the CredentialManager service.\n * @public\n */\nexport const defaultCredentialManagerConfig = {\n cookie: {\n /**\n * Path was location.pathname, however it looks like axes is the only project using it, and they set it to '/'.\n * Making '/' the default. If callers want to change it they can.\n */\n path: '/',\n name: 'credentials',\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n expires: 20 * 365,\n storePasswords: false,\n },\n};\n/**\n * The default implementation for the CredentialManager interface.\n * @public\n */\nlet DefaultCredentialManager = class DefaultCredentialManager {\n constructor(session, config = defaultCredentialManagerConfig) {\n this.session = session;\n this.config = config;\n }\n createBasicCredentials(inputs) {\n return {\n type: AuthType.BASIC,\n username: inputs.username,\n password: inputs.password,\n };\n }\n createRefreshCredentials(inputs) {\n var _a, _b, _c;\n return {\n type: AuthType.REFRESH,\n username: (_a = inputs === null || inputs === void 0 ? void 0 : inputs.username) !== null && _a !== void 0 ? _a : this.getUsername(),\n refreshToken: (_b = inputs === null || inputs === void 0 ? void 0 : inputs.refreshToken) !== null && _b !== void 0 ? _b : this.getRefreshToken(),\n mfaToken: (_c = inputs === null || inputs === void 0 ? void 0 : inputs.mfaToken) !== null && _c !== void 0 ? _c : this.getMFAToken(),\n };\n }\n createSSOCredentials(inputs) {\n var _a;\n return {\n type: AuthType.SSO,\n ssoToken: (_a = inputs === null || inputs === void 0 ? void 0 : inputs.ssoToken) !== null && _a !== void 0 ? _a : this.getSSOToken(),\n };\n }\n validateBasicCredentials(credentials) {\n return credentials && !!credentials.username && !!credentials.password;\n }\n validateRefreshCredentials(credentials) {\n return credentials && !!credentials.refreshToken && !!credentials.username;\n }\n validateSSOCredentials(credentials) {\n return credentials && !!credentials.ssoToken;\n }\n validateUserCredentialData(data, ensurePassword) {\n const baseResult = data &&\n !!data.id &&\n !!data.name &&\n !data.name.includes(credentialSeparator) &&\n countSeparators(data.id) <= 1;\n return ensurePassword ? baseResult && !!data.password : baseResult;\n }\n normaliseLegacyCredentialData(data, cookie) {\n const validContainerData = this.validateUserCredentialData(data, true);\n if (validContainerData) {\n return [data, true];\n }\n const validCookieData = this.validateUserCredentialData(cookie);\n if (validCookieData) {\n return [cookie, false];\n }\n /**\n * Attempt to migrate legacy PasswordCredentials\n */\n if (data) {\n try {\n const legacyData = data;\n const [name] = extractParts(legacyData.name || legacyData.id);\n const [_, organisation] = extractParts(prioritizeSeparatorInputs([legacyData.id, legacyData.name]));\n const id = createId(legacyData.id || legacyData.name, name, organisation);\n return [\n {\n id,\n name,\n password: legacyData.password || '',\n },\n true,\n ];\n }\n catch (err) {\n migrationFailedLogger('PasswordCredential');\n }\n }\n /**\n * Attempt to migrate legacy cookies\n */\n if (cookie) {\n try {\n const legacyCookie = cookie;\n const [name] = extractParts(legacyCookie.name || legacyCookie.username || legacyCookie.organisation);\n const [_, organisation] = extractParts(prioritizeSeparatorInputs([\n legacyCookie.organisation || legacyCookie.username || legacyCookie.name,\n ]));\n const id = createId(legacyCookie.id || legacyCookie.username || legacyCookie.name, name, organisation);\n return [\n {\n id,\n name,\n password: legacyCookie.password || '',\n },\n false,\n ];\n }\n catch (err) {\n migrationFailedLogger('cookie');\n }\n }\n return [undefined, false];\n }\n storeCredentialsInContainer(data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!supportsCredentialsContainer()) {\n return;\n }\n const credentials = new PasswordCredential(data);\n logger.debug('Storing credentials in CredentialsContainer');\n return navigator.credentials.store(credentials);\n });\n }\n getCredentialsFromContainer(options = defaultCredentialRequestOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!supportsCredentialsContainer()) {\n return;\n }\n logger.debug('Getting credentials from CredentialsContainer');\n return (yield navigator.credentials.get(options));\n });\n }\n storeCredentialsInCookie(data) {\n const { password } = data, rest = __rest(data, [\"password\"]);\n const credentials = this.config.cookie.storePasswords ? data : rest;\n logger.debug('Storing credentials in cookie');\n return !!jsCookie.set(this.config.cookie.name, JSON.stringify(credentials), {\n expires: this.config.cookie.expires,\n domain: location.hostname,\n path: this.config.cookie.path,\n secure: true,\n });\n }\n getCredentialsFromCookie() {\n logger.debug('Getting credentials from cookie');\n const cookie = jsCookie.get(this.config.cookie.name);\n return cookie ? JSON.parse(cookie) : undefined;\n }\n storeCredentials(data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (supportsCredentialsContainer()) {\n const credential = yield this.storeCredentialsInContainer(data);\n return Promise.resolve(!!credential);\n }\n return Promise.resolve(this.storeCredentialsInCookie(data));\n });\n }\n getCredentials(options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (supportsCredentialsContainer()) {\n return this.getCredentialsFromContainer(options);\n }\n return Promise.resolve(this.getCredentialsFromCookie());\n });\n }\n getSSOToken() {\n return this.session.getSessionStorageItem('ssoToken');\n }\n getUsername() {\n return this.session.getSessionStorageItem('username');\n }\n getRefreshToken() {\n return this.session.getSessionStorageItem('refreshToken');\n }\n getMFAToken() {\n return this.session.getSessionStorageItem('mfaToken');\n }\n removeCookie() {\n jsCookie.remove(this.config.cookie.name, {\n domain: location.hostname,\n path: this.config.cookie.path,\n });\n }\n removeSSOToken() {\n this.session.removeSessionStorageItem('ssoToken');\n }\n removeUsername() {\n this.session.removeSessionStorageItem('username');\n }\n removeRefreshToken() {\n this.session.removeSessionStorageItem('refreshToken');\n }\n removeMFAToken() {\n this.session.removeSessionStorageItem('mfaToken');\n }\n removeAll() {\n this.removeCookie();\n this.removeSSOToken();\n this.removeUsername();\n this.removeRefreshToken();\n this.removeMFAToken();\n }\n preventSilentAccess() {\n return supportsCredentialsContainer() && navigator.credentials.preventSilentAccess();\n }\n};\nDefaultCredentialManager = __decorate([\n __param(0, Session),\n __param(1, optional(CredentialManagerConfig))\n], DefaultCredentialManager);\nexport { DefaultCredentialManager };\n/**\n * The DI token for the CredentialManager interface.\n * @internal\n */\nexport const CredentialManager = DI.createInterface((x) => x.singleton(DefaultCredentialManager));\n","import { __decorate } from \"tslib\";\nimport { observable } from '@microsoft/fast-element';\n/**\n * Represents the current user (i.e. the user that is currently logged in).\n * @public\n */\nexport class CurrentUser {\n constructor(options) {\n Object.assign(this, options);\n }\n hasAdminProfile() {\n return this.hasProfile('ADMIN');\n }\n hasPermission(permission) {\n return this.hasKey(this.permissions, permission);\n }\n hasProfile(profile) {\n return this.hasKey(this.profiles, profile);\n }\n /**\n * Checks if the given key or keys are present in the given array of keys.\n * @internal\n * @param keys - The array of keys to check.\n * @param key - The key or keys to check for.\n * @returns True if the key or keys are present in the array of keys.\n */\n hasKey(keys, key) {\n if (!keys || !keys.length || !key) {\n return false;\n }\n if (!Array.isArray(key)) {\n key = [key];\n }\n return key.some((k) => keys.includes(k));\n }\n}\n__decorate([\n observable\n], CurrentUser.prototype, \"permissions\", void 0);\n__decorate([\n observable\n], CurrentUser.prototype, \"profiles\", void 0);\n__decorate([\n observable\n], CurrentUser.prototype, \"username\", void 0);\n","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { observable, volatile } from '@microsoft/fast-element';\nimport { DI } from '@microsoft/fast-foundation';\nimport { BehaviorSubject } from 'rxjs';\nimport { Connect } from '../connect';\nimport { EventMessageType, MessageBuilder, MessageCode, MessageType, } from '../connect/message';\nimport { CredentialManager } from '../credentialManager';\nimport { Session } from '../session';\nimport { CurrentUser } from '../user';\nimport { logger } from '../utils';\nimport { AuthError } from './auth.types';\n/**\n * The default implementation for the Auth interface.\n * @public\n */\nlet DefaultAuth = class DefaultAuth {\n loggedUserResultChanged(_, updated) {\n var _a;\n (_a = this.isLoggedInSubject) === null || _a === void 0 ? void 0 : _a.next(this.isLoggedIn);\n }\n get isLoggedIn$() {\n return this.isLoggedInSubject.asObservable();\n }\n get isLoggedIn() {\n return this.loggedUserResult\n ? !!(this.loggedUserResult.authToken && this.loggedUserResult.sessionId)\n : false;\n }\n constructor(session, connect, messageBuilder, credentialManager) {\n this.session = session;\n this.connect = connect;\n this.messageBuilder = messageBuilder;\n this.credentialManager = credentialManager;\n this.isWorking = false;\n this.isLoggedInSubject = new BehaviorSubject(false);\n }\n login(credentials) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n this.isWorking = true;\n try {\n const loginMessage = this.messageBuilder.createLoginMessage(credentials);\n const authResult = yield this.connect.send(loginMessage);\n if (!authResult || authResult.ERROR || ((_a = authResult.DETAILS) === null || _a === void 0 ? void 0 : _a.ERROR)) {\n throw new AuthError(loginMessage, authResult);\n }\n this.applyAuthResults({\n authToken: authResult.SESSION_AUTH_TOKEN,\n refreshToken: authResult.REFRESH_AUTH_TOKEN,\n profiles: authResult.PROFILE,\n username: authResult.USER_NAME,\n permissions: authResult.PERMISSION,\n sessionId: authResult.SESSION_ID,\n });\n /**\n * Use the credentialManager as a proxy instead?\n */\n this.session.setAuthResult(authResult);\n logger.debug('Login Authentication Result:', authResult);\n }\n catch (err) {\n logger.error('Login Authentication Error:', err);\n if (err instanceof AuthError && err.isIgnorableError()) {\n logger.warn(`Ignoring authentication error as it is a known edge case.`);\n }\n else {\n // this.credentialManager.removeAll(); // < let caller manage for now, discuss later\n this.removeAuthResults();\n throw err;\n }\n }\n finally {\n this.isWorking = false;\n }\n return this.loggedUserResult;\n });\n }\n logout() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n this.isWorking = true;\n let logoutResult = {\n success: false,\n };\n try {\n const logoutMessage = this.messageBuilder.createLogoutMessage(this.loggedUserResult);\n // TODO: Improve auth scenario where server timeout has the same message return as logout\n this.session.deleteUserFromSessionStorage();\n this.connect.setValidSession(false);\n const { CODE, DETAILS, ERROR, MESSAGE_TYPE, OIDC_LOGOUT_URL } = yield this.connect.send(logoutMessage);\n const error = (_a = DETAILS === null || DETAILS === void 0 ? void 0 : DETAILS.ERROR) !== null && _a !== void 0 ? _a : ERROR;\n /**\n * FUI-1109: The server is sending an unexpected logout nack which stops the user from being able to log out.\n */\n const unexpectedLogoutNack = MESSAGE_TYPE === MessageType.LOGOUT_NACK;\n if (unexpectedLogoutNack) {\n logger.warn('Unexpected Logout NACK received during logout.', error);\n }\n logoutResult = {\n success: MESSAGE_TYPE === MessageType.LOGOUT_ACK ||\n CODE === MessageCode.SESSION_NOT_FOUND ||\n unexpectedLogoutNack,\n error,\n };\n // redirect to OIDC provider logout page if provided\n if (OIDC_LOGOUT_URL) {\n window.open(OIDC_LOGOUT_URL, '_self');\n }\n }\n catch (err) {\n const logoutError = new AuthError(err.sentMessage, err.receivedMessage);\n logger.error('Logout Authentication Error:', logoutError);\n if (logoutError.isIgnorableError()) {\n logger.warn(`Ignoring authentication error as it is a known edge case.`);\n logoutResult.success = true;\n }\n else {\n throw err;\n }\n }\n finally {\n this.removeAuthResults();\n this.isWorking = false;\n }\n return logoutResult;\n });\n }\n reAuthFromSession() {\n return __awaiter(this, void 0, void 0, function* () {\n const isConnected = yield this.ensureConnection();\n if (isConnected) {\n const refreshTokenMessage = this.messageBuilder.createRefreshTokenMessage();\n const refreshTokenResult = yield this.connect.send(refreshTokenMessage);\n if ((refreshTokenResult === null || refreshTokenResult === void 0 ? void 0 : refreshTokenResult.MESSAGE_TYPE) === EventMessageType.EVENT_LOGIN_AUTH_ACK) {\n this.session.setAuthResult(refreshTokenResult);\n this.connect.setValidSession(true);\n this.applyAuthResults(this.getLoggedUserFromMessage(refreshTokenResult));\n return true;\n }\n }\n this.session.deleteUserFromSessionStorage();\n this.connect.setValidSession(false);\n return false;\n });\n }\n /**\n * Ensures that the connection is active.\n * @internal\n */\n ensureConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.connect.isConnected) {\n return true;\n }\n const hostUrl = this.session.getSessionStorageItem('hostUrl');\n if (!hostUrl) {\n return false;\n }\n return this.connect.connect(hostUrl);\n });\n }\n /**\n * Gets the logged user from a Message result.\n * @param result - The Message result from auth request.\n * @returns The logged user info or null if the result is invalid.\n */\n getLoggedUserFromMessage(result) {\n const username = result.USER_NAME;\n const sessionAuthToken = result.SESSION_AUTH_TOKEN;\n const refreshAuthToken = result.REFRESH_AUTH_TOKEN;\n if (!username || !sessionAuthToken || !refreshAuthToken) {\n return null;\n }\n return {\n username,\n authToken: sessionAuthToken,\n refreshToken: refreshAuthToken,\n profiles: result.PROFILE,\n permissions: result.PERMISSION,\n sessionId: result.SESSION_ID,\n };\n }\n /**\n * Applies the authentication results to the Auth instance.\n * @internal\n */\n applyAuthResults(result) {\n if (!result) {\n this.removeAuthResults();\n return;\n }\n this.loggedUserResult = {\n authToken: result.authToken,\n refreshToken: result.refreshToken,\n profiles: result.profiles,\n username: result.username,\n permissions: result.permissions,\n sessionId: result.sessionId,\n };\n this.currentUser = new CurrentUser({\n permissions: result.permissions,\n profiles: result.profiles,\n username: result.username,\n });\n }\n /**\n * Removes the authentication results from the Auth instance.\n * @internal\n */\n removeAuthResults() {\n this.loggedUserResult = null;\n this.currentUser = null;\n }\n};\n__decorate([\n observable\n], DefaultAuth.prototype, \"isWorking\", void 0);\n__decorate([\n observable\n], DefaultAuth.prototype, \"currentUser\", void 0);\n__decorate([\n observable\n], DefaultAuth.prototype, \"loggedUserResult\", void 0);\n__decorate([\n volatile\n], DefaultAuth.prototype, \"isLoggedIn\", null);\nDefaultAuth = __decorate([\n __param(0, Session),\n __param(1, Connect),\n __param(2, MessageBuilder),\n __param(3, CredentialManager)\n], DefaultAuth);\nexport { DefaultAuth };\n/**\n * The DI token for the Auth interface.\n * @internal\n */\nexport const Auth = DI.createInterface((x) => x.singleton(DefaultAuth));\n","/**\n * The available ypes of authentication.\n * @public\n */\nexport var AuthType;\n(function (AuthType) {\n AuthType[\"BASIC\"] = \"BASIC\";\n AuthType[\"SSO\"] = \"SSO\";\n AuthType[\"JWT\"] = \"JWT\";\n AuthType[\"REFRESH\"] = \"REFRESH\";\n})(AuthType || (AuthType = {}));\n/**\n * Represents an error that occurs during authentication.\n * @public\n */\nexport class AuthError extends Error {\n constructor(sent, received, message = 'Auth Failed \\n') {\n super(message);\n this.sent = sent;\n this.received = received;\n Object.setPrototypeOf(this, AuthError.prototype);\n }\n // Add known edge cases...\n isIgnorableError() {\n var _a, _b, _c, _d;\n // TODO: This is really ugly, lets figure out if this is still an issue and remove if not\n return (_d = (_c = (_b = (_a = this.received) === null || _a === void 0 ? void 0 : _a.DETAILS) === null || _b === void 0 ? void 0 : _b.ERROR) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes('request needs the user to be logged'); // out or in\n }\n getMessageError() {\n var _a, _b;\n return Array.isArray((_a = this.received) === null || _a === void 0 ? void 0 : _a.ERROR)\n ? (_b = this.received) === null || _b === void 0 ? void 0 : _b.ERROR.map((error) => this.errorDetailFormatter(error)).join('\\n')\n : '';\n }\n getDetailsError() {\n var _a, _b, _c, _d;\n return Array.isArray((_b = (_a = this.received) === null || _a === void 0 ? void 0 : _a.DETAILS) === null || _b === void 0 ? void 0 : _b.ERROR)\n ? (_d = (_c = this.received) === null || _c === void 0 ? void 0 : _c.DETAILS) === null || _d === void 0 ? void 0 : _d.ERROR.map((error) => this.errorDetailFormatter(error)).join('\\n')\n : '';\n }\n hasPasswordExpiredError() {\n return this.hasErrorCode('PASSWORD_EXPIRED');\n }\n hasMFAError() {\n return this.hasErrorCode('MFA_REQUIRED');\n }\n hasErrorCode(code) {\n var _a, _b;\n return Array.isArray((_a = this.received) === null || _a === void 0 ? void 0 : _a.ERROR)\n ? (_b = this.received) === null || _b === void 0 ? void 0 : _b.ERROR.some((error) => error.CODE === code)\n : false;\n }\n errorDetailFormatter(error) {\n return `\\n ${error.CODE}: \\n ${error.TEXT}`;\n }\n}\n","/* eslint-disable import/no-mutable-exports */\n/**\n * The sub-path used for WebSocket connections when API_HOST is not set\n * @public\n * @defaultValue `'gwf'`\n * @remarks Optional.\n * @example\n * If `API_HOST` is not set, `SOCKET_EXT` is set to `/custom` and UI is served on `https://localhost:1234`\n * API host URL will be `wss://localhost:1234/custom`\n */\nlet _SOCKET_EXT = 'gwf';\ntry {\n if (typeof SOCKET_EXT !== 'undefined') {\n _SOCKET_EXT = SOCKET_EXT;\n }\n}\ncatch (_a) { }\nexport { _SOCKET_EXT as SOCKET_EXT };\n/**\n * The path to a JSON config file for the HTTP mode.\n * @remarks Optional.\n * @public\n */\nlet _FORCE_HTTP;\ntry {\n _FORCE_HTTP = FORCE_HTTP;\n}\ncatch (_b) { }\nexport { _FORCE_HTTP as FORCE_HTTP };\nconst PROTOCOL = _FORCE_HTTP === 'true' ? location.protocol : location.protocol.replace('http', 'ws');\n/**\n * The Genesis Server URL (WebSocket or HTTP).\n * @remarks Optional.\n * @defaultValue `${PROTOCOL}//${location.host}/${_SOCKET_EXT}/`\n * @example ws://localhost/gwf/, ws://localhost:9064\n * @public\n */\nlet _API_HOST = `${PROTOCOL}//${location.host}/${_SOCKET_EXT}/`;\ntry {\n if (typeof API_HOST !== 'undefined') {\n _API_HOST = API_HOST;\n }\n}\ncatch (_c) { }\nexport { _API_HOST as API_HOST };\n/**\n * Configuration settings for HTTP, used in http connect flow [`genesislcap-foundation-comms.HttpConnectConfig`](https://link-to-docs).\n * @remarks Optional.\n * @public\n */\nlet _HTTP_CONFIG;\ntry {\n _HTTP_CONFIG = HTTP_CONFIG;\n}\ncatch (_d) { }\nexport { _HTTP_CONFIG as HTTP_CONFIG };\n/**\n * The default Organisation value, used in auth/login flow [`genesislcap-foundation-login`](https://link-to-docs).\n * @remarks Optional.\n * @public\n */\nlet _DEFAULT_ORGANISATION;\ntry {\n _DEFAULT_ORGANISATION = DEFAULT_ORGANISATION;\n}\ncatch (_e) { }\nexport { _DEFAULT_ORGANISATION as DEFAULT_ORGANISATION };\n/**\n * The default Password value, used in auth/login flow [`genesislcap-foundation-login`](https://link-to-docs).\n * @remarks Optional.\n * @public\n */\nlet _DEFAULT_PASSWORD;\ntry {\n _DEFAULT_PASSWORD = DEFAULT_PASSWORD;\n}\ncatch (_f) { }\nexport { _DEFAULT_PASSWORD as DEFAULT_PASSWORD };\n/**\n * The default Username value, used in auth/login flow [`genesislcap-foundation-login`](https://link-to-docs).\n * @remarks Optional.\n * @public\n */\nlet _DEFAULT_USER;\ntry {\n _DEFAULT_USER = DEFAULT_USER;\n}\ncatch (_g) { }\nexport { _DEFAULT_USER as DEFAULT_USER };\n","import { DI } from '@microsoft/fast-foundation';\n/**\n * The default implementation for the MetaCache interface.\n * @public\n */\nexport class DefaultMetaCache {\n constructor() {\n this.cachedMetadata = new Map();\n this.cachedJsonSchema = new Map();\n }\n getMetadataFor(resourceName) {\n return this.cachedMetadata.get(resourceName);\n }\n getJsonSchemaFor(resourceName) {\n return this.cachedJsonSchema.get(resourceName);\n }\n hasMetadataFor(resourceName) {\n return this.cachedMetadata.has(resourceName);\n }\n hasJsonSchemaFor(resourceName) {\n return this.cachedJsonSchema.has(resourceName);\n }\n setMetadataFor(resourceName, metadata) {\n this.cachedMetadata.set(resourceName, metadata);\n }\n setJsonSchemaFor(resourceName, schemaResponse) {\n this.cachedJsonSchema.set(resourceName, schemaResponse);\n }\n}\n/**\n * The DI token for the MetaCache interface.\n * @internal\n */\nexport const MetaCache = DI.createInterface((x) => x.singleton(DefaultMetaCache));\n","/**\n * Regular Expression to test valid WebSocket (wss and ws) hosts\n * @public\n */\nexport const isWebSocketExpression = new RegExp(/wss?:\\/\\/[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\b([-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)\\b\\/*$/, 'i');\n","import { DI } from '@microsoft/fast-foundation';\n/**\n * Configuration options for the Connect (WS) instance.\n * @internal\n */\nexport const ConnectConfig = DI.createInterface();\n/**\n * Configuration options for the Connect (HTTP) instance.\n * @internal\n */\nexport const HttpConnectConfig = DI.createInterface();\n","import { DI } from '@microsoft/fast-foundation';\n/**\n * @internal\n */\nexport const BIG_INT_64_BITS = 64;\n/**\n * Configuration options for the JSONSerializer Config instance.\n * @internal\n */\nexport const JSONSerializerConfig = DI.createInterface();\n","import { __decorate, __param } from \"tslib\";\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport { parse, stringify, isInteger } from 'lossless-json';\nimport { BIG_INT_64_BITS, JSONSerializerConfig } from './json.types';\n/**\n * A Default Number Parser for deserializing objects.\n * @public\n */\nexport function customNumberParser(value) {\n if (Number.isSafeInteger(+value)) {\n return Number(value);\n }\n if (!isInteger(value)) {\n return parseFloat(value);\n }\n return BigInt.asIntN(BIG_INT_64_BITS, value);\n}\n/**\n * A Default JSONSerializer Config for serializing and deserializing functions.\n * @public\n */\nexport const defaultJSONSerializerConfig = {\n parse: (input) => parse(input, null, customNumberParser),\n stringify: (object) => stringify(object),\n};\nlet DefaultJSONSerializer = class DefaultJSONSerializer {\n constructor(config = defaultJSONSerializerConfig) {\n this.config = config;\n /**\n * @inheritDoc JSONSerializer.serialize\n */\n this.serialize = (object) => this.config.stringify(object);\n }\n /**\n * @inheritDoc JSONSerializer.deserialize\n */\n deserialize(input) {\n if (!input) {\n return Promise.resolve({});\n }\n if (typeof input === 'string') {\n return this.config.parse(input);\n }\n if (input && input.ok) {\n return input.text().then((text) => this.config.parse(text));\n }\n if (input && input.data) {\n input = input.data;\n }\n return this.config.parse(input);\n }\n};\nDefaultJSONSerializer = __decorate([\n __param(0, optional(JSONSerializerConfig))\n], DefaultJSONSerializer);\nexport default DefaultJSONSerializer;\n/**\n * A DI token for the JSON serializer.\n * @public\n */\nexport const JSONSerializer = DI.createInterface((x) => x.singleton(DefaultJSONSerializer));\n","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { JSONSerializer } from '@genesislcap/foundation-utils';\nimport { DI } from '@microsoft/fast-foundation';\n/**\n * The default implementation of the Http interface.\n * @public\n */\nlet DefaultHttp = class DefaultHttp {\n constructor(serializer) {\n this.serializer = serializer;\n }\n get(url, requestInit) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield fetch(url, Object.assign(Object.assign({}, requestInit), { method: 'GET' }));\n const serializer = requestInit.serializer || this.serializer;\n return serializer.deserialize(response);\n });\n }\n post(url, requestInit) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield fetch(url, Object.assign(Object.assign({}, requestInit), { method: 'POST' }));\n const serializer = requestInit.serializer || this.serializer;\n return serializer.deserialize(response);\n });\n }\n};\nDefaultHttp = __decorate([\n __param(0, JSONSerializer)\n], DefaultHttp);\nexport { DefaultHttp };\n/**\n * The DI token for the Http interface.\n * @internal\n */\nexport const Http = DI.createInterface((x) => x.singleton(DefaultHttp));\n","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { HTTP_CONFIG, JSONSerializer } from '@genesislcap/foundation-utils';\nimport { observable, volatile } from '@microsoft/fast-element';\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport { BehaviorSubject, concat, finalize, from, interval, switchMap, takeWhile, } from 'rxjs';\nimport { MetaCache } from '../metadata';\nimport { Session } from '../session';\nimport { logger } from '../utils';\nimport { HttpConnectConfig } from './connect.types';\nimport { Http } from './http';\nimport { EventMessageType, MessageBuilder, MessageType, } from './message';\n/**\n * The default configuration for connecting to an HTTP service.\n * @public\n */\nexport const defaultHttpConnectConfig = {\n polling: Object.assign({ POLLING_MAP: {\n EVENT_AMEND_USER: {\n TEMP_FREQUENCY: 500,\n AMOUNT_OF_POLLS: 5,\n QUERIES: ['ALL_USERS'],\n },\n }, POLLING_INTERVAL_MAP: {\n ALL_TRADES: 5000,\n ALL_USERS: 5000,\n ALL_PROCESSES_STATUS: 10000,\n }, POLLING_FREQUENCY: 5000 }, (HTTP_CONFIG && HTTP_CONFIG.length ? JSON.parse(HTTP_CONFIG) : {})),\n};\n/**\n * The default implementation for the Connect interface (HTTP-only).\n * @public\n */\nlet DefaultHttpConnect = class DefaultHttpConnect {\n get isConnected() {\n return this._isConnected;\n }\n set isConnected(value) {\n this._isConnected = value;\n this.isConnectedSubject.next(this._isConnected);\n }\n constructor(http, messageBuilder, session, metaCache, serializer, config = defaultHttpConnectConfig) {\n var _a;\n this.http = http;\n this.messageBuilder = messageBuilder;\n this.session = session;\n this.metaCache = metaCache;\n this.serializer = serializer;\n this.config = config;\n this.isWorking = false;\n this._isConnected = false;\n // TODO: Deprecated\n // private isConnectedSubject = new BehaviorSubject(this._isConnected);\n this.isConnectedSubject = new BehaviorSubject(this._isConnected);\n this.isConnected$ = (_a = this.isConnectedSubject) === null || _a === void 0 ? void 0 : _a.asObservable();\n // keep track of events with temporarily increased polling frequency\n this.ongoingTurbo = {};\n /**\n * A map of active messages in \"polling\" mode.\n * @remarks Equivalent to messaged being streamed in a WebSocket connection.\n * @internal\n */\n this.streams = new Map();\n }\n /**\n * Checks if the host is available by sending a heartbeat ping message and waiting for the response.\n * @internal\n * @returns A Promise that resolves to `true` if the host is available, and `false` otherwise.\n */\n checkHost() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n return this.getMessage({\n MESSAGE_TYPE: MessageType.HEARTBEAT_PING,\n SOURCE_REF: 'host check', // doesn't matter\n }).then((response) => {\n return response.MESSAGE_TYPE === MessageType.HEARTBEAT_PONG;\n });\n }\n catch (e) {\n logger.error(e);\n return false;\n }\n });\n }\n send(message, needsHandling) {\n return this.http.post(DefaultHttpConnect.getUrl(this.host, message), {\n body: DefaultHttpConnect.getBody(message),\n headers: this.messageBuilder.createHTTPHeadersFromMessage(message),\n });\n }\n httpMode() {\n return true;\n }\n setValidSession(valid) {\n logger.warn(`setValidSession() called while in http polling mode.`);\n }\n connect(host) {\n return __awaiter(this, void 0, void 0, function* () {\n this.host = host;\n if (!this.host.endsWith('/')) {\n this.host = this.host.concat('/');\n }\n return this.checkHost().then((connected) => {\n this.isConnected = connected;\n this.session.setSessionStorageItem('hostUrl', this.host);\n return connected;\n });\n });\n }\n disconnect() {\n this.isConnected = false;\n this.streams.clear();\n this.ongoingTurbo = {};\n this.host = undefined;\n }\n snapshot(resourceName, params) {\n return __awaiter(this, void 0, void 0, function* () {\n const snapshotMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);\n logger.debug(`HTTP MODE - ${snapshotMessage.MESSAGE_TYPE} (snapshot) message created -> `, snapshotMessage);\n return this.send(snapshotMessage).then((message) => {\n // snapshot = we only care about the initial payload but since it's a DATASERVER resource (not REQUEST_REPLY) we need to terminate the stream on the server\n this.dataLogoff(snapshotMessage.SOURCE_REF).catch((e) => logger.error(e));\n return message;\n });\n });\n }\n stream(resourceName, onMessage, onError, params) {\n const streamMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);\n logger.debug(`HTTP MODE - ${streamMessage.MESSAGE_TYPE} (stream) message created -> `, streamMessage);\n const SOURCE_REF = streamMessage.SOURCE_REF;\n this.streams.set(SOURCE_REF, {\n SOURCE_REF,\n POLLING_FREQUENCY: new BehaviorSubject(this.config.polling.POLLING_FREQUENCY),\n RESOURCE_NAME: resourceName,\n });\n const interval$ = this.streams.get(SOURCE_REF).POLLING_FREQUENCY;\n const stream = concat(\n // initial DATA_LOGON needs to be a POST\n from(this.send(streamMessage)), \n // subsequent GET requests using the same SOURCE_REF\n interval$\n .pipe(switchMap((ms) => interval(ms)))\n .pipe(switchMap(() => from(this.getMessage(streamMessage))))).pipe(takeWhile(() => this.streams.has(SOURCE_REF)), // ensure it stops emitting once removed\n finalize(() => {\n logger.debug(`Terminating stream for ${resourceName} - ${SOURCE_REF}`);\n this.dataLogoff(SOURCE_REF);\n }));\n this.streams.get(SOURCE_REF).STREAM = stream;\n return stream;\n }\n getMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.http.get(DefaultHttpConnect.getUrl(this.host, message), {\n headers: this.messageBuilder.createHTTPHeadersFromMessage(message),\n });\n });\n }\n getMoreRows(sourceRef) {\n return __awaiter(this, void 0, void 0, function* () {\n const moreRowsMessage = this.messageBuilder.createMoreRowsMessage(sourceRef);\n logger.debug(`HTTP MODE - ${moreRowsMessage.MESSAGE_TYPE} message created -> `, moreRowsMessage);\n return this.send(moreRowsMessage);\n });\n }\n dataLogoff(streamSourceRef) {\n return __awaiter(this, void 0, void 0, function* () {\n const dataLogoffMessage = this.messageBuilder.createDataLogoffMessage(streamSourceRef);\n return this.send(dataLogoffMessage).then((res) => {\n if (this.streams.has(streamSourceRef)) {\n logger.debug(`Removing stream ${streamSourceRef}`);\n this.streams.delete(streamSourceRef);\n }\n return res;\n });\n });\n }\n getMetadata(resourceName, useCache = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const metaRequestMessage = this.messageBuilder.createMetaRequestMessage(resourceName);\n logger.debug(`HTTP MODE - ${metaRequestMessage.MESSAGE_TYPE} (metadata) message created -> `, metaRequestMessage);\n // what was top level payload using websockets is now under DETAILS for some reason\n return this.send(metaRequestMessage).then((res) => res.DETAILS);\n });\n }\n getJSONSchema(resourceName) {\n return __awaiter(this, void 0, void 0, function* () {\n const metaRequestMessage = this.messageBuilder.createMetaRequestMessage(resourceName, EventMessageType.JSON_SCHEMA_REQUEST);\n logger.debug(`HTTP MODE! - ${metaRequestMessage.MESSAGE_TYPE} (json schema) message created -> `, metaRequestMessage);\n return this.send(metaRequestMessage);\n });\n }\n request(resourceName, params) {\n const requestMessage = this.messageBuilder.createRequestMessage(resourceName, params);\n logger.debug(`HTTP MODE! - ${requestMessage.MESSAGE_TYPE} (request server) message created -> `, requestMessage);\n return this.send(requestMessage);\n }\n commitEvent(eventName, params) {\n return __awaiter(this, void 0, void 0, function* () {\n const commitMessage = this.messageBuilder.createCommitMessage(eventName, params);\n logger.debug(`HTTP MODE! - ${commitMessage.MESSAGE_TYPE} (commit) message created -> `, commitMessage);\n return this.send(commitMessage).then((reply) => {\n this.maybeTurbo(eventName, reply);\n return reply;\n });\n });\n }\n maybeTurbo(eventName, message) {\n var _a;\n if (!((_a = message === null || message === void 0 ? void 0 : message.MESSAGE_TYPE) === null || _a === void 0 ? void 0 : _a.endsWith('_ACK')))\n return;\n if (this.ongoingTurbo[eventName]) {\n logger.debug(`${eventName} polling frequency is already accelerated.`);\n return;\n }\n const turbo = this.config.polling.POLLING_MAP[eventName];\n if (!((turbo === null || turbo === void 0 ? void 0 : turbo.TEMP_FREQUENCY) && turbo.AMOUNT_OF_POLLS)) {\n return;\n }\n const freq = turbo.TEMP_FREQUENCY;\n const duration = freq * turbo.AMOUNT_OF_POLLS;\n // DEEP COPIES - will be used to override the polling frequency temporarily and then switch back to the original\n const originalPollingIntervalMap = JSON.parse(JSON.stringify(this.config.polling.POLLING_INTERVAL_MAP));\n const tempPollingMap = JSON.parse(JSON.stringify(this.config.polling.POLLING_INTERVAL_MAP));\n for (const q of turbo.QUERIES) {\n tempPollingMap[q] = freq;\n if (!originalPollingIntervalMap[q]) {\n originalPollingIntervalMap[q] = this.config.polling.POLLING_FREQUENCY;\n }\n }\n // temporary override starting now\n logger.debug(`${eventName} TRIGGERED -> ENFORCING TURBO | FREQUENCY=${freq}ms DURATION=${duration}`);\n this.ongoingTurbo[eventName] = true;\n this.updateIntervals({\n polling: {\n POLLING_INTERVAL_MAP: tempPollingMap,\n },\n });\n // schedule restoration of the original polling frequency\n setTimeout(() => {\n logger.debug(`RESTORED ORIGINAL POLLING INTERVALS FOR ${eventName}`);\n this.updateIntervals({\n polling: {\n POLLING_INTERVAL_MAP: originalPollingIntervalMap,\n },\n });\n this.ongoingTurbo[eventName] = false;\n }, duration);\n }\n updateIntervals(config) {\n const { POLLING_INTERVAL_MAP } = config.polling;\n if (!POLLING_INTERVAL_MAP)\n return;\n this.config.polling.POLLING_INTERVAL_MAP = POLLING_INTERVAL_MAP;\n this.handlePollingIntervalMapUpdate(POLLING_INTERVAL_MAP);\n }\n handlePollingIntervalMapUpdate(pollingIntervalMap) {\n if (!pollingIntervalMap) {\n return;\n }\n for (const resource in pollingIntervalMap) {\n if (!pollingIntervalMap.hasOwnProperty(resource))\n continue;\n const newFreq = pollingIntervalMap[resource];\n this.config.polling.POLLING_INTERVAL_MAP[resource] = newFreq;\n logger.debug(`Setting polling frequency for ${resource} = ${newFreq}`);\n // could have another map by resource name for better efficiency but likely dealing with negligible number of streams\n [...this.streams.values()]\n .filter((s) => s.RESOURCE_NAME === resource)\n .forEach((s) => { var _a; return (_a = s === null || s === void 0 ? void 0 : s.POLLING_FREQUENCY) === null || _a === void 0 ? void 0 : _a.next(newFreq); });\n }\n }\n static getBody(message) {\n return JSON.stringify(message);\n }\n static getUrl(host, message) {\n const type = message.MESSAGE_TYPE;\n let apiEndpoint = message.MESSAGE_TYPE.replace(/_/g, '-').toLowerCase();\n // for DATA_LOGON we go by resource name\n if (type === EventMessageType.DATA_LOGON) {\n apiEndpoint = message.DETAILS.DATASOURCE_NAME.replace(/_/g, '-').toLowerCase();\n }\n return `${host}${apiEndpoint}`;\n }\n};\n__decorate([\n observable\n], DefaultHttpConnect.prototype, \"host\", void 0);\n__decorate([\n observable\n], DefaultHttpConnect.prototype, \"isWorking\", void 0);\n__decorate([\n observable\n], DefaultHttpConnect.prototype, \"_isConnected\", void 0);\n__decorate([\n volatile\n], DefaultHttpConnect.prototype, \"isConnected\", null);\nDefaultHttpConnect = __decorate([\n __param(0, Http),\n __param(1, MessageBuilder),\n __param(2, Session),\n __param(3, MetaCache),\n __param(4, JSONSerializer),\n __param(5, optional(HttpConnectConfig))\n], DefaultHttpConnect);\nexport { DefaultHttpConnect };\n/**\n * The DI token for the Connect interface (HTTP-only).\n * @internal\n */\nexport const HttpConnect = DI.createInterface((x) => x.singleton(DefaultHttpConnect));\n","import { Observable } from 'rxjs';\nconst DEFAULT_RECONNECT_INTERVAL = 10000;\nconst MAX_RECONNECT_INTERVAL = 60000;\n/**\n * Default number of reconnect attempts\n * @public\n */\nexport const MAX_RECONNECT_ATTEMPTS = 10;\n/**\n * Socket reconnection strategies\n * @public\n */\nexport var SocketReconnectStrategy;\n(function (SocketReconnectStrategy) {\n SocketReconnectStrategy[\"Linear\"] = \"linear\";\n SocketReconnectStrategy[\"Exponential\"] = \"exponential\";\n})(SocketReconnectStrategy || (SocketReconnectStrategy = {}));\n/**\n * Generate reconnect interval based on scheduler\n * @public\n * @param reconnectOptions - {@link SocketReconnectOptions} options\n * @param scheduler - {@link SocketReconnectScheduler} function\n * @returns Observable<number>\n */\nexport const retryInterval = (reconnectOptions, scheduler) => {\n return new Observable((observer) => {\n let count = 0;\n let timeoutId;\n function recursiveTimeout() {\n observer.next(count);\n clearTimeout(timeoutId);\n timeoutId = setTimeout(recursiveTimeout, scheduler(reconnectOptions, count));\n count = count + 1;\n }\n recursiveTimeout();\n return () => {\n clearTimeout(timeoutId);\n };\n });\n};\n/**\n * Expontential Interval scheduler for reconnect\n * @public\n * @param reconnectOptions - {@link SocketReconnectOptions} options\n * @param attempt - number of attempts\n * @returns number of milliseconds that is a power of 2 ^ attempts * baseInterval\n */\nexport const exponentialScheduler = (reconnectOptions, attempts) => {\n const { reconnectInterval = DEFAULT_RECONNECT_INTERVAL } = reconnectOptions;\n const baseInterval = reconnectInterval > MAX_RECONNECT_INTERVAL ? MAX_RECONNECT_INTERVAL : reconnectInterval;\n const attemptsBreakPoint = Math.round(Math.log2(MAX_RECONNECT_INTERVAL / baseInterval));\n return baseInterval * Math.pow(2, (attempts % attemptsBreakPoint));\n};\n/**\n * Linear Interval scheduler for reconnect\n * @public\n * @param reconnectOptions - {@link SocketReconnectOptions} options\n * @returns number of milliseconds specified in reconnectOptions up to @see MAX_RECONNECT_INTERVAL\n */\nexport const linearScheduler = (reconnectOptions) => {\n const { reconnectInterval = DEFAULT_RECONNECT_INTERVAL } = reconnectOptions;\n const baseInterval = reconnectInterval > MAX_RECONNECT_INTERVAL ? MAX_RECONNECT_INTERVAL : reconnectInterval;\n return baseInterval;\n};\n","export class Ticker {\n constructor(interval) {\n this.interval = interval;\n this.workerScript = `\n const startTime = Date.now();\n setInterval(function() {\n self.postMessage(Date.now() - startTime);\n }, ${this.interval});\n `;\n }\n start(tick) {\n this.stop();\n this.runWorker(tick);\n }\n stop() {\n if (this.worker) {\n this.worker.terminate();\n delete this.worker;\n }\n }\n runWorker(tick) {\n if (!this.worker) {\n this.worker = new Worker(URL.createObjectURL(new Blob([this.workerScript], { type: 'text/javascript' })));\n this.worker.onmessage = (message) => tick(message.data);\n }\n }\n}\n","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { UUID } from '@genesislcap/foundation-utils';\nimport { JSONSerializer } from '@genesislcap/foundation-utils';\nimport { observable } from '@microsoft/fast-element';\nimport { DI } from '@microsoft/fast-foundation';\nimport { BehaviorSubject, from, Observable, of, Subject, Subscription, throwError, } from 'rxjs';\nimport { filter, mergeMap, switchMap, takeWhile } from 'rxjs/operators';\nimport { WebSocketSubject } from 'rxjs/webSocket';\nimport { Session } from '../session';\nimport { logger } from '../utils';\nimport { EventMessageType, MessageBuilder, MessageType } from './message';\nimport { exponentialScheduler, linearScheduler, MAX_RECONNECT_ATTEMPTS, retryInterval, SocketReconnectStrategy, } from './reconnectStrategy';\nimport { Ticker } from './ticker';\n/**\n * Subject that wraps a WebSocketSubject and provides a Subject interface for sending and receiving messages.\n * @public\n * @remarks An alias to RxJS Subject.\n */\nexport class SocketSubject extends Subject {\n constructor() {\n super();\n }\n}\n/**\n * Observable that wraps a WebSocketSubject and provides an Observable interface for sending and receiving messages.\n * @public\n * @remarks An alias to RxJS Observable.\n */\nexport class SocketObservable extends Observable {\n constructor(...args) {\n super(...args);\n }\n}\n/**\n * An alias to RxJS Subscription.\n * @public\n */\nexport { Subscription as SocketSubscription };\n/**\n * The Socket message handler definition.\n * @public\n */\nexport class SocketMessageHandler {\n constructor(message, onMessage, onError, isSubscription) {\n this._message = message;\n this._onMessage = onMessage;\n this._onError = onError;\n this._isSubscription = isSubscription;\n }\n /**\n * The message that was sent.\n * @public\n */\n get sentMessage() {\n return this._message;\n }\n /**\n * The handler function for incoming messages.\n * @public\n */\n get onReceivedMessage() {\n return this._onMessage;\n }\n /**\n * The handler function for errors.\n * @public\n */\n get onReceivedError() {\n return this._onError;\n }\n /**\n * Whether the message handler is a subscription.\n * @public\n */\n get isSubscription() {\n return this._isSubscription;\n }\n}\nlet SocketService = class SocketService {\n isConnectedChanged(_, isConnected) {\n this.isConnectedSubject.next(isConnected);\n }\n constructor(messageBuilder, session, serializer, uuid) {\n this.messageBuilder = messageBuilder;\n this.session = session;\n this.serializer = serializer;\n this.uuid = uuid;\n this.defaultInterval = 10000;\n this.secondsMultiplier = 1000;\n this.isConnectedSubject = new BehaviorSubject(false);\n this.isConnected = false;\n this.hasValidSession = false;\n this.heartbeatIsEnabled = true;\n this.heartbeatInterval = this.defaultInterval;\n this.isReconnecting = false;\n this.socketMessages = () => this.wsMessages;\n }\n get heartbeatLoggingIsEnabled() {\n var _a, _b;\n return (_b = (_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.enableHeartbeatLogging) !== null && _b !== void 0 ? _b : false;\n }\n get messageLoggingIsEnabled() {\n var _a, _b;\n return (_b = (_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.enableMessageLogging) !== null && _b !== void 0 ? _b : false;\n }\n connect(host, connectOptions, reconnectOptions) {\n this.url = host;\n this.connectOptions = connectOptions;\n this.reconnectOptions = reconnectOptions;\n return new Promise((resolve) => {\n var _a, _b, _c, _d;\n logger.info(`${this.isReconnecting ? 'Reconnecting' : 'Connecting'} to ${this.url}`);\n const cleanMessages = !this.isReconnecting || !((_a = this.reconnectOptions) === null || _a === void 0 ? void 0 : _a.reconnectStreams);\n if (cleanMessages) {\n this.cleanMessages();\n }\n (_b = this.socketSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();\n this.websocket = new WebSocketSubject({\n url: this.url,\n openObserver: {\n next: () => {\n this.session.setSessionStorageItem('hostUrl', this.url);\n this.isConnected = true;\n this.prepareHeartbeat();\n logger.info(`WebSocket connection is now open`);\n resolve(this.isConnected);\n },\n },\n closeObserver: {\n next: (closeEvent) => {\n this.disconnectedByServer = !closeEvent.wasClean;\n this.isConnected = false;\n if (this.disconnectedByServer) {\n logger.info(`WebSocket connection was closed due an error - Code: ${closeEvent.code} ${closeEvent.reason ? ' | Reason: ' + closeEvent.reason : ''}`);\n }\n resolve(this.isConnected);\n },\n },\n serializer: (object) => this.serializer.serialize(object),\n deserializer: (event) => this.serializer.deserialize(event),\n });\n const onNextMessage = (receivedMessage) => __awaiter(this, void 0, void 0, function* () {\n var _e;\n const responseMessageReceivedLog = `Response Message received for SourceRef: ${receivedMessage.SOURCE_REF} | MessageType: ${receivedMessage.MESSAGE_TYPE}`;\n this.logMessageTypeFlow(receivedMessage.MESSAGE_TYPE, logger.info, responseMessageReceivedLog);\n const { SOURCE_REF, MESSAGE_TYPE } = receivedMessage;\n const messageHandler = this.getMessageHandler(SOURCE_REF, MESSAGE_TYPE);\n if (!messageHandler) {\n if (receivedMessage.MESSAGE_TYPE === MessageType.MSG_NACK && receivedMessage.ERROR) {\n receivedMessage.ERROR.forEach((error) => {\n logger.error(`MessageType: ${receivedMessage.MESSAGE_TYPE} | Error Details:`, error);\n });\n }\n return;\n }\n let nacked = false;\n switch (receivedMessage.MESSAGE_TYPE) {\n case EventMessageType.EVENT_LOGIN_AUTH_ACK: {\n this.hasValidSession = true;\n const systemDetails = receivedMessage.DETAILS;\n // Reconfigures the heartbeat with system details from the login response\n if (systemDetails.HEARTBEAT_INTERVAL_SECS &&\n ((_e = this.connectOptions) === null || _e === void 0 ? void 0 : _e.heartbeatInterval) === undefined) {\n this.heartbeatInterval =\n systemDetails.HEARTBEAT_INTERVAL_SECS * this.secondsMultiplier;\n this.prepareHeartbeat();\n }\n break;\n }\n case MessageType.LOGOUT_ACK: {\n this.hasValidSession = false;\n messageHandler.onReceivedMessage.call(this, receivedMessage);\n this.cleanMessages();\n return;\n }\n case MessageType.LOGON_ACK:\n return;\n case MessageType.LOGOFF_ACK: {\n if (receivedMessage.LOGGED_OUT && this.hasValidSession) {\n const refreshTokenMessage = this.messageBuilder.createRefreshTokenMessage();\n const refreshTokenResult = yield this.send(refreshTokenMessage);\n if (!refreshTokenResult) {\n this.hasValidSession = false;\n }\n else if (refreshTokenResult.MESSAGE_TYPE === EventMessageType.EVENT_LOGIN_AUTH_ACK) {\n this.session.setAuthResult(refreshTokenResult);\n this.wsMessageHandlers.forEach((mh) => {\n if (mh.isSubscription) {\n mh.sentMessage.SESSION_AUTH_TOKEN = refreshTokenResult.SESSION_AUTH_TOKEN;\n this.websocket.next(mh.sentMessage);\n }\n });\n }\n }\n break;\n }\n case MessageType.QUERY_UPDATE: {\n if (!messageHandler.isSubscription) {\n const dataLogoffMessage = this.messageBuilder.createDataLogoffMessage(SOURCE_REF);\n this.send(dataLogoffMessage);\n }\n break;\n }\n case MessageType.MSG_NACK:\n case MessageType.LOGON_NACK: {\n nacked = true;\n break;\n }\n }\n if (nacked) {\n messageHandler.onReceivedError.call(this, {\n receivedMessage,\n sentMessage: messageHandler.sentMessage,\n });\n }\n else {\n messageHandler.onReceivedMessage.call(this, receivedMessage);\n }\n this.wsMessages.next(receivedMessage);\n if (!messageHandler.isSubscription) {\n this.removeMessageHandler(SOURCE_REF);\n }\n });\n const onError = (error) => {\n logger.debug('Error found: ', error);\n this.reconnect();\n };\n const onComplete = () => {\n var _a;\n if (this.disconnectedByServer && ((_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.alwaysOn)) {\n this.reconnect();\n return;\n }\n logger.info('Connection is now closed');\n };\n this.socketSubscription = this.websocket.subscribe((_d = (_c = this.connectOptions) === null || _c === void 0 ? void 0 : _c.connectObserver) !== null && _d !== void 0 ? _d : {\n next: onNextMessage,\n error: onError,\n complete: onComplete,\n });\n });\n }\n prepareHeartbeat() {\n var _a, _b, _c, _d;\n if (this.heartbeatTicker) {\n this.heartbeatTicker.stop();\n }\n const sendHeartbeat = () => __awaiter(this, void 0, void 0, function* () {\n if (!this.isConnected)\n return;\n const ping = {\n MESSAGE_TYPE: MessageType.HEARTBEAT_PING,\n SOURCE_REF: this.uuid.createId(),\n };\n const pong = yield this.send(ping);\n this.heartbeatIsEnabled =\n pong.MESSAGE_TYPE === MessageType.HEARTBEAT_PONG && pong.SOURCE_REF === ping.SOURCE_REF;\n });\n if ((_b = (_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.enableHeartbeat) !== null && _b !== void 0 ? _b : this.heartbeatIsEnabled) {\n const intervalInMillisecocnds = (_d = (_c = this.connectOptions) === null || _c === void 0 ? void 0 : _c.heartbeatInterval) !== null && _d !== void 0 ? _d : this.heartbeatInterval;\n this.heartbeatTicker = new Ticker(intervalInMillisecocnds);\n this.heartbeatTicker.start(() => {\n if (this.websocket && this.isConnected) {\n sendHeartbeat();\n if (this.heartbeatLoggingIsEnabled) {\n logger.debug(`Sending a heartbeat ping every ${intervalInMillisecocnds} ms`);\n }\n }\n });\n }\n }\n reconnect() {\n var _a, _b, _c, _d, _e;\n const notAlwaysOnAndHeartbeating = !((_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.alwaysOn) && ((_b = this.connectOptions) === null || _b === void 0 ? void 0 : _b.enableHeartbeat) === false;\n if (this.isReconnecting || notAlwaysOnAndHeartbeating) {\n return;\n }\n this.isReconnecting = true;\n const scheduler = ((_c = this.reconnectOptions) === null || _c === void 0 ? void 0 : _c.reconnectStrategy) === SocketReconnectStrategy.Exponential\n ? exponentialScheduler\n : linearScheduler;\n const reconnectObservable = this.isConnectedSubject.asObservable().pipe(switchMap((isConnected) => !isConnected\n ? retryInterval(this.reconnectOptions, scheduler).pipe(mergeMap((value) => {\n var _a, _b, _c;\n let attemptsAmount;\n if ((_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.alwaysOn) {\n attemptsAmount = value + 1;\n }\n else {\n attemptsAmount =\n (_c = (_b = this.reconnectOptions) === null || _b === void 0 ? void 0 : _b.reconnectAttempts) !== null && _c !== void 0 ? _c : MAX_RECONNECT_ATTEMPTS;\n }\n if (value < attemptsAmount) {\n return of(value);\n }\n return throwError(() => new Error(`Max reconnect attempts ${attemptsAmount} reached.`));\n }))\n : of(-1)), takeWhile(() => this.websocket && !this.isConnected));\n reconnectObservable.subscribe((_e = (_d = this.reconnectOptions) === null || _d === void 0 ? void 0 : _d.reconnectObserver) !== null && _e !== void 0 ? _e : {\n next: (value) => {\n logger.debug(`Attempt no. ${value + 1} to reconnect`);\n this.websocket.complete();\n this.connect(this.url, this.connectOptions, this.reconnectOptions);\n },\n error: (error) => {\n var _a;\n logger.debug(error);\n (_a = this.socketSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.isReconnecting = false;\n },\n complete: () => {\n logger.info(this.isConnected ? 'Reconnected' : 'Disconnected');\n this.isReconnecting = false;\n this.wsMessageHandlers.forEach((mh) => {\n if (mh.isSubscription) {\n this.websocket.next(mh.sentMessage);\n }\n });\n },\n });\n }\n reset() {\n this.isConnected = false;\n this.websocket && this.websocket.complete();\n this.websocket = null;\n this.cleanMessages();\n }\n cleanMessages() {\n this.wsMessages && this.wsMessages.complete();\n this.wsMessages = new SocketSubject();\n this.wsMessageHandlers = new Map();\n }\n send(message, needsHandling = true) {\n if (!this.isConnected) {\n Promise.reject(new Error('WebSocket connection is closed'));\n return;\n }\n const sendingMessasgeLog = `Sending Message for SourceRef: ${message.SOURCE_REF} | MessageType: ${message.MESSAGE_TYPE}`;\n this.logMessageTypeFlow(message.MESSAGE_TYPE, logger.info, sendingMessasgeLog);\n return new Promise((resolve, reject) => {\n const onMessage = (msg) => {\n resolve(msg);\n };\n const onError = (err) => {\n reject(err);\n };\n if (needsHandling) {\n this.setMessageHandler(message, onMessage, onError);\n }\n this.websocket.next(message);\n });\n }\n sendForStream(message, onMessage, onError) {\n if (!this.isConnected) {\n return throwError(() => new Error('WebSocket connection is closed'));\n }\n if (!this.hasValidSession) {\n return throwError(() => new Error(`WebSocket connection is open but there is no valid/active session, please check your auth flow`));\n }\n const sendingMessageLog = `Sending Message (stream) for SourceRef: ${message.SOURCE_REF} | MessageType: ${message.MESSAGE_TYPE}`;\n this.logMessageTypeFlow(message.MESSAGE_TYPE, logger.info, sendingMessageLog);\n this.setMessageHandler(message, onMessage, onError, true);\n this.websocket.next(message);\n return from(this.wsMessages.pipe(filter((msg) => msg.SOURCE_REF === message.SOURCE_REF)));\n }\n setMessageHandler(message, onMessage, onError, isSubscription = false) {\n const settingMessageHandlerLog = `Setting Message Handler for SourceRef: ${message.SOURCE_REF} | MessageType: ${message.MESSAGE_TYPE}`;\n this.logMessageTypeFlow(message.MESSAGE_TYPE, logger.debug, settingMessageHandlerLog);\n this.wsMessageHandlers.set(message.SOURCE_REF, new SocketMessageHandler(message, onMessage, onError, isSubscription));\n }\n removeMessageHandler(sourceRef) {\n this.wsMessageHandlers.delete(sourceRef);\n }\n getMessageHandler(sourceRef, messageType) {\n const gettingMessageHandlerLog = `Getting Message Handler for SourceRef: ${sourceRef} | MessageType: ${messageType}`;\n this.logMessageTypeFlow(messageType, logger.debug, gettingMessageHandlerLog);\n return this.wsMessageHandlers.get(sourceRef);\n }\n logMessageTypeFlow(messageType, logFunc, logMsg) {\n switch (messageType) {\n case MessageType.HEARTBEAT_PING:\n case MessageType.HEARTBEAT_PONG:\n if (this.heartbeatLoggingIsEnabled) {\n logFunc(logMsg);\n }\n break;\n default:\n if (this.messageLoggingIsEnabled) {\n logFunc(logMsg);\n }\n break;\n }\n }\n};\n__decorate([\n observable\n], SocketService.prototype, \"websocket\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"wsMessages\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"wsMessageHandlers\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"isConnected\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"disconnectedByServer\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"hasValidSession\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"heartbeatIsEnabled\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"isReconnecting\", void 0);\nSocketService = __decorate([\n __param(0, MessageBuilder),\n __param(1, Session),\n __param(2, JSONSerializer),\n __param(3, UUID)\n], SocketService);\n/**\n * The DI token for the Socket interface.\n * @internal\n */\nexport const Socket = DI.createInterface((x) => x.singleton(SocketService));\n","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { FORCE_HTTP } from '@genesislcap/foundation-utils';\nimport { observable, volatile } from '@microsoft/fast-element';\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport { MetaCache } from '../metadata';\nimport { isWebSocketExpression, logger } from '../utils';\nimport { ConnectConfig } from './connect.types';\nimport { HttpConnect } from './http.connect';\nimport { EventMessageType, MessageBuilder } from './message';\nimport { Socket } from './socket';\n/**\n * The default configuration for connecting to a WS service.\n * @public\n */\nexport const defaultConnectConfig = {\n connect: {\n alwaysOn: false,\n enableHeartbeat: true,\n enableHeartbeatLogging: false,\n heartbeatInterval: 10000,\n enableMessageLogging: false,\n },\n reconnect: {\n reconnectAttempts: 10,\n reconnectInterval: 10000,\n reconnectStreams: true,\n },\n};\n/**\n * The default implementation for the Connect interface (WS-only).\n * @public\n */\nlet DefaultConnect = class DefaultConnect {\n get isConnected() {\n return this.socket.isConnected;\n }\n get isConnectedSubject() {\n return this.socket.isConnectedSubject;\n }\n get isConnected$() {\n var _a;\n return (_a = this.socket.isConnectedSubject) === null || _a === void 0 ? void 0 : _a.asObservable();\n }\n constructor(socket, messageBuilder, metaCache, config = defaultConnectConfig) {\n this.socket = socket;\n this.messageBuilder = messageBuilder;\n this.metaCache = metaCache;\n this.config = config;\n this.isWorking = false;\n }\n httpMode() {\n return false;\n }\n setValidSession(valid) {\n this.socket.hasValidSession = valid;\n }\n send(message, needsHandling) {\n return this.socket.send(message, needsHandling);\n }\n connect(host) {\n return __awaiter(this, void 0, void 0, function* () {\n this.socket.reset();\n if (!isWebSocketExpression.test(host)) {\n logger.error(`Specified host (${host}) is not valid WebSocket url. Connection will not proceed.`);\n logger.warn(`Make sure the host url starts with wss:// or ws://`);\n return;\n }\n return this.socket.connect(host, this.config.connect, this.config.reconnect);\n });\n }\n disconnect() {\n this.socket.reset();\n }\n snapshot(resourceName, params) {\n return __awaiter(this, void 0, void 0, function* () {\n const snapshotMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);\n logger.debug(`${snapshotMessage.MESSAGE_TYPE} (snapshot) message created -> `, snapshotMessage);\n return this.socket.send(snapshotMessage);\n });\n }\n stream(resourceName, onMessage, onError, params) {\n const streamMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);\n logger.debug(`${streamMessage.MESSAGE_TYPE} (stream) message created -> `, streamMessage);\n return this.socket.sendForStream(streamMessage, onMessage, onError);\n }\n getMoreRows(sourceRef) {\n return __awaiter(this, void 0, void 0, function* () {\n const moreRowsMessage = this.messageBuilder.createMoreRowsMessage(sourceRef);\n logger.debug(`${moreRowsMessage.MESSAGE_TYPE} message created -> `, moreRowsMessage);\n return this.socket.send(moreRowsMessage, false);\n });\n }\n dataLogoff(streamSourceRef) {\n return __awaiter(this, void 0, void 0, function* () {\n const dataLogoffMessage = this.messageBuilder.createDataLogoffMessage(streamSourceRef);\n logger.debug(`${dataLogoffMessage.MESSAGE_TYPE} message created -> `, dataLogoffMessage);\n return this.socket.send(dataLogoffMessage);\n });\n }\n getMetadata(resourceName, useCache = true) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (useCache) {\n if (this.metaCache.hasMetadataFor(resourceName)) {\n logger.debug(`Cached metadata retrieved for ${resourceName}`);\n return this.metaCache.getMetadataFor(resourceName);\n }\n }\n const metaRequestMessage = this.messageBuilder.createMetaRequestMessage(resourceName);\n logger.debug(`${metaRequestMessage.MESSAGE_TYPE} (metadata) message created -> `, metaRequestMessage);\n let details;\n try {\n this.isWorking = true;\n const metaResponse = yield this.socket.send(metaRequestMessage);\n details = (_a = metaResponse === null || metaResponse === void 0 ? void 0 : metaResponse.DETAILS) !== null && _a !== void 0 ? _a : {};\n if (Object.keys(details).length) {\n this.metaCache.setMetadataFor(resourceName, details);\n }\n }\n catch (e) {\n logger.error(e);\n }\n finally {\n this.isWorking = false;\n }\n return details;\n });\n }\n getJSONSchema(resourceName, useCache = true) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (useCache) {\n if (this.metaCache.hasJsonSchemaFor(resourceName)) {\n logger.debug(`Cached JsonSchema retrieved for ${resourceName}`);\n return this.metaCache.getJsonSchemaFor(resourceName);\n }\n }\n const metaRequestMessage = this.messageBuilder.createMetaRequestMessage(resourceName, EventMessageType.JSON_SCHEMA_REQUEST);\n logger.debug(`${metaRequestMessage.MESSAGE_TYPE} (json schema) message created -> `, metaRequestMessage);\n let jsonSchema;\n try {\n this.isWorking = true;\n jsonSchema = (_a = (yield this.socket.send(metaRequestMessage))) !== null && _a !== void 0 ? _a : {};\n if (Object.keys(jsonSchema).length) {\n this.metaCache.setJsonSchemaFor(resourceName, jsonSchema);\n }\n }\n catch (e) {\n logger.error(e);\n }\n finally {\n this.isWorking = false;\n }\n return jsonSchema;\n });\n }\n request(resourceName, params) {\n const requestMessage = this.messageBuilder.createRequestMessage(resourceName, params);\n logger.debug(`${requestMessage.MESSAGE_TYPE} (request server) message created -> `, requestMessage);\n return this.socket.send(requestMessage);\n }\n commitEvent(eventName, params) {\n return __awaiter(this, void 0, void 0, function* () {\n const commitMessage = this.messageBuilder.createCommitMessage(eventName, params);\n logger.debug(`${commitMessage.MESSAGE_TYPE} (commit) message created -> `, commitMessage);\n return this.socket.send(commitMessage);\n });\n }\n};\n__decorate([\n observable\n], DefaultConnect.prototype, \"isWorking\", void 0);\n__decorate([\n volatile\n], DefaultConnect.prototype, \"isConnected\", null);\nDefaultConnect = __decorate([\n __param(0, Socket),\n __param(1, MessageBuilder),\n __param(2, MetaCache),\n __param(3, optional(ConnectConfig))\n], DefaultConnect);\nexport { DefaultConnect };\nconst useHttpConnect = FORCE_HTTP === 'true' || false;\n/**\n * The DI token for the Connect interface (WS-only).\n * @internal\n */\nexport const WSConnect = DI.createInterface((x) => x.singleton(DefaultConnect));\n/**\n * The DI token for the Connect interface (HTTP | WS).\n * @internal\n */\nexport const Connect = DI.createInterface((x) => useHttpConnect ? x.aliasTo(HttpConnect) : x.aliasTo(WSConnect));\n/**\n * Get Connect from the DI container.\n *\n * @remarks\n * A utility method for host applications that are not using decorators or the DI container.\n *\n * @example\n * ```ts\n * import { getConnect } from '@genesislcap/foundation-comms';\n * import { API_HOST } from '@genesislcap/foundation-utils';\n * ...\n * private connect = getConnect();\n * ...\n * const connected = await this.connect.connect(API_HOST); // < WebSocket url\n * ```\n *\n * @public\n */\nexport function getConnect() {\n return DI.getOrCreateDOMContainer().get(Connect);\n}\n","import { __decorate, __param } from \"tslib\";\nimport { UUID } from '@genesislcap/foundation-utils';\nimport { DI } from '@microsoft/fast-foundation';\nimport { AuthType } from '../auth/auth.types';\nimport { Session } from '../session';\n/**\n * General Message types\n * @public\n */\nexport var MessageType;\n(function (MessageType) {\n MessageType[\"LOGON_ACK\"] = \"LOGON_ACK\";\n MessageType[\"LOGON_NACK\"] = \"LOGON_NACK\";\n MessageType[\"LOGOFF_ACK\"] = \"LOGOFF_ACK\";\n MessageType[\"LOGOFF_NACK\"] = \"LOGOFF_NACK\";\n MessageType[\"HEARTBEAT_PING\"] = \"HEARTBEAT_PING\";\n MessageType[\"HEARTBEAT_PONG\"] = \"HEARTBEAT_PONG\";\n MessageType[\"MORE_ROWS\"] = \"MORE_ROWS\";\n MessageType[\"MSG_ACK\"] = \"MSG_ACK\";\n MessageType[\"MSG_NACK\"] = \"MSG_NACK\";\n MessageType[\"LOGOUT_ACK\"] = \"LOGOUT_ACK\";\n MessageType[\"LOGOUT_NACK\"] = \"LOGOUT_NACK\";\n MessageType[\"QUERY_UPDATE\"] = \"QUERY_UPDATE\";\n})(MessageType || (MessageType = {}));\n/**\n * Event Message types\n * @public\n */\nexport var EventMessageType;\n(function (EventMessageType) {\n EventMessageType[\"EVENT_LOGIN_AUTH\"] = \"EVENT_LOGIN_AUTH\";\n EventMessageType[\"EVENT_LOGIN_AUTH_ACK\"] = \"EVENT_LOGIN_AUTH_ACK\";\n EventMessageType[\"EVENT_LOGIN_AUTH_NACK\"] = \"EVENT_LOGIN_AUTH_NACK\";\n EventMessageType[\"EVENT_LOGOUT\"] = \"EVENT_LOGOUT\";\n EventMessageType[\"DATA_LOGON\"] = \"DATA_LOGON\";\n EventMessageType[\"DATA_LOGOFF\"] = \"DATA_LOGOFF\";\n EventMessageType[\"META_REQUEST\"] = \"META_REQUEST\";\n EventMessageType[\"JSON_SCHEMA_REQUEST\"] = \"JSON_SCHEMA_REQUEST\";\n EventMessageType[\"RESOURCES_REQUEST\"] = \"RESOURCES_REQUEST\";\n EventMessageType[\"EVENT_CHANGE_USER_PASSWORD\"] = \"EVENT_CHANGE_USER_PASSWORD\";\n EventMessageType[\"EVENT_SELF_SERVICE_PASSWORD_RESET\"] = \"EVENT_SELF_SERVICE_PASSWORD_RESET\";\n EventMessageType[\"EVENT_PASSWORD_RESET_ACTION\"] = \"EVENT_PASSWORD_RESET_ACTION\";\n})(EventMessageType || (EventMessageType = {}));\n/**\n * General Message codes\n * @public\n */\nexport var MessageCode;\n(function (MessageCode) {\n MessageCode[\"SESSION_NOT_FOUND\"] = \"SESSION_NOT_FOUND\";\n MessageCode[\"UNKNOWN_MESSAGE_TYPE\"] = \"UNKNOWN_MESSAGE_TYPE\";\n})(MessageCode || (MessageCode = {}));\n/**\n * Check if the provided message contains an error and throw an Error if it does\n * @public\n * @param message - Message to check for errors\n * @returns The message if no errors are present, otherwise throws an Error\n */\nexport const messageOrThrow = (message) => {\n if (message.ERROR) {\n throw new Error(message.ERROR.map((error) => error.TEXT).join());\n }\n return message;\n};\n/**\n * TODO: Abstract out localStorage interaction with shell io stuff\n */\nlet MessageBuilderService = class MessageBuilderService {\n /**\n * UUID will be created in the DI with the App specific requirements.\n * Keeping it encapsulated means messages will always conform.\n */\n constructor(session, uuid) {\n this.session = session;\n this.uuid = uuid;\n }\n createLoginMessage(credentials) {\n let DETAILS;\n switch (credentials.type) {\n case AuthType.BASIC:\n DETAILS = {\n USER_NAME: credentials.username,\n PASSWORD: credentials.password,\n };\n break;\n case AuthType.REFRESH:\n DETAILS = {\n USER_NAME: credentials.username,\n REFRESH_AUTH_TOKEN: credentials.refreshToken,\n MFA_CODE: credentials.mfaToken,\n };\n break;\n case AuthType.SSO:\n DETAILS = {\n SSO_TOKEN: credentials.ssoToken,\n };\n break;\n case AuthType.JWT:\n DETAILS = {\n JWT: credentials.jwt,\n DOMAIN: credentials.domain,\n };\n break;\n }\n return {\n DETAILS,\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_LOGIN_AUTH,\n };\n }\n createLogoutMessage(loginResult) {\n var _a, _b;\n return {\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_LOGOUT,\n SESSION_AUTH_TOKEN: (_a = loginResult.authToken) !== null && _a !== void 0 ? _a : this.session.getSessionStorageItem('authToken'),\n SESSION_ID: (_b = loginResult.sessionId) !== null && _b !== void 0 ? _b : this.session.getSessionStorageItem('sessionId'),\n };\n }\n createDataLogonMessage(resourceName, params) {\n return {\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.DATA_LOGON,\n DETAILS: Object.assign({ DATASOURCE_NAME: resourceName }, params),\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n };\n }\n createDataLogoffMessage(sourceRef) {\n return {\n SOURCE_REF: sourceRef,\n MESSAGE_TYPE: EventMessageType.DATA_LOGOFF,\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n };\n }\n createRequestMessage(resourceName, params) {\n return Object.assign({ SOURCE_REF: this.uuid.createId(), SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'), MESSAGE_TYPE: resourceName.startsWith('REQ_') ? resourceName : `REQ_${resourceName}` }, params);\n }\n createMetaRequestMessage(resourceName, messageType = EventMessageType.META_REQUEST) {\n return {\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: messageType,\n DETAILS: {\n FEATURE: resourceName,\n },\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n };\n }\n createCommitMessage(eventName, params) {\n return Object.assign({ SOURCE_REF: this.uuid.createId(), SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'), MESSAGE_TYPE: eventName }, params);\n }\n createRefreshTokenMessage() {\n return {\n SOURCE_REF: this.uuid.createId(),\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n MESSAGE_TYPE: EventMessageType.EVENT_LOGIN_AUTH,\n DETAILS: {\n REFRESH_AUTH_TOKEN: this.session.getSessionStorageItem('refreshToken'),\n },\n };\n }\n createChangePasswordMessage(username, oldPassword, newPassword) {\n return {\n USER_NAME: username,\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_CHANGE_USER_PASSWORD,\n DETAILS: {\n OLD_PASSWORD: oldPassword,\n NEW_PASSWORD: newPassword,\n },\n };\n }\n createForgotPasswordMessage(username, returnUrl, requester = username) {\n return {\n USER_NAME: requester,\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_SELF_SERVICE_PASSWORD_RESET,\n DETAILS: {\n USER_NAME: username,\n RETURN_URL: returnUrl,\n },\n };\n }\n createForgotPasswordTokenMessage(username, resetToken, newPassword, requester = username) {\n return {\n USER_NAME: requester,\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_PASSWORD_RESET_ACTION,\n DETAILS: {\n USER_NAME: username,\n RESET_TOKEN: resetToken,\n NEW_PASSWORD: newPassword,\n },\n };\n }\n createMoreRowsMessage(sourceRef) {\n return {\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: MessageType.MORE_ROWS,\n DETAILS: {\n SOURCE_REF: sourceRef,\n },\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n };\n }\n createHTTPHeadersFromMessage(message, contentType = 'application/json; charset=UTF-8') {\n const headers = { 'Content-type': contentType };\n if (message.SOURCE_REF) {\n headers['source-ref'] = message.SOURCE_REF;\n headers['SOURCE_REF'] = message.SOURCE_REF;\n }\n if (message.SESSION_AUTH_TOKEN) {\n headers['SESSION-AUTH-TOKEN'] = message.SESSION_AUTH_TOKEN;\n }\n if (message.MESSAGE_TYPE === EventMessageType.EVENT_LOGOUT) {\n headers['SESSION-ID'] = message.SESSION_ID;\n }\n return headers;\n }\n};\nMessageBuilderService = __decorate([\n __param(0, Session),\n __param(1, UUID)\n], MessageBuilderService);\n/**\n * The DI token for the MessageBUilder interface.\n * @internal\n */\nexport const MessageBuilder = DI.createInterface((x) => x.singleton(MessageBuilderService));\n","import { logger } from '../utils';\n/**\n * Data server result filter.\n *\n * @param result - The raw data server result.\n * @param rowId - Row id. Defaults to ROW_REF.\n *\n * @public\n * @remarks\n * Centralised filter logic for row operations.\n */\nexport function dataServerResultFilter(result, rowId = 'ROW_REF') {\n const toRowData = (row) => {\n const tmp = Object.assign(Object.assign({}, row), { [rowId]: row.DETAILS[rowId] });\n delete tmp.DETAILS;\n return tmp;\n };\n const inserts = [];\n const deletes = [];\n const updates = [];\n for (const row of result.ROW) {\n if (!row.DETAILS) {\n continue;\n }\n switch (row.DETAILS.OPERATION) {\n case 'INSERT':\n inserts.push(toRowData(row));\n break;\n case 'MODIFY':\n updates.push(toRowData(row));\n break;\n case 'DELETE':\n deletes.push(toRowData(row));\n break;\n default:\n logger.error(`Unsupported operation type: '${row.DETAILS.OPERATION}'`);\n }\n }\n return { inserts, deletes, updates, SOURCE_REF: result.SOURCE_REF };\n}\n","import { __awaiter, __decorate, __param, __rest } from \"tslib\";\nimport { observable, volatile } from '@microsoft/fast-element';\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport { combineLatest, from, timer } from 'rxjs';\nimport { switchMap, takeWhile } from 'rxjs/operators';\nimport { Auth } from '../auth';\nimport { Connect } from '../connect';\nimport { extractFieldDefinitions, toFieldMetadata } from '../metadata/metadata.utils';\nimport { logger } from '../utils';\nimport { criteriaFiltersToFields } from './criteriaFiltersToFields';\nimport { dataServerResultFilter } from './dataServerResultFilter';\nimport { DatasourceConfig, DatasourceDefaults, ResourceType } from './datasource.types';\n/**\n * The default configuration for the Datasource service.\n * @public\n */\nexport const defaultDatasourceConfig = {\n options: {\n criteria: '',\n isSnapshot: false,\n maxRows: DatasourceDefaults.MAX_ROWS_250,\n maxView: DatasourceDefaults.MAX_VIEW_1000,\n pollingInterval: DatasourceDefaults.REQ_REP_POLLING_INTERVAL_MS,\n movingView: false,\n orderBy: '',\n resourceName: '',\n reverse: false,\n },\n criteriaToFields: criteriaFiltersToFields,\n dataServerResultFilter: dataServerResultFilter,\n};\n/**\n * The default implementation for the Datasource interface.\n * @public\n */\nlet DefaultDatasource = class DefaultDatasource {\n constructor(connect, auth, config = defaultDatasourceConfig) {\n this.connect = connect;\n this.auth = auth;\n this.config = config;\n this.initialized = false;\n this.readOnly = true;\n this.originalFieldDef = [];\n this.requestFields = [];\n this.fieldMetadata = [];\n this.availableIndexes = [];\n }\n validResourceName(resourceName) {\n if (!resourceName)\n return false;\n if (!resourceName.trim().length)\n return false;\n // additional checks? regex? or maybe we can ask the server if it's a valid resource in the future\n return true;\n }\n init(options, fetchMeta = true) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.validResourceName(options === null || options === void 0 ? void 0 : options.resourceName)) {\n return false;\n }\n this.options = Object.assign(Object.assign({}, this.config.options), options);\n if (fetchMeta) {\n logger.debug(`Initializing ${this.options.resourceName} Datasource`);\n const meta = yield this.connect\n .getMetadata(this.options.resourceName)\n .catch((e) => logger.error(`Metadata Fetch failed for ${options.resourceName}:`, e));\n if (!meta) {\n this.deinit();\n return false;\n }\n this.resourceType = meta.TYPE;\n this.availableIndexes = (_a = meta.INDEXES) !== null && _a !== void 0 ? _a : [];\n this.originalFieldDef = extractFieldDefinitions(meta);\n this.fieldMetadata = toFieldMetadata(this.originalFieldDef);\n this.requestFields = meta.REQUEST_FIELD || [];\n logger.debug(`Datasource for ${this.options.resourceName} is ready`);\n }\n if (!this.options.isSnapshot) {\n this._stream = yield this.createStream();\n }\n this.initialized = true;\n return this.initialized;\n });\n }\n deinit() {\n this.initialized = false;\n this.options = undefined;\n this.resourceType = undefined;\n this.availableIndexes = [];\n this.originalFieldDef = [];\n this.fieldMetadata = [];\n this.requestFields = [];\n }\n get stream() {\n return this._stream;\n }\n get params() {\n const params = {\n CRITERIA_MATCH: this.options.criteria,\n FIELDS: this.options.fields,\n MAX_ROWS: this.options.maxRows,\n MAX_VIEW: this.options.maxView,\n MOVING_VIEW: this.options.movingView,\n POLLING_INTERVAL: this.options.pollingInterval,\n DISABLE_POLLING: this.options.disablePolling,\n REQUEST: this.options.request,\n REVERSE: this.options.reverse,\n };\n if (this.options.orderBy) {\n if (this.availableIndexes.findIndex((i) => i.NAME === this.options.orderBy) > -1) {\n params.ORDER_BY = this.options.orderBy;\n }\n else {\n const validIndexes = this.availableIndexes.map((index) => index.NAME);\n logger.warn('Specified [orderBy] index is not valid and will not be used. See https://learn.genesis.global/docs/database/data-types/index-entities/ - Available indexes:', validIndexes);\n }\n }\n logger.debug('Getting configured params:', params);\n return params;\n }\n snapshot() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`Requesting snapshot for ${this.options.resourceName} (${this.resourceType}).`);\n switch (this.resourceType) {\n case ResourceType.DATASERVER:\n return this.connect.snapshot(this.options.resourceName, this.params);\n case ResourceType.REQUEST_SERVER: {\n const _b = this.params, { REQUEST, CRITERIA_MATCH } = _b, DETAILS = __rest(_b, [\"REQUEST\", \"CRITERIA_MATCH\"]);\n const requestFields = Object.assign(Object.assign(Object.assign({}, Object.fromEntries(this.requestFields.map((rf) => [rf.NAME, '*']))), this.params.REQUEST), (((_a = this === null || this === void 0 ? void 0 : this.options) === null || _a === void 0 ? void 0 : _a.criteria) ? this.config.criteriaToFields(this.options.criteria) : {}));\n const reqParams = {\n DETAILS,\n REQUEST: requestFields,\n };\n return this.connect.request(this.options.resourceName, reqParams);\n }\n default:\n throw new Error(`Snapshot not supported for selected resource type: ${this.resourceType}`);\n }\n });\n }\n snapshotFiltered(rowId = 'ROW_REF') {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this.snapshot();\n if (Array.isArray(result)) {\n return result;\n }\n else if (result.REPLY) {\n return result.REPLY;\n }\n else if (result.ROW) {\n return this.config.dataServerResultFilter(result, rowId).inserts;\n }\n });\n }\n createStream() {\n return __awaiter(this, void 0, void 0, function* () {\n if (![ResourceType.DATASERVER, ResourceType.REQUEST_SERVER].includes(this.resourceType)) {\n throw new Error(`Streaming not supported for selected resource type: ${this.resourceType}`);\n }\n if (this.resourceType === ResourceType.DATASERVER) {\n return this.createDataserverStream();\n }\n logger.debug(`Creating fake stream by polling ${this.options.resourceName} REQUEST_SERVER`);\n return this.createReqRepStream();\n });\n }\n createDataserverStream() {\n return __awaiter(this, void 0, void 0, function* () {\n const onMessage = (message) => { };\n const onError = (error) => logger.error(error);\n return this.connect.stream(this.options.resourceName, onMessage, onError, this.params);\n });\n }\n createReqRepStream() {\n return timer(0, this.params.DISABLE_POLLING ? undefined : this.params.POLLING_INTERVAL).pipe(switchMap(() => {\n // Combine the isConnected status with the isLoggedIn status\n return combineLatest([this.connect.isConnected$, this.auth.isLoggedIn$]).pipe(\n // Use takeWhile to continue polling until isConnected becomes false or isLoggedIn becomes false\n takeWhile(() => this.connect.isConnected && this.auth.isLoggedIn), // Use switchMap to get the snapshot data\n switchMap(() => from(this.snapshot())));\n }));\n }\n};\n__decorate([\n observable\n], DefaultDatasource.prototype, \"initialized\", void 0);\n__decorate([\n observable\n], DefaultDatasource.prototype, \"readOnly\", void 0);\n__decorate([\n volatile\n], DefaultDatasource.prototype, \"stream\", null);\nDefaultDatasource = __decorate([\n __param(0, Connect),\n __param(1, Auth),\n __param(2, optional(DatasourceConfig))\n], DefaultDatasource);\nexport { DefaultDatasource };\n/**\n * The DI token for the Datasource interface.\n * @internal\n */\nexport const Datasource = DI.createInterface((x) => x.transient(DefaultDatasource));\n/**\n * Get Datasource from the DI container.\n *\n * @remarks\n * A utility method for host applications that are not using decorators or the DI container.\n *\n * @example\n * ```ts\n * import { FilteredDataServerResult, getDatasource, SocketObservable } from '@genesislcap/foundation-comms';\n * ...\n * private ds = getDatasource();\n * private dsSub: SocketObservable<FilteredDataServerResult>;\n * ...\n * const dsInit = await this.ds.init({\n * criteria: '',\n * isSnapshot: false,\n * resourceName: 'ALL_POSITIONS',\n * reverse: false,\n * maxRows: 250,\n * maxView: 1000,\n * });\n * if (!dsInit) {\n * logger.debug(`Failed to initialise 'ALL_POSITIONS' datasource`);\n * return;\n * }\n * this.dsSub = this.ds.stream.subscribe((result) => { ... });\n * ```\n *\n * @public\n */\nexport function getDatasource() {\n return DI.getOrCreateDOMContainer().get(Datasource);\n}\n","/**\n * Criteria filters to fields.\n *\n * @param filters - Concatenated criteria filters.\n *\n * @public\n * @remarks\n * For filtering REQUEST_SERVER resources. Maps concatenated criteria filters\n * from a grid to a request fields object. Date/datetime groovy expressions will\n * append `_FROM` and `_TO` onto field names appropriately\n *\n * eg: converts\n *\n * ```\n * foo == 'bar' &&\n * asd == 'zxc' &&\n * Expr.containsIgnoreCase(FIELD, 'abc') &&\n * Expr.dateIsToday(DATE) &&\n * Expr.dateTimeIsGreaterEqual(DATETIME, '20231110-03:23') &&\n * Expr.dateTimeIsLessEqual(DATETIME, '20231115-03:23')\n * ```\n *\n * into\n *\n * ```\n * {\n * foo: 'bar',\n * asd: 'zxc',\n * FIELD: '*abc*',\n * DATE_FROM: '20231110-00:00',\n * DATE_TO: '20231111-00:00',\n * DATETIME_FROM: '20231110-03:23',\n * DATETIME_TO: '20231115-03:23',\n * }\n * ```\n */\nexport function criteriaFiltersToFields(filters) {\n const criteria = filters.split('&&').map((s) => s.trim());\n const reqFields = {};\n criteria.forEach((c) => {\n if (c.startsWith('Expr')) {\n switch (c.match(/Expr\\.(\\w+)\\(/)[1]) {\n case 'dateIsToday':\n {\n const fieldNameMatcher = /Expr\\.dateIsToday\\((\\w+)\\)/;\n const [, fieldName] = c.match(fieldNameMatcher);\n const date = new Date();\n reqFields[`${fieldName}_FROM`] = `${date.toISOString().replace(/-/g, '').split('T')[0]}-00:00`;\n date.setDate(date.getDate() + 1);\n reqFields[`${fieldName}_TO`] = `${date.toISOString().replace(/-/g, '').split('T')[0]}-00:00`;\n }\n break;\n case 'dateTimeIsGreaterEqual':\n {\n const fieldNameValueMatcher = /Expr\\.dateTimeIsGreaterEqual\\((\\w+), ?['\"](.+)['\"]\\)/;\n const [, fieldName, value] = c.match(fieldNameValueMatcher);\n reqFields[`${fieldName}_FROM`] = value;\n }\n break;\n case 'dateTimeIsLessEqual':\n {\n const fieldNameValueMatcher = /Expr\\.dateTimeIsLessEqual\\((\\w+), ?['\"](.+)['\"]\\)/;\n const [, fieldName, value] = c.match(fieldNameValueMatcher);\n reqFields[`${fieldName}_TO`] = value;\n }\n break;\n case 'containsIgnoreCase':\n {\n const fieldNameValueMatcher = /Expr\\.containsIgnoreCase\\((\\w+), ?['\"](.+)['\"]\\)/;\n const [, fieldName, value] = c.match(fieldNameValueMatcher);\n reqFields[fieldName] = `*${value}*`;\n }\n break;\n }\n }\n else {\n const key = c.substr(0, c.indexOf('=')).trim().replace(/[\"']/g, '');\n const val = c\n .substr(c.lastIndexOf('=') + 1, c.length)\n .trim()\n .replace(/[\"']/g, '');\n reqFields[key] = val;\n }\n });\n return reqFields;\n}\n","import { DI } from '@microsoft/fast-foundation';\n/**\n * Types of Genesis resources.\n * @public\n */\nexport var ResourceType;\n(function (ResourceType) {\n ResourceType[\"DATASERVER\"] = \"DATASERVER\";\n ResourceType[\"EVENT_HANDLER\"] = \"EVENT_HANDLER\";\n ResourceType[\"REQUEST_SERVER\"] = \"REQUEST_SERVER\";\n})(ResourceType || (ResourceType = {}));\n/**\n * Default values for a DatasourceConfig\n * @public\n */\nexport class DatasourceDefaults {\n}\nDatasourceDefaults.MAX_ROWS_250 = 250;\nDatasourceDefaults.MAX_VIEW_1000 = 1000;\nDatasourceDefaults.REQ_REP_POLLING_INTERVAL_MS = 10000;\nDatasourceDefaults.DATASERVER_ROW_ID = 'ROW_REF';\nDatasourceDefaults.REQUEST_SERVER_ROW_ID = 'RECORD_ID';\n/**\n * The DI token for the DatasourceConfig interface.\n *\n * @privateRemarks\n * Marked as internal to stop api-extractor becoming confused cross-linking tokens with the same name.\n *\n * @internal\n */\nexport const DatasourceConfig = DI.createInterface();\n","/**\n * Normalise criteria.\n *\n * @param criteria - Original concat criteria.\n * @param delimiter - Criteria delimiter.\n * @returns normalized concat criteria.\n *\n * @public\n * @remarks\n * Normalises criteria, as the order of filters should not matter, also gets rid of spaces.\n * @privateRemarks\n * Can we use the criteria builder for this and related criteria stuff within datasources?\n */\nexport function normaliseCriteria(criteria, delimiter = ';') {\n if (!criteria) {\n return criteria;\n }\n return criteria\n .split(delimiter)\n .map((s) => s.trim())\n .sort((a, b) => a.localeCompare(b))\n .join(delimiter);\n}\n","/**\n * Available types for a field metadata.\n * @public\n */\nexport var FieldTypeEnum;\n(function (FieldTypeEnum) {\n FieldTypeEnum[\"STRING\"] = \"STRING\";\n FieldTypeEnum[\"NUMBER\"] = \"NUMBER\";\n FieldTypeEnum[\"BOOLEAN\"] = \"BOOLEAN\";\n FieldTypeEnum[\"ENUM\"] = \"ENUM\";\n FieldTypeEnum[\"DATE\"] = \"DATE\";\n FieldTypeEnum[\"DATETIME\"] = \"DATETIME\";\n FieldTypeEnum[\"CUSTOM\"] = \"CUSTOM\";\n})(FieldTypeEnum || (FieldTypeEnum = {}));\n/**\n * Types map for FieldTypeEnum.\n * @public\n */\nexport const TYPES_MAP = {\n STRING: FieldTypeEnum.STRING,\n ENUM: FieldTypeEnum.ENUM,\n BOOLEAN: FieldTypeEnum.BOOLEAN,\n INT: FieldTypeEnum.NUMBER,\n LONG: FieldTypeEnum.NUMBER,\n DOUBLE: FieldTypeEnum.NUMBER,\n BIGDECIMAL: FieldTypeEnum.NUMBER,\n DATE: FieldTypeEnum.DATE,\n DATETIME: FieldTypeEnum.DATETIME,\n};\n","import { ResourceType } from '../datasource/datasource.types';\nimport { logger } from '../utils';\nimport { FieldTypeEnum, TYPES_MAP } from './metadata.types';\n/**\n * Converts the field definitions to field metadata.\n * @public\n * @param fieldDef - The field definitions.\n * @returns An array of field metadata.\n */\nexport const toFieldMetadata = (fieldDef) => {\n if (!fieldDef)\n return null;\n return fieldDef.map((field) => {\n const meta = {\n name: field.NAME,\n type: TYPES_MAP[field.TYPE] || FieldTypeEnum.STRING,\n };\n if (field.TYPE === FieldTypeEnum.ENUM && field.VALID_VALUES) {\n try {\n meta.enumOptions = Array.isArray(field.VALID_VALUES)\n ? field.VALID_VALUES\n : field.VALID_VALUES.split('|');\n }\n catch (err) {\n logger.error(err);\n meta.enumOptions = [];\n }\n }\n return meta;\n });\n};\n/**\n * Extracts the field definitions from the metadata.\n * @public\n * @param metadata - The metadata object.\n * @returns An array of metadata detail.\n */\nexport const extractFieldDefinitions = (metadata) => {\n const type = metadata === null || metadata === void 0 ? void 0 : metadata.TYPE;\n if (type === ResourceType.DATASERVER) {\n return metadata.FIELD || [];\n }\n if (type === ResourceType.REQUEST_SERVER) {\n return metadata.REPLY_FIELD || [];\n }\n throw new Error(`Unsupported resource type: ${type}`);\n};\n","import { DI } from '@microsoft/fast-foundation';\n/**\n * The default implementation for the Session interface.\n * @public\n */\nexport class DefaultSession {\n constructor() {\n /**\n * The prefix to use for all storage keys.\n * @internal\n */\n this.storageKeyPrefix = '';\n this.returnUrl = this.getSessionStorageItem('returnUrl') || '';\n }\n deleteUserFromSessionStorage() {\n const storageKeys = ['authToken', 'refreshToken', 'sessionId', 'ssoToken'];\n storageKeys.forEach((key) => this.removeSessionStorageItem(key));\n }\n setStorageKeyPrefix(prefix) {\n this.storageKeyPrefix = `${prefix.replace(/\\s/g, '')}/`;\n }\n setAuthResult(result) {\n this.setSessionStorageItem('authToken', result.SESSION_AUTH_TOKEN);\n this.setSessionStorageItem('refreshToken', result.REFRESH_AUTH_TOKEN);\n this.setSessionStorageItem('username', result.USER_NAME);\n this.setSessionStorageItem('sessionId', result.SESSION_ID);\n }\n captureReturnUrl() {\n const { pathname, search, hash } = location;\n /**\n * This block shouldn't be required and might mean there's a code issue elsewhere. Login is obvious a public route,\n * so there would be no need to call captureReturnUrl from a nav contributor when trying to visit it.\n */\n if (pathname === '/login') {\n return;\n }\n const path = `${pathname !== '/' ? pathname : ''}`;\n this.returnUrl = `${path}${search}${hash}`;\n this.setSessionStorageItem('returnUrl', this.returnUrl);\n }\n setItem(key, value, storage) {\n if (storage === 'local') {\n localStorage.setItem(this.storageKeyPrefix + key, value);\n }\n else {\n sessionStorage.setItem(this.storageKeyPrefix + key, value);\n }\n }\n getItem(key, storage) {\n if (storage === 'local')\n return localStorage.getItem(this.storageKeyPrefix + key);\n return sessionStorage.getItem(this.storageKeyPrefix + key);\n }\n removeItem(key, storage) {\n if (storage === 'local') {\n localStorage.removeItem(this.storageKeyPrefix + key);\n }\n else {\n sessionStorage.removeItem(this.storageKeyPrefix + key);\n }\n }\n setLocalStorageItem(key, value) {\n this.setItem(key, value, 'local');\n }\n setSessionStorageItem(key, value) {\n this.setItem(key, value, 'session');\n }\n getLocalStorageItem(key) {\n return this.getItem(key, 'local');\n }\n getSessionStorageItem(key) {\n return this.getItem(key, 'session');\n }\n removeLocalStorageItem(key) {\n this.removeItem(key, 'local');\n }\n removeSessionStorageItem(key) {\n this.removeItem(key, 'session');\n }\n}\n/**\n * The DI token for the Session interface.\n * @internal\n */\nexport const Session = DI.createInterface((x) => x.singleton(DefaultSession));\n","import { createLogger } from '@genesislcap/foundation-logger';\n/**\n * Logger for the foundation-comms package\n * @public\n */\nexport const logger = createLogger('foundation-comms');\n","import { HTMLBindingDirective, } from '@microsoft/fast-element';\n/**\n * A map that associates specific HTML element tags with their corresponding default event names.\n * @public\n */\nexport const defaultEventMap = new Map([\n ['FAST-TEXT-AREA', 'input'],\n ['FAST-TEXT-FIELD', 'input'],\n ['FOUNDATION-TEXT-AREA', 'input'],\n ['FOUNDATION-TEXT-FIELD', 'input'],\n ['INPUT', 'input'],\n ['ZERO-TEXT-FIELD', 'input'],\n]);\nfunction customUpdateTarget(value) {\n if (this['keyAttr']) {\n // FUI-389: set initial state based on keyAttr\n }\n else {\n this.target[this.targetName] = value;\n }\n}\nfunction bind(source, context) {\n if (this['keyAttr']) {\n // overwrite internal update method called by originalBind\n this.updateTarget = customUpdateTarget;\n }\n this.originalBind.call(this, source, context);\n this.target.addEventListener(this.changeEvent, this.changeHandler);\n}\nfunction unbind() {\n this.originalUnbind.call(this);\n this.target.removeEventListener(this.changeEvent, this.changeHandler);\n}\nfunction determineChangeEvent(target, eventName) {\n var _a;\n const tag = target.tagName;\n if (eventName === 'default') {\n return (_a = defaultEventMap.get(tag)) !== null && _a !== void 0 ? _a : 'change';\n }\n return eventName;\n}\nclass SyncDirective extends HTMLBindingDirective {\n constructor(binding, convert, eventName, keyAttr) {\n super(binding);\n this.keyAttr = keyAttr;\n this.conversionType = convert;\n this.eventName = eventName;\n }\n createBehavior(target) {\n const behavior = super.createBehavior(target);\n behavior.originalBind = behavior.bind;\n behavior.originalUnbind = behavior.unbind;\n behavior.keyAttr = this.keyAttr;\n behavior.bind = bind;\n behavior.unbind = unbind;\n behavior.changeEvent = determineChangeEvent(target, this.eventName);\n behavior.changeHandler = () => {\n // for checkbox, which is currently the only component converting to boolean, will have to change if boolean conversion is used anywhere else\n const value = this.conversionType === 'boolean' ? behavior.target.checked : behavior.target.value;\n if (this.keyAttr) {\n const last = behavior.bindingObserver.last;\n const key = behavior.target[this.keyAttr];\n last.propertySource[last.propertyName][key] = this.convert(value);\n }\n else {\n // Wait for an official setValue API\n const last = behavior.bindingObserver.last;\n last.propertySource[last.propertyName] = this.convert(value);\n }\n };\n return behavior;\n }\n convert(value) {\n if (value === undefined || value === null)\n return value;\n switch (this.conversionType) {\n case 'time':\n const msSinceEpoch = new Date(value).getTime();\n return isNaN(msSinceEpoch) ? undefined : msSinceEpoch;\n case 'number':\n return value.length ? Number(value) : undefined; // Number('') returns 0\n case 'string':\n return String(value);\n case 'boolean':\n return Boolean(value);\n default:\n return value;\n }\n }\n}\n/**\n * Creates a synchronization directive that binds a data source to an HTML element,\n * @public\n */\nexport function sync(binding, conversionType = 'string', eventName = 'default', keyAttr) {\n return new SyncDirective(binding, conversionType, eventName, keyAttr);\n}\n","/**\n * Directive that allows supplying an \"else\" template to the traditional {@link https://www.fast.design/docs/api/fast-element.when/#when-function} directive\n *\n * @param binding - The condition to test for rendering.\n * @param trueTemplateOrTemplateBinding - The template or a binding that gets the template to render when the condition is true.\n * @param falseTemplateOrTemplateBinding - The template or a binding that gets the template to render when the condition is false.\n * @public\n */\nexport function whenElse(binding, trueTemplateOrTemplateBinding, falseTemplateOrTemplateBinding) {\n const getTemplate = (template) => typeof template === 'function' ? template : () => template;\n const trueTemplate = getTemplate(trueTemplateOrTemplateBinding);\n const falseTemplate = getTemplate(falseTemplateOrTemplateBinding);\n return (source, context) => binding(source, context) ? trueTemplate(source, context) : falseTemplate(source, context);\n}\n","const isoDateSliceEnd = 10;\n/**\n * Formats [DATE] UNIX Timestamps (without time) to readable strings\n * @public\n */\nexport function formatDateTimestamp(timestamp) {\n if (!timestamp || isNaN(timestamp))\n return null;\n return new Date(timestamp).toISOString().slice(0, isoDateSliceEnd);\n}\nconst isoDateTimeSliceEnd = 19;\n/**\n * Formats [DATETIME] UNIX Timestamps (with time) to readable strings\n * @public\n */\nexport function formatDateTimeTimestamp(timestamp) {\n if (!timestamp || isNaN(timestamp))\n return null;\n return new Date(timestamp).toISOString().slice(0, isoDateTimeSliceEnd).replace('T', ' ');\n}\n/**\n * Formats [DATE|DATETIME] Unix Timestamps to readable strings\n * @public\n * @param timestamp - The UNIX Timestamp.\n * @param withTime - The flag to determine if formatted value should contain 'time' info.\n */\nexport function formatTimestamp(timestamp, withTime) {\n if (withTime) {\n return formatDateTimeTimestamp(timestamp);\n }\n return formatDateTimestamp(timestamp);\n}\n","import { logger } from '../utils/logger';\n/**\n * Inserts a CSS rule into the document by creating a new style element or using an existing one with the specified ID.\n * Returns a function that can be called to remove the rule from the document.\n * @public\n * @param cssRule - The CSS rule to insert.\n * @param styleElementId - The ID of the style element to use or create.\n * @returns A function that removes the rule from the document.\n */\nexport const insertDocumentCSSRule = (cssRule, styleElementId) => {\n var _a;\n let styleElement = document.getElementById(styleElementId);\n if (styleElement) {\n logger.debug(`\n An element with the id of '${styleElementId}' already exists and likely has the css rules applied.\n `);\n return;\n }\n const headElement = (_a = document.head) !== null && _a !== void 0 ? _a : document.getElementsByTagName('head')[0];\n styleElement = document.createElement('style');\n styleElement.id = styleElementId;\n headElement.appendChild(styleElement);\n const styleIndex = styleElement.sheet.insertRule(cssRule);\n return () => {\n if (!styleElement) {\n return;\n }\n styleElement.sheet.deleteRule(styleIndex);\n headElement.removeChild(styleElement);\n };\n};\n/**\n * Inserts a CSS link into the document if it doesn't already exist.\n * @public\n * @param href - The URL of the CSS file to insert.\n */\nexport const insertDocumentLink = (href) => {\n const links = document.head.querySelectorAll('link');\n // Already been injected\n for (const index in links)\n if (links[index].href === href)\n return;\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n document.head.appendChild(link);\n};\n","import { insertDocumentCSSRule } from './dom';\n/**\n * Loads font faces by inserting a style element with the specified font face rules into the document.\n * @param fontFaceRules - The CSS rules for the font faces.\n * @param styleElementId - The ID of the style element to insert into the document.\n * @public\n */\nexport const loadFontFaces = (fontFaceRules, styleElementId) => {\n insertDocumentCSSRule(fontFaceRules, styleElementId);\n};\n/**\n * An enum of possible font styles.\n * @public\n */\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"Italic\"] = \"italic\";\n FontStyle[\"Normal\"] = \"normal\";\n})(FontStyle || (FontStyle = {}));\n/**\n * An enum of possible font weights.\n * @public\n */\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[FontWeight[\"Thin\"] = 100] = \"Thin\";\n FontWeight[FontWeight[\"Light\"] = 300] = \"Light\";\n FontWeight[FontWeight[\"Regular\"] = 400] = \"Regular\";\n FontWeight[FontWeight[\"Medium\"] = 500] = \"Medium\";\n FontWeight[FontWeight[\"Bold\"] = 700] = \"Bold\";\n FontWeight[FontWeight[\"Black\"] = 900] = \"Black\";\n})(FontWeight || (FontWeight = {}));\n/**\n * Generates a CSS mixin for the specified font family, style, and weight.\n * @param family - The font family.\n * @param style - Optional. The font style. Defaults to FontStyle.Normal.\n * @param weight - Optional. The font weight. Defaults to FontWeight.Regular.\n * @returns The generated CSS mixin.\n * @public\n */\nexport const getFontMixin = (family, style = FontStyle.Normal, weight = FontWeight.Regular) => `\n font-family: ${family};\n font-style: ${style};\n font-weight: ${weight};\n`;\n/**\n * An object containing type ramp values.\n * @public\n */\nexport const TypeRampValues = {\n minusOne: -1,\n minusTwo: -2,\n plusOne: 1,\n plusTwo: 2,\n plusThree: 3,\n plusFour: 4,\n plusFive: 5,\n plusSix: 6,\n};\n","import { createLogger } from '@genesislcap/foundation-logger';\nexport const logger = createLogger('foundation-utils');\n","import { __awaiter } from \"tslib\";\nimport { DI } from '@microsoft/fast-foundation';\nimport { v4 as uuidv4 } from 'uuid';\nimport { logger } from '../utils';\n/**\n * A service that implements the UUID interface and provides default UUID generation using the uuidv4 library.\n */\nclass UUIDService {\n /**\n * Constructs a new instance of the UUIDService.\n */\n constructor() { }\n /**\n * Generates a new UUID.\n * @param withLogging - Optional. Whether to log the generated UUID to the console. Defaults to false.\n * @returns The generated UUID.\n */\n createId(withLogging = false) {\n /**\n * Use this.config to customize uuidv4.\n */\n const id = uuidv4();\n withLogging && logger.debug(`UUID.createID ${id}`);\n return id;\n }\n /**\n * Generates a new UUID for a remote object.\n * @param withLogging - Optional. Whether to log the generated UUID to the console. Defaults to false.\n * @returns A promise that resolves to the generated UUID.\n */\n createRemoteId(withLogging = false) {\n return __awaiter(this, void 0, void 0, function* () {\n /**\n * TODO: Revisit async nature of id generation with potential server involvement\n * Use this.config to customize uuidv4.\n */\n const id = uuidv4();\n withLogging && logger.debug(`UUID.createRemoteID ${id}`);\n return id;\n });\n }\n}\n/**\n * A dependency injection token for the UUID interface.\n * @public\n */\nexport const UUID = DI.createInterface((x) => x.singleton(UUIDService));\n"],"names":["CredentialManagerConfig","DI","supportsCredentialsContainer","navigator","credentials","window","logger","credentialSeparator","extractParts","input","separator","limit","split","map","opt","trim","filter","includesSeparator","value","includes","countSeparators","match","RegExp","length","prioritizeSeparatorInputs","inputs","find","createId","name","organisation","migrationFailedLogger","subtext","defaultCredentialRequestOptions","password","mediation","defaultCredentialManagerConfig","cookie","path","expires","storePasswords","DefaultCredentialManager","constructor","session","config","this","createBasicCredentials","type","username","createRefreshCredentials","_a","_b","_c","getUsername","refreshToken","getRefreshToken","mfaToken","getMFAToken","createSSOCredentials","ssoToken","getSSOToken","validateBasicCredentials","validateRefreshCredentials","validateSSOCredentials","validateUserCredentialData","data","ensurePassword","baseResult","id","normaliseLegacyCredentialData","legacyData","_","err","legacyCookie","undefined","storeCredentialsInContainer","__awaiter","PasswordCredential","store","getCredentialsFromContainer","options","get","storeCredentialsInCookie","rest","__rest","JSON","stringify","domain","location","hostname","secure","getCredentialsFromCookie","parse","storeCredentials","credential","Promise","resolve","getCredentials","getSessionStorageItem","removeCookie","removeSSOToken","removeSessionStorageItem","removeUsername","removeRefreshToken","removeMFAToken","removeAll","preventSilentAccess","__decorate","__param","optional","CredentialManager","x","singleton","CurrentUser","Object","assign","hasAdminProfile","hasProfile","hasPermission","permission","hasKey","permissions","profile","profiles","keys","key","Array","isArray","some","k","observable","prototype","DefaultAuth","loggedUserResultChanged","updated","isLoggedInSubject","next","isLoggedIn","isLoggedIn$","asObservable","loggedUserResult","authToken","sessionId","connect","messageBuilder","credentialManager","isWorking","BehaviorSubject","login","loginMessage","createLoginMessage","authResult","send","ERROR","DETAILS","applyAuthResults","SESSION_AUTH_TOKEN","REFRESH_AUTH_TOKEN","PROFILE","USER_NAME","PERMISSION","SESSION_ID","setAuthResult","isIgnorableError","removeAuthResults","logout","logoutResult","success","logoutMessage","createLogoutMessage","deleteUserFromSessionStorage","setValidSession","CODE","MESSAGE_TYPE","OIDC_LOGOUT_URL","error","unexpectedLogoutNack","open","logoutError","sentMessage","receivedMessage","reAuthFromSession","ensureConnection","refreshTokenMessage","createRefreshTokenMessage","refreshTokenResult","getLoggedUserFromMessage","isConnected","hostUrl","result","sessionAuthToken","refreshAuthToken","currentUser","volatile","Auth","AuthType","AuthError","Error","sent","received","message","super","setPrototypeOf","_d","toLowerCase","getMessageError","errorDetailFormatter","join","getDetailsError","hasPasswordExpiredError","hasErrorCode","hasMFAError","code","TEXT","_FORCE_HTTP","_SOCKET_EXT","SOCKET_EXT","FORCE_HTTP","protocol","replace","_HTTP_CONFIG","_DEFAULT_ORGANISATION","_DEFAULT_PASSWORD","_DEFAULT_USER","_API_HOST","API_HOST","DEFAULT_ORGANISATION","_e","DEFAULT_PASSWORD","_f","DEFAULT_USER","_g","DefaultMetaCache","cachedMetadata","Map","cachedJsonSchema","getMetadataFor","resourceName","getJsonSchemaFor","hasMetadataFor","has","hasJsonSchemaFor","setMetadataFor","metadata","set","setJsonSchemaFor","schemaResponse","MetaCache","isWebSocketExpression","ConnectConfig","HttpConnectConfig","JSONSerializerConfig","customNumberParser","Number","isSafeInteger","BigInt","asIntN","parseFloat","defaultJSONSerializerConfig","object","DefaultJSONSerializer","serialize","deserialize","ok","text","then","JSONSerializer","DefaultHttp","serializer","url","requestInit","response","fetch","method","post","Http","defaultHttpConnectConfig","polling","POLLING_MAP","EVENT_AMEND_USER","TEMP_FREQUENCY","AMOUNT_OF_POLLS","QUERIES","POLLING_INTERVAL_MAP","ALL_TRADES","ALL_USERS","ALL_PROCESSES_STATUS","POLLING_FREQUENCY","DefaultHttpConnect","_isConnected","isConnectedSubject","http","metaCache","isConnected$","ongoingTurbo","streams","checkHost","getMessage","SOURCE_REF","e","needsHandling","getUrl","host","body","getBody","headers","createHTTPHeadersFromMessage","httpMode","valid","endsWith","concat","connected","setSessionStorageItem","disconnect","clear","snapshot","params","snapshotMessage","createDataLogonMessage","dataLogoff","catch","stream","onMessage","onError","streamMessage","RESOURCE_NAME","interval$","from","pipe","switchMap","ms","interval","takeWhile","finalize","STREAM","getMoreRows","sourceRef","moreRowsMessage","createMoreRowsMessage","streamSourceRef","dataLogoffMessage","createDataLogoffMessage","res","delete","getMetadata","useCache","metaRequestMessage","createMetaRequestMessage","getJSONSchema","request","requestMessage","createRequestMessage","commitEvent","eventName","commitMessage","createCommitMessage","reply","maybeTurbo","turbo","freq","duration","originalPollingIntervalMap","tempPollingMap","q","updateIntervals","setTimeout","handlePollingIntervalMapUpdate","pollingIntervalMap","resource","hasOwnProperty","newFreq","values","s","forEach","static","apiEndpoint","DATASOURCE_NAME","HttpConnect","DEFAULT_RECONNECT_INTERVAL","MAX_RECONNECT_INTERVAL","SocketReconnectStrategy","exponentialScheduler","reconnectOptions","attempts","reconnectInterval","baseInterval","attemptsBreakPoint","Math","round","log2","pow","linearScheduler","Ticker","workerScript","start","tick","stop","runWorker","worker","terminate","Worker","URL","createObjectURL","Blob","onmessage","SocketSubject","Subject","SocketMessageHandler","isSubscription","_message","_onMessage","_onError","_isSubscription","onReceivedMessage","onReceivedError","SocketService","isConnectedChanged","uuid","defaultInterval","secondsMultiplier","hasValidSession","heartbeatIsEnabled","heartbeatInterval","isReconnecting","socketMessages","wsMessages","heartbeatLoggingIsEnabled","connectOptions","enableHeartbeatLogging","messageLoggingIsEnabled","enableMessageLogging","reconnectStreams","cleanMessages","socketSubscription","unsubscribe","websocket","WebSocketSubject","openObserver","prepareHeartbeat","closeObserver","closeEvent","disconnectedByServer","wasClean","reason","deserializer","event","subscribe","connectObserver","responseMessageReceivedLog","logMessageTypeFlow","messageHandler","getMessageHandler","nacked","systemDetails","HEARTBEAT_INTERVAL_SECS","call","LOGGED_OUT","wsMessageHandlers","mh","removeMessageHandler","reconnect","complete","alwaysOn","heartbeatTicker","sendHeartbeat","ping","pong","enableHeartbeat","intervalInMillisecocnds","notAlwaysOnAndHeartbeating","scheduler","reconnectStrategy","Exponential","reconnectObservable","of","observer","timeoutId","count","recursiveTimeout","clearTimeout","retryInterval","mergeMap","attemptsAmount","reconnectAttempts","throwError","reconnectObserver","reset","reject","sendingMessasgeLog","msg","setMessageHandler","sendForStream","sendingMessageLog","settingMessageHandlerLog","messageType","gettingMessageHandlerLog","logFunc","logMsg","Socket","defaultConnectConfig","DefaultConnect","socket","test","details","metaResponse","jsonSchema","useHttpConnect","WSConnect","Connect","aliasTo","MessageType","EventMessageType","MessageCode","MessageBuilderService","PASSWORD","MFA_CODE","SSO_TOKEN","JWT","jwt","DOMAIN","EVENT_LOGIN_AUTH","loginResult","EVENT_LOGOUT","DATA_LOGON","DATA_LOGOFF","startsWith","META_REQUEST","FEATURE","createChangePasswordMessage","oldPassword","newPassword","EVENT_CHANGE_USER_PASSWORD","OLD_PASSWORD","NEW_PASSWORD","createForgotPasswordMessage","returnUrl","requester","EVENT_SELF_SERVICE_PASSWORD_RESET","RETURN_URL","createForgotPasswordTokenMessage","resetToken","EVENT_PASSWORD_RESET_ACTION","RESET_TOKEN","MORE_ROWS","contentType","MessageBuilder","dataServerResultFilter","rowId","toRowData","row","tmp","inserts","deletes","updates","ROW","OPERATION","push","defaultDatasourceConfig","criteria","isSnapshot","maxRows","maxView","pollingInterval","movingView","orderBy","reverse","criteriaToFields","filters","reqFields","c","fieldNameMatcher","fieldName","date","Date","toISOString","setDate","getDate","fieldNameValueMatcher","substr","indexOf","val","lastIndexOf","DefaultDatasource","auth","initialized","readOnly","originalFieldDef","requestFields","fieldMetadata","availableIndexes","validResourceName","init","fetchMeta","meta","deinit","resourceType","TYPE","INDEXES","REQUEST_FIELD","_stream","createStream","CRITERIA_MATCH","FIELDS","fields","MAX_ROWS","MAX_VIEW","MOVING_VIEW","POLLING_INTERVAL","DISABLE_POLLING","disablePolling","REQUEST","REVERSE","findIndex","i","NAME","ORDER_BY","validIndexes","index","reqParams","fromEntries","rf","snapshotFiltered","REPLY","createDataserverStream","createReqRepStream","timer","combineLatest","Datasource","transient","ResourceType","DatasourceDefaults","MAX_ROWS_250","MAX_VIEW_1000","REQ_REP_POLLING_INTERVAL_MS","DATASERVER_ROW_ID","REQUEST_SERVER_ROW_ID","DatasourceConfig","normaliseCriteria","delimiter","sort","a","b","localeCompare","FieldTypeEnum","TYPES_MAP","STRING","ENUM","BOOLEAN","INT","NUMBER","LONG","DOUBLE","BIGDECIMAL","DATE","DATETIME","toFieldMetadata","fieldDef","field","VALID_VALUES","enumOptions","extractFieldDefinitions","FIELD","REPLY_FIELD","DefaultSession","storageKeyPrefix","setStorageKeyPrefix","prefix","captureReturnUrl","pathname","search","hash","setItem","storage","localStorage","sessionStorage","getItem","removeItem","setLocalStorageItem","getLocalStorageItem","removeLocalStorageItem","Session","createLogger","defaultEventMap","customUpdateTarget","target","targetName","bind","source","context","updateTarget","originalBind","addEventListener","changeEvent","changeHandler","unbind","originalUnbind","removeEventListener","SyncDirective","HTMLBindingDirective","binding","convert","keyAttr","conversionType","createBehavior","behavior","tag","tagName","determineChangeEvent","checked","last","bindingObserver","propertySource","propertyName","msSinceEpoch","getTime","isNaN","String","Boolean","sync","whenElse","trueTemplateOrTemplateBinding","falseTemplateOrTemplateBinding","getTemplate","template","trueTemplate","falseTemplate","isoDateSliceEnd","formatDateTimestamp","timestamp","slice","isoDateTimeSliceEnd","formatDateTimeTimestamp","insertDocumentCSSRule","cssRule","styleElementId","styleElement","document","getElementById","headElement","head","getElementsByTagName","createElement","appendChild","styleIndex","sheet","insertRule","deleteRule","removeChild","loadFontFaces","fontFaceRules","FontStyle","FontWeight","getFontMixin","family","style","Normal","weight","Regular","TypeRampValues","minusOne","minusTwo","plusOne","plusTwo","plusThree","plusFour","plusFive","plusSix","UUIDService","withLogging","createRemoteId","UUID"],"sourceRoot":""}
|