@diia-inhouse/test 6.4.0 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/LICENCE.md +59 -59
  2. package/dist/dbUtilsBuilder.js +116 -0
  3. package/dist/dbUtilsBuilder.js.map +1 -0
  4. package/dist/documentsGenerator.js.map +1 -1
  5. package/dist/index.js +3 -5
  6. package/dist/index.js.map +1 -1
  7. package/dist/interfaces/documents/foreignPassport.js.map +1 -1
  8. package/dist/interfaces/documents/index.js.map +1 -1
  9. package/dist/publicServiceGenerator.js +3 -5
  10. package/dist/publicServiceGenerator.js.map +1 -1
  11. package/dist/sessionGenerator.js +7 -24
  12. package/dist/sessionGenerator.js.map +1 -1
  13. package/dist/stubs/documents/foreignPassport.js +17 -2
  14. package/dist/stubs/documents/foreignPassport.js.map +1 -1
  15. package/dist/stubs/documents/index.js +2 -2
  16. package/dist/stubs/documents/index.js.map +1 -1
  17. package/dist/stubs/documents/internalPassport.js +19 -4
  18. package/dist/stubs/documents/internalPassport.js.map +1 -1
  19. package/dist/types/dbUtilsBuilder.d.ts +29 -0
  20. package/dist/types/index.d.ts +1 -1
  21. package/dist/types/interfaces/documents/foreignPassport.d.ts +2 -1
  22. package/dist/types/interfaces/documents/index.d.ts +15 -0
  23. package/dist/types/interfaces/documents/internalPassport.d.ts +2 -1
  24. package/dist/types/publicServiceGenerator.d.ts +1 -1
  25. package/dist/types/sessionGenerator.d.ts +4 -5
  26. package/package.json +35 -39
  27. package/vitest/extend-expect.ts +25 -0
  28. package/vitest/interfaces/index.ts +8 -0
  29. package/vitest/matchers/designSystem/atoms/amountAtm.ts +13 -0
  30. package/vitest/matchers/designSystem/atoms/articlePicAtm.ts +12 -0
  31. package/vitest/matchers/designSystem/atoms/badgeCounterAtm.ts +11 -0
  32. package/vitest/matchers/designSystem/atoms/btnLinkAtm.ts +16 -0
  33. package/vitest/matchers/designSystem/atoms/btnLoadPlainIconAtm.ts +19 -0
  34. package/vitest/matchers/designSystem/atoms/btnPlainAtm.ts +16 -0
  35. package/vitest/matchers/designSystem/atoms/btnPlainIconAtm.ts +18 -0
  36. package/vitest/matchers/designSystem/atoms/btnPrimaryAdditionalAtm.ts +16 -0
  37. package/vitest/matchers/designSystem/atoms/btnPrimaryDefaultAtm.ts +17 -0
  38. package/vitest/matchers/designSystem/atoms/btnPrimaryLargeAtm.ts +16 -0
  39. package/vitest/matchers/designSystem/atoms/btnPrimaryWideAtm.ts +16 -0
  40. package/vitest/matchers/designSystem/atoms/btnSemiLightAtm.ts +16 -0
  41. package/vitest/matchers/designSystem/atoms/btnStrokeAdditionalAtm.ts +16 -0
  42. package/vitest/matchers/designSystem/atoms/btnStrokeDefaultAtm.ts +16 -0
  43. package/vitest/matchers/designSystem/atoms/btnWhiteAdditionalIconAtm.ts +20 -0
  44. package/vitest/matchers/designSystem/atoms/calendarItemAtm.ts +14 -0
  45. package/vitest/matchers/designSystem/atoms/chipStatusAtm.ts +14 -0
  46. package/vitest/matchers/designSystem/atoms/dotNavigationAtm.ts +11 -0
  47. package/vitest/matchers/designSystem/atoms/doubleIconAtm.ts +15 -0
  48. package/vitest/matchers/designSystem/atoms/greyTitleAtm.ts +12 -0
  49. package/vitest/matchers/designSystem/atoms/iconAtm.ts +12 -0
  50. package/vitest/matchers/designSystem/atoms/index.ts +65 -0
  51. package/vitest/matchers/designSystem/atoms/inputNumberLargeAtm.ts +15 -0
  52. package/vitest/matchers/designSystem/atoms/largeIconAtm.ts +16 -0
  53. package/vitest/matchers/designSystem/atoms/playerBtnAtm.ts +12 -0
  54. package/vitest/matchers/designSystem/atoms/sectionTitleAtm.ts +11 -0
  55. package/vitest/matchers/designSystem/atoms/shared/buttonAction.ts +15 -0
  56. package/vitest/matchers/designSystem/atoms/shared/iconAction.ts +13 -0
  57. package/vitest/matchers/designSystem/atoms/simpleIconAtm.ts +12 -0
  58. package/vitest/matchers/designSystem/atoms/smallIconAtm.ts +16 -0
  59. package/vitest/matchers/designSystem/atoms/textParameterAtm.ts +19 -0
  60. package/vitest/matchers/designSystem/atoms/tickerAtm.ts +20 -0
  61. package/vitest/matchers/designSystem/atoms/userPictureAtm.ts +14 -0
  62. package/vitest/matchers/designSystem/atoms/validationAtm.ts +13 -0
  63. package/vitest/matchers/designSystem/enums/button.ts +5 -0
  64. package/vitest/matchers/designSystem/enums/icon.ts +5 -0
  65. package/vitest/matchers/designSystem/index.ts +7 -0
  66. package/vitest/matchers/designSystem/molecules/articleVideoMlc.ts +13 -0
  67. package/vitest/matchers/designSystem/molecules/attentionIconMessageMlc.ts +15 -0
  68. package/vitest/matchers/designSystem/molecules/attentionMessageMlc.ts +18 -0
  69. package/vitest/matchers/designSystem/molecules/barCodeMlc.ts +12 -0
  70. package/vitest/matchers/designSystem/molecules/blackCardMlc.ts +20 -0
  71. package/vitest/matchers/designSystem/molecules/btnIconPlainGroupMlc.ts +17 -0
  72. package/vitest/matchers/designSystem/molecules/btnIconRoundedMlc.ts +15 -0
  73. package/vitest/matchers/designSystem/molecules/btnLoadIconPlainGroupMlc.ts +17 -0
  74. package/vitest/matchers/designSystem/molecules/btnToggleMlc.ts +26 -0
  75. package/vitest/matchers/designSystem/molecules/cardMlc.ts +33 -0
  76. package/vitest/matchers/designSystem/molecules/cardMlcTicker.ts +12 -0
  77. package/vitest/matchers/designSystem/molecules/checkIconMlc.ts +13 -0
  78. package/vitest/matchers/designSystem/molecules/checkboxRoundMlc.ts +11 -0
  79. package/vitest/matchers/designSystem/molecules/checkboxSquareMlc.ts +22 -0
  80. package/vitest/matchers/designSystem/molecules/chipMlc.ts +22 -0
  81. package/vitest/matchers/designSystem/molecules/chipTimeMlc.ts +15 -0
  82. package/vitest/matchers/designSystem/molecules/currentTimeMlc.ts +20 -0
  83. package/vitest/matchers/designSystem/molecules/dashboardCardMlc.ts +23 -0
  84. package/vitest/matchers/designSystem/molecules/docNumberCopyMlc.ts +15 -0
  85. package/vitest/matchers/designSystem/molecules/docNumberCopyWhiteMlc.ts +14 -0
  86. package/vitest/matchers/designSystem/molecules/docTableItemHorizontalLongerMlc.ts +18 -0
  87. package/vitest/matchers/designSystem/molecules/docTableItemHorizontalMlc.ts +19 -0
  88. package/vitest/matchers/designSystem/molecules/halvedCardMlc.ts +21 -0
  89. package/vitest/matchers/designSystem/molecules/headingWithSubtitleWhiteMlc.ts +12 -0
  90. package/vitest/matchers/designSystem/molecules/headingWithSubtitlesMlc.ts +13 -0
  91. package/vitest/matchers/designSystem/molecules/iconCardMlc.ts +15 -0
  92. package/vitest/matchers/designSystem/molecules/imageCardMlc.ts +21 -0
  93. package/vitest/matchers/designSystem/molecules/index.ts +121 -0
  94. package/vitest/matchers/designSystem/molecules/inputDateMlc.ts +19 -0
  95. package/vitest/matchers/designSystem/molecules/inputNumberFractionalMlc.ts +21 -0
  96. package/vitest/matchers/designSystem/molecules/inputNumberLargeMlc.ts +17 -0
  97. package/vitest/matchers/designSystem/molecules/inputNumberMlc.ts +20 -0
  98. package/vitest/matchers/designSystem/molecules/inputTextMlc.ts +21 -0
  99. package/vitest/matchers/designSystem/molecules/inputTextMultilineMlc.ts +21 -0
  100. package/vitest/matchers/designSystem/molecules/listItemMlc.ts +32 -0
  101. package/vitest/matchers/designSystem/molecules/listWidgetItemMlc.ts +24 -0
  102. package/vitest/matchers/designSystem/molecules/navigationPanelMlc.ts +49 -0
  103. package/vitest/matchers/designSystem/molecules/qrCodeMlc.ts +12 -0
  104. package/vitest/matchers/designSystem/molecules/radioBtnMlc.ts +28 -0
  105. package/vitest/matchers/designSystem/molecules/searchInputMlc.ts +19 -0
  106. package/vitest/matchers/designSystem/molecules/smallEmojiPanelMlc.ts +13 -0
  107. package/vitest/matchers/designSystem/molecules/smallEmojiPanelPlaneMlc.ts +13 -0
  108. package/vitest/matchers/designSystem/molecules/smallNotificationMlc.ts +20 -0
  109. package/vitest/matchers/designSystem/molecules/stackMlc.ts +13 -0
  110. package/vitest/matchers/designSystem/molecules/statusMessageMlc.ts +16 -0
  111. package/vitest/matchers/designSystem/molecules/stubMessageMlc.ts +18 -0
  112. package/vitest/matchers/designSystem/molecules/subtitleLabelMlc.ts +14 -0
  113. package/vitest/matchers/designSystem/molecules/tableItemHorizontalLargeMlc.ts +22 -0
  114. package/vitest/matchers/designSystem/molecules/tableItemHorizontalMlc.ts +19 -0
  115. package/vitest/matchers/designSystem/molecules/tableItemMlc.ts +23 -0
  116. package/vitest/matchers/designSystem/molecules/tableItemPrimaryMlc.ts +15 -0
  117. package/vitest/matchers/designSystem/molecules/tableItemVerticalMlc.ts +22 -0
  118. package/vitest/matchers/designSystem/molecules/tableMainHeadingMlc.ts +15 -0
  119. package/vitest/matchers/designSystem/molecules/tableSecondaryHeadingMlc.ts +14 -0
  120. package/vitest/matchers/designSystem/molecules/textLabelContainerMlc.ts +15 -0
  121. package/vitest/matchers/designSystem/molecules/textLabelMlc.ts +23 -0
  122. package/vitest/matchers/designSystem/molecules/timerMlc.ts +36 -0
  123. package/vitest/matchers/designSystem/molecules/titleGroupMlc.ts +27 -0
  124. package/vitest/matchers/designSystem/molecules/titleLabelMlc.ts +12 -0
  125. package/vitest/matchers/designSystem/molecules/userCardMlc.ts +15 -0
  126. package/vitest/matchers/designSystem/molecules/verticalCardMlc.ts +22 -0
  127. package/vitest/matchers/designSystem/molecules/whiteCardMlc.ts +19 -0
  128. package/vitest/matchers/designSystem/organisms/articlePicCarouselOrg.ts +20 -0
  129. package/vitest/matchers/designSystem/organisms/bottomGroupOrg.ts +25 -0
  130. package/vitest/matchers/designSystem/organisms/btnIconRoundedGroupOrg.ts +16 -0
  131. package/vitest/matchers/designSystem/organisms/calendarItemOrg.ts +16 -0
  132. package/vitest/matchers/designSystem/organisms/checkboxBtnOrg.ts +21 -0
  133. package/vitest/matchers/designSystem/organisms/checkboxRoundGroupOrg.ts +22 -0
  134. package/vitest/matchers/designSystem/organisms/chipGroupOrg.ts +21 -0
  135. package/vitest/matchers/designSystem/organisms/chipTabsOrg.ts +22 -0
  136. package/vitest/matchers/designSystem/organisms/dashboardCardTileOrg.ts +17 -0
  137. package/vitest/matchers/designSystem/organisms/docButtonHeadingOrg.ts +20 -0
  138. package/vitest/matchers/designSystem/organisms/docHeadingOrg.ts +19 -0
  139. package/vitest/matchers/designSystem/organisms/editAutomaticallyDeterminedValueOrg.ts +18 -0
  140. package/vitest/matchers/designSystem/organisms/fileUploadGroupOrg.ts +17 -0
  141. package/vitest/matchers/designSystem/organisms/fullScreenVideoOrg.ts +17 -0
  142. package/vitest/matchers/designSystem/organisms/groupFilesAddOrg.ts +19 -0
  143. package/vitest/matchers/designSystem/organisms/halvedCardCarouselOrg.ts +20 -0
  144. package/vitest/matchers/designSystem/organisms/index.ts +83 -0
  145. package/vitest/matchers/designSystem/organisms/inputDateTimeOrg.ts +16 -0
  146. package/vitest/matchers/designSystem/organisms/inputNumLargeTimeOrg.ts +19 -0
  147. package/vitest/matchers/designSystem/organisms/listItemGroupOrg.ts +11 -0
  148. package/vitest/matchers/designSystem/organisms/mediaTitleOrg.ts +14 -0
  149. package/vitest/matchers/designSystem/organisms/mediaUploadGroupOrg.ts +16 -0
  150. package/vitest/matchers/designSystem/organisms/paginationListOrg.ts +19 -0
  151. package/vitest/matchers/designSystem/organisms/paginationListWhiteOrg.ts +20 -0
  152. package/vitest/matchers/designSystem/organisms/paymentInfoOrg.ts +23 -0
  153. package/vitest/matchers/designSystem/organisms/questionFormsOrg.ts +28 -0
  154. package/vitest/matchers/designSystem/organisms/radioBtnAdditionalInputOrg.ts +14 -0
  155. package/vitest/matchers/designSystem/organisms/radioBtnGroupOrg.ts +28 -0
  156. package/vitest/matchers/designSystem/organisms/radioBtnWithAltOrg.ts +17 -0
  157. package/vitest/matchers/designSystem/organisms/searchBarOrg.ts +15 -0
  158. package/vitest/matchers/designSystem/organisms/selectorListWidgetOrg.ts +16 -0
  159. package/vitest/matchers/designSystem/organisms/selectorOrg.ts +24 -0
  160. package/vitest/matchers/designSystem/organisms/sharingCodesOrg.ts +24 -0
  161. package/vitest/matchers/designSystem/organisms/smallNotificationCarouselOrg.ts +20 -0
  162. package/vitest/matchers/designSystem/organisms/tableBlockAccordionOrg.ts +15 -0
  163. package/vitest/matchers/designSystem/organisms/tableBlockOrg.ts +17 -0
  164. package/vitest/matchers/designSystem/organisms/tableBlockPlaneOrg.ts +17 -0
  165. package/vitest/matchers/designSystem/organisms/tableBlockTwoColumnsOrg.ts +15 -0
  166. package/vitest/matchers/designSystem/organisms/tableBlockTwoColumnsPlaneOrg.ts +16 -0
  167. package/vitest/matchers/designSystem/organisms/toggleButtonGroupOrg.ts +18 -0
  168. package/vitest/matchers/designSystem/organisms/topGroupOrg.ts +17 -0
  169. package/vitest/matchers/designSystem/organisms/verificationCodesOrg.ts +31 -0
  170. package/vitest/matchers/designSystem/organisms/verticalCardCarouselOrg.ts +16 -0
  171. package/vitest/matchers/designSystem/utils.ts +14 -0
  172. package/vitest/matchers/index.ts +21 -0
  173. package/vitest/matchers/toBe.ts +38 -0
  174. package/vitest/matchers/toBeAttentionMessage/index.ts +19 -0
  175. package/vitest/matchers/toBeAttentionMessage/interfaces.ts +8 -0
  176. package/vitest/matchers/toBeAttentionMessageParameter.ts +20 -0
  177. package/vitest/matchers/toBeContextMenu/index.ts +25 -0
  178. package/vitest/matchers/toBeContextMenu/interfaces.ts +9 -0
  179. package/vitest/matchers/toBeDesignSystemElement/index.ts +8 -0
  180. package/vitest/matchers/toBeMainButton/index.ts +19 -0
  181. package/vitest/matchers/toBeMainButton/interfaces.ts +5 -0
  182. package/vitest/matchers/toBeNavigationPanel/index.ts +17 -0
  183. package/vitest/matchers/toBeNavigationPanel/interfaces.ts +6 -0
  184. package/vitest/matchers/toBeTextWithParameters/index.ts +17 -0
  185. package/vitest/matchers/toBeTextWithParameters/interfaces.ts +6 -0
  186. package/vitest/matchers/toBeValueWithLabel/index.ts +18 -0
  187. package/vitest/matchers/toBeValueWithLabel/interfaces.ts +4 -0
  188. package/vitest/matchers/toContainObjects.ts +17 -0
  189. package/vitest/matchers/toEqual.ts +26 -0
  190. package/vitest/matchers/toInterceptorsBeDone.ts +18 -0
  191. package/vitest/tsconfig.json +9 -0
  192. package/vitest/utils.ts +144 -0
  193. package/dist/interfaces/documents/eResidency.js +0 -15
  194. package/dist/interfaces/documents/eResidency.js.map +0 -1
  195. package/dist/interfaces/documents/residencePermit.js +0 -9
  196. package/dist/interfaces/documents/residencePermit.js.map +0 -1
  197. package/dist/mock.js +0 -29
  198. package/dist/mock.js.map +0 -1
  199. package/dist/mongooseMock.js +0 -43
  200. package/dist/mongooseMock.js.map +0 -1
  201. package/dist/stubs/documents/eResidency.js +0 -48
  202. package/dist/stubs/documents/eResidency.js.map +0 -1
  203. package/dist/stubs/documents/residencePermit.js +0 -48
  204. package/dist/stubs/documents/residencePermit.js.map +0 -1
  205. package/dist/types/interfaces/documents/eResidency.d.ts +0 -77
  206. package/dist/types/interfaces/documents/residencePermit.d.ts +0 -50
  207. package/dist/types/mock.d.ts +0 -5
  208. package/dist/types/mongooseMock.d.ts +0 -33
  209. package/dist/types/stubs/documents/eResidency.d.ts +0 -3
  210. package/dist/types/stubs/documents/residencePermit.d.ts +0 -3
@@ -0,0 +1,21 @@
1
+ export { toBeAttentionMessageParameter } from './toBeAttentionMessageParameter'
2
+
3
+ export { toBeAttentionMessage } from './toBeAttentionMessage'
4
+
5
+ export { toBeTextWithParameters } from './toBeTextWithParameters'
6
+
7
+ export { toBeContextMenu } from './toBeContextMenu'
8
+
9
+ export { toInterceptorsBeDone } from './toInterceptorsBeDone'
10
+
11
+ export { toContainObjects } from './toContainObjects'
12
+
13
+ export { toBeValueWithLabel } from './toBeValueWithLabel'
14
+
15
+ export { toBeNavigationPanel } from './toBeNavigationPanel'
16
+
17
+ export { toBeMainButton } from './toBeMainButton'
18
+
19
+ export { toEqual } from './toEqual'
20
+
21
+ export { toBe } from './toBe'
@@ -0,0 +1,38 @@
1
+ import type { ExpectationResult, MatcherState } from '@vitest/expect'
2
+
3
+ import { cleanForDiff, cleanUndefined } from '../utils'
4
+
5
+ export function toBe(this: MatcherState, received: unknown, expected: unknown): ExpectationResult {
6
+ if (typeof received !== 'object' || received === null || typeof expected !== 'object' || expected === null) {
7
+ const pass = Object.is(received, expected)
8
+
9
+ return {
10
+ pass,
11
+ message: () =>
12
+ pass
13
+ ? `expected ${this.utils.printReceived(received)} not to be ${this.utils.printExpected(expected)}`
14
+ : `expected ${this.utils.printReceived(received)} to be ${this.utils.printExpected(expected)}`,
15
+ }
16
+ }
17
+
18
+ const cleanedReceived = cleanUndefined(received)
19
+ const cleanedExpected = cleanUndefined(expected)
20
+
21
+ const pass = this.equals(cleanedReceived, cleanedExpected, this.customTesters)
22
+
23
+ if (pass) {
24
+ return {
25
+ pass: true,
26
+ message: () =>
27
+ `expected ${this.utils.printReceived(cleanedReceived)} not to deeply equal ${this.utils.printExpected(expected)}`,
28
+ }
29
+ }
30
+
31
+ const diffExpected = cleanForDiff(expected, cleanedReceived)
32
+ const diff = this.utils.diff(diffExpected, cleanedReceived)
33
+
34
+ return {
35
+ pass: false,
36
+ message: () => `toBe diff:\n\n${diff}`,
37
+ }
38
+ }
@@ -0,0 +1,19 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { Describe, array, object, optional, string } from 'superstruct'
3
+
4
+ import { assert } from '../../utils'
5
+ import { AttentionMessageParameterSchema } from '../toBeAttentionMessageParameter'
6
+ import { AttentionMessage } from './interfaces'
7
+
8
+ const AttentionMessageSchema: Describe<AttentionMessage> = object({
9
+ icon: string(),
10
+ title: optional(string()),
11
+ text: optional(string()),
12
+ parameters: optional(array(AttentionMessageParameterSchema)),
13
+ })
14
+
15
+ export function toBeAttentionMessage(received: AttentionMessage): ExpectationResult {
16
+ const title = 'AttentionMessage matcher'
17
+
18
+ return assert(title, received, AttentionMessageSchema)
19
+ }
@@ -0,0 +1,8 @@
1
+ import { AttentionMessageParameter } from '../../interfaces'
2
+
3
+ export interface AttentionMessage {
4
+ icon: string
5
+ title?: string
6
+ text?: string
7
+ parameters?: AttentionMessageParameter[]
8
+ }
@@ -0,0 +1,20 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { Describe, object, string } from 'superstruct'
3
+
4
+ import { AttentionMessageParameter } from '../interfaces'
5
+ import { assert } from '../utils'
6
+
7
+ export const AttentionMessageParameterSchema: Describe<AttentionMessageParameter> = object({
8
+ type: string(),
9
+ data: object({
10
+ name: string(),
11
+ alt: string(),
12
+ resource: string(),
13
+ }),
14
+ })
15
+
16
+ export function toBeAttentionMessageParameter(received: AttentionMessageParameter): ExpectationResult {
17
+ const message = `AttentionMessageParameter matcher`
18
+
19
+ return assert(message, received, AttentionMessageParameterSchema)
20
+ }
@@ -0,0 +1,25 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { Describe, array, object, optional, record, string } from 'superstruct'
3
+
4
+ import { assert } from '../../utils'
5
+ import { PublicServiceContextMenu } from './interfaces'
6
+
7
+ export const ContextMenuSchema: Describe<PublicServiceContextMenu[]> = array(
8
+ object({
9
+ type: string(),
10
+ name: string(),
11
+ code: optional(string()),
12
+ appVersions: optional(
13
+ object({
14
+ versions: optional(record(string(), array(string()))),
15
+ minVersion: optional(record(string(), string())),
16
+ }),
17
+ ),
18
+ }),
19
+ )
20
+
21
+ export function toBeContextMenu(contextMenu: PublicServiceContextMenu[]): ExpectationResult {
22
+ const message = `PublicServiceContextMenu[] matcher`
23
+
24
+ return assert(message, contextMenu, ContextMenuSchema)
25
+ }
@@ -0,0 +1,9 @@
1
+ export interface PublicServiceContextMenu {
2
+ type: string
3
+ name: string
4
+ code?: string
5
+ appVersions?: {
6
+ versions?: Record<string, string[]>
7
+ minVersion?: Record<string, string>
8
+ }
9
+ }
@@ -0,0 +1,8 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { Struct } from 'superstruct'
3
+
4
+ import { assert } from '../../utils'
5
+
6
+ export function toBeDesignSystemElement(received: unknown, schema: Struct<unknown, unknown>): ExpectationResult {
7
+ return assert('toBeDesignSystemElement matcher', received, schema)
8
+ }
@@ -0,0 +1,19 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { array, literal, object, optional, string } from 'superstruct'
3
+
4
+ import { assert } from '../../utils'
5
+ import { MainButton } from './interfaces'
6
+
7
+ export function toBeMainButton(received: MainButton, action?: string): ExpectationResult {
8
+ const message = `MainButton matcher`
9
+
10
+ return assert(
11
+ message,
12
+ received,
13
+ object({
14
+ name: string(),
15
+ action: action ? literal(action) : optional(string()),
16
+ checkboxes: optional(array(string())),
17
+ }),
18
+ )
19
+ }
@@ -0,0 +1,5 @@
1
+ export interface MainButton {
2
+ name: string
3
+ action?: string
4
+ checkboxes?: string[]
5
+ }
@@ -0,0 +1,17 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { Describe, object, optional, string } from 'superstruct'
3
+
4
+ import { assert } from '../../utils'
5
+ import { ContextMenuSchema } from '../toBeContextMenu'
6
+ import { NavigationPanel } from './interfaces'
7
+
8
+ const NavigationPanelSchema: Describe<NavigationPanel> = object({
9
+ header: optional(string()),
10
+ contextMenu: optional(ContextMenuSchema),
11
+ })
12
+
13
+ export function toBeNavigationPanel(navigationPanel: NavigationPanel): ExpectationResult {
14
+ const message = `NavigationPanel matcher`
15
+
16
+ return assert(message, navigationPanel, NavigationPanelSchema)
17
+ }
@@ -0,0 +1,6 @@
1
+ import { PublicServiceContextMenu } from '../toBeContextMenu/interfaces'
2
+
3
+ export interface NavigationPanel {
4
+ header?: string
5
+ contextMenu?: PublicServiceContextMenu[]
6
+ }
@@ -0,0 +1,17 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { Describe, array, object, optional, string } from 'superstruct'
3
+
4
+ import { assert } from '../../utils'
5
+ import { AttentionMessageParameterSchema } from '../toBeAttentionMessageParameter'
6
+ import { TextWithParameters } from './interfaces'
7
+
8
+ const textWithParametersSchema: Describe<TextWithParameters> = object({
9
+ text: string(),
10
+ parameters: optional(array(AttentionMessageParameterSchema)),
11
+ })
12
+
13
+ export function toBeTextWithParameters(received: TextWithParameters): ExpectationResult {
14
+ const message = `TextWithParameters matcher`
15
+
16
+ return assert(message, received, textWithParametersSchema)
17
+ }
@@ -0,0 +1,6 @@
1
+ import { AttentionMessageParameter } from '../../interfaces'
2
+
3
+ export interface TextWithParameters {
4
+ text: string
5
+ parameters?: AttentionMessageParameter[]
6
+ }
@@ -0,0 +1,18 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { literal, object, string } from 'superstruct'
3
+
4
+ import { assert } from '../../utils'
5
+ import { ValueWithLabel } from './interfaces'
6
+
7
+ export function toBeValueWithLabel(received: ValueWithLabel, value?: string): ExpectationResult {
8
+ const message = `ValueWithLabel matcher`
9
+
10
+ return assert(
11
+ message,
12
+ received,
13
+ object({
14
+ label: string(),
15
+ value: value ? literal(value) : string(),
16
+ }),
17
+ )
18
+ }
@@ -0,0 +1,4 @@
1
+ export interface ValueWithLabel {
2
+ label: string
3
+ value: string
4
+ }
@@ -0,0 +1,17 @@
1
+ import type { ExpectationResult, MatcherState } from '@vitest/expect'
2
+ import { expect } from 'vitest'
3
+
4
+ export function toContainObjects(this: MatcherState, received: unknown, argument: unknown[]): ExpectationResult {
5
+ const pass = this.equals(received, expect.arrayContaining(argument.map((item) => expect.objectContaining(item))))
6
+ if (pass) {
7
+ return {
8
+ message: () => `expected ${this.utils.printReceived(received)} not to contain objects ${this.utils.printExpected(argument)}`,
9
+ pass: true,
10
+ }
11
+ }
12
+
13
+ return {
14
+ message: () => `expected ${this.utils.printReceived(received)} to contain objects ${this.utils.printExpected(argument)}`,
15
+ pass: false,
16
+ }
17
+ }
@@ -0,0 +1,26 @@
1
+ import type { ExpectationResult, MatcherState } from '@vitest/expect'
2
+
3
+ import { cleanForDiff, cleanUndefined } from '../utils'
4
+
5
+ export function toEqual(this: MatcherState, received: unknown, expected: unknown): ExpectationResult {
6
+ const cleanedReceived = cleanUndefined(received)
7
+ const cleanedExpected = cleanUndefined(expected)
8
+
9
+ const pass = this.equals(cleanedReceived, cleanedExpected, this.customTesters)
10
+
11
+ if (pass) {
12
+ return {
13
+ pass: true,
14
+ message: () =>
15
+ `expected ${this.utils.printReceived(cleanedReceived)} not to deeply equal ${this.utils.printExpected(expected)}`,
16
+ }
17
+ }
18
+
19
+ const diffExpected = cleanForDiff(expected, cleanedReceived)
20
+ const diff = this.utils.diff(diffExpected, cleanedReceived)
21
+
22
+ return {
23
+ pass: false,
24
+ message: () => `toEqual diff:\n\n${diff}`,
25
+ }
26
+ }
@@ -0,0 +1,18 @@
1
+ import type { ExpectationResult } from '@vitest/expect'
2
+ import { Scope } from 'nock'
3
+
4
+ export function toInterceptorsBeDone(scope: Scope): ExpectationResult {
5
+ const message = 'expected nock interceptors to be done'
6
+
7
+ if (scope?.isDone()) {
8
+ return {
9
+ message: () => message,
10
+ pass: true,
11
+ }
12
+ }
13
+
14
+ return {
15
+ message: () => `${message}. Pending interceptors:\n${scope?.pendingMocks().join('\n')}`,
16
+ pass: false,
17
+ }
18
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../tsconfig.json",
3
+ "compilerOptions": {
4
+ "noEmit": true,
5
+ "strict": false,
6
+ "skipLibCheck": true
7
+ },
8
+ "include": ["./**/*"]
9
+ }
@@ -0,0 +1,144 @@
1
+ import type { AsymmetricMatcherInterface, ExpectationResult } from '@vitest/expect'
2
+ import { Struct, StructError, assert as superstructAssert } from 'superstruct'
3
+
4
+ function isAsymmetricMatcher(obj: unknown): obj is AsymmetricMatcherInterface {
5
+ if (obj === null || typeof obj !== 'object') {
6
+ return false
7
+ }
8
+
9
+ return typeof (obj as AsymmetricMatcherInterface).asymmetricMatch === 'function'
10
+ }
11
+
12
+ function isPlainObject(obj: unknown): obj is Record<string, unknown> {
13
+ if (obj === null || typeof obj !== 'object') {
14
+ return false
15
+ }
16
+
17
+ const proto = Object.getPrototypeOf(obj)
18
+
19
+ return proto === null || proto === Object.prototype
20
+ }
21
+
22
+ /**
23
+ * Removes undefined fields from an object.
24
+ */
25
+ export function cleanUndefined<T>(obj: T): T {
26
+ if (obj === null || obj === undefined) {
27
+ return obj
28
+ }
29
+
30
+ if (Array.isArray(obj)) {
31
+ return obj.map((item) => cleanUndefined(item)) as T
32
+ }
33
+
34
+ if (typeof obj === 'object') {
35
+ if (isAsymmetricMatcher(obj) || !isPlainObject(obj)) {
36
+ return obj
37
+ }
38
+
39
+ const result: Record<string, unknown> = {}
40
+
41
+ for (const [key, value] of Object.entries(obj)) {
42
+ if (value !== undefined) {
43
+ result[key] = cleanUndefined(value)
44
+ }
45
+ }
46
+
47
+ return result as T
48
+ }
49
+
50
+ return obj
51
+ }
52
+
53
+ /**
54
+ * Cleans expected object for diff display.
55
+ * Replaces asymmetric matchers with actual received values where they match.
56
+ */
57
+ export function cleanForDiff<T>(expected: T, received: T): T {
58
+ if (expected === null || expected === undefined) {
59
+ return expected
60
+ }
61
+
62
+ if (Array.isArray(expected)) {
63
+ const receivedArr = Array.isArray(received) ? received : []
64
+
65
+ return expected.map((item, i) => cleanForDiff(item, receivedArr[i])) as T
66
+ }
67
+
68
+ if (typeof expected === 'object') {
69
+ if (isAsymmetricMatcher(expected)) {
70
+ if (expected.asymmetricMatch(received)) {
71
+ return received
72
+ }
73
+
74
+ return expected
75
+ }
76
+
77
+ if (!isPlainObject(expected)) {
78
+ return expected
79
+ }
80
+
81
+ const result: Record<string, unknown> = {}
82
+ const receivedObj = (typeof received === 'object' && received !== null ? received : {}) as Record<string, unknown>
83
+
84
+ for (const [key, value] of Object.entries(expected)) {
85
+ if (value !== undefined) {
86
+ result[key] = cleanForDiff(value, receivedObj[key])
87
+ }
88
+ }
89
+
90
+ return result as T
91
+ }
92
+
93
+ return expected
94
+ }
95
+
96
+ function getPrettyMessage(data: unknown): string {
97
+ return JSON.stringify(data, null, 2)
98
+ }
99
+
100
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
+ export function assert(matcherMessage: string, data: unknown, schema: Struct<any>): ExpectationResult {
102
+ try {
103
+ superstructAssert(data, schema)
104
+
105
+ return {
106
+ pass: true,
107
+ message: () => `${matcherMessage} is satisfied`,
108
+ }
109
+ } catch (err) {
110
+ if (err instanceof StructError) {
111
+ const errors = []
112
+
113
+ for (const failure of err.failures()) {
114
+ const { message, value, type, path, branch } = failure
115
+
116
+ const errorItem = {
117
+ message,
118
+ value,
119
+ expectedType: type,
120
+ path,
121
+ branch,
122
+ }
123
+
124
+ errors.push(errorItem)
125
+ }
126
+
127
+ const errorMessage = {
128
+ matcherMessage,
129
+ receivedData: data,
130
+ errors,
131
+ }
132
+
133
+ return {
134
+ pass: false,
135
+ message: () => getPrettyMessage(errorMessage),
136
+ }
137
+ }
138
+
139
+ return {
140
+ pass: false,
141
+ message: () => `${matcherMessage}: Unexpected error caused. ${getPrettyMessage(err)}`,
142
+ }
143
+ }
144
+ }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DocumentType = exports.ResidentshipStatus = void 0;
4
- var ResidentshipStatus;
5
- (function (ResidentshipStatus) {
6
- ResidentshipStatus[ResidentshipStatus["NotActive"] = 0] = "NotActive";
7
- ResidentshipStatus[ResidentshipStatus["Active"] = 1] = "Active";
8
- ResidentshipStatus[ResidentshipStatus["Terminated"] = 2] = "Terminated";
9
- })(ResidentshipStatus || (exports.ResidentshipStatus = ResidentshipStatus = {}));
10
- var DocumentType;
11
- (function (DocumentType) {
12
- DocumentType["EResidency"] = "e-residency";
13
- DocumentType["EResidentPassport"] = "e-resident-passport";
14
- })(DocumentType || (exports.DocumentType = DocumentType = {}));
15
- //# sourceMappingURL=eResidency.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eResidency.js","sourceRoot":"","sources":["../../../src/interfaces/documents/eResidency.ts"],"names":[],"mappings":";;;AAEA,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,qEAAa,CAAA;IACb,+DAAU,CAAA;IACV,uEAAc,CAAA;AAClB,CAAC,EAJW,kBAAkB,kCAAlB,kBAAkB,QAI7B;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,0CAA0B,CAAA;IAC1B,yDAAyC,CAAA;AAC7C,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResidencePermitGender = void 0;
4
- var ResidencePermitGender;
5
- (function (ResidencePermitGender) {
6
- ResidencePermitGender["Male"] = "\u0427";
7
- ResidencePermitGender["Female"] = "\u0416";
8
- })(ResidencePermitGender || (exports.ResidencePermitGender = ResidencePermitGender = {}));
9
- //# sourceMappingURL=residencePermit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"residencePermit.js","sourceRoot":"","sources":["../../../src/interfaces/documents/residencePermit.ts"],"names":[],"mappings":";;;AAEA,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC7B,wCAAU,CAAA;IACV,0CAAY,CAAA;AAChB,CAAC,EAHW,qBAAqB,qCAArB,qBAAqB,QAGhC"}
package/dist/mock.js DELETED
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mockInstance = exports.mockAnyClass = exports.mockClass = void 0;
4
- const jest_mock_1 = require("jest-mock");
5
- function mockClass(classToMock) {
6
- const mocker = new jest_mock_1.ModuleMocker(global);
7
- const metadata = mocker.getMetadata(classToMock);
8
- if (!metadata) {
9
- throw new Error(`Cannot find metadata to mock ${classToMock.name}`);
10
- }
11
- return mocker.generateFromMetadata(metadata);
12
- }
13
- exports.mockClass = mockClass;
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- function mockAnyClass(classToMock) {
16
- return mockClass(classToMock);
17
- }
18
- exports.mockAnyClass = mockAnyClass;
19
- function mockInstance(classToMock, props = {}) {
20
- const mockedClass = mockClass(classToMock);
21
- const mockedInstance = new mockedClass();
22
- const keys = Object.keys(props);
23
- for (const key of keys) {
24
- Object.defineProperty(mockedInstance, key, { value: props[key] });
25
- }
26
- return mockedInstance;
27
- }
28
- exports.mockInstance = mockInstance;
29
- //# sourceMappingURL=mock.js.map
package/dist/mock.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AAEnD,SAAgB,SAAS,CAAsB,WAAc;IACzD,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,OAA4B,MAAM,CAAC,oBAAoB,CAAI,QAAQ,CAAC,CAAA;AACxE,CAAC;AATD,8BASC;AAED,8DAA8D;AAC9D,SAAgB,YAAY,CAAsB,WAAc;IAC5D,OAAO,SAAS,CAAC,WAAW,CAAC,CAAA;AACjC,CAAC;AAFD,oCAEC;AAED,SAAgB,YAAY,CACxB,WAAc,EACd,QAAyD,EAAE;IAE3D,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,cAAc,GAAG,IAAI,WAAW,EAAE,CAAA;IAExC,MAAM,IAAI,GAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE5C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,OAAO,cAAc,CAAA;AACzB,CAAC;AAdD,oCAcC"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const mongoose = __importStar(require("mongoose"));
27
- class MongooseMock {
28
- setResult(operation, result, repeat = 1) {
29
- for (let i = 0; i < repeat; i++) {
30
- jest.spyOn(mongoose.Query.prototype, operation).mockReturnValueOnce(result);
31
- }
32
- }
33
- setResultChain(operations, result, repeat = 1) {
34
- for (let i = 0; i < repeat; i++) {
35
- for (const operation of operations) {
36
- jest.spyOn(mongoose.Query.prototype, operation).mockReturnThis();
37
- }
38
- jest.spyOn(mongoose.Query.prototype, 'exec').mockResolvedValueOnce(result);
39
- }
40
- }
41
- }
42
- exports.default = MongooseMock;
43
- //# sourceMappingURL=mongooseMock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mongooseMock.js","sourceRoot":"","sources":["../src/mongooseMock.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AAIpC,MAAqB,YAAY;IAC7B,SAAS,CAAC,SAA+B,EAAE,MAAe,EAAE,MAAM,GAAG,CAAC;QAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAC/E,CAAC;IACL,CAAC;IAED,cAAc,CAAC,UAAkC,EAAE,MAAe,EAAE,MAAM,GAAG,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,cAAc,EAAE,CAAA;YACpE,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAC9E,CAAC;IACL,CAAC;CACJ;AAhBD,+BAgBC"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const documents_1 = require("../../interfaces/documents");
7
- const eResidency_1 = require("../../interfaces/documents/eResidency");
8
- const signature_1 = __importDefault(require("../signature"));
9
- const eResidency = {
10
- birthCityEN: 'Bratislava',
11
- birthCityUA: 'Братислава',
12
- birthCountryCode: 'SVK',
13
- birthCountryEN: 'Slovakia',
14
- birthCountryUA: 'Словаччина',
15
- birthDate: '12.05.1996',
16
- citizenshipCountryCode: 'SVK',
17
- citizenshipCountryEN: 'SVK',
18
- citizenshipCountryUA: '',
19
- docNumber: '2222-111111',
20
- docStatus: documents_1.DocStatus.Ok,
21
- email: 'john.doe@email.com',
22
- expireDate: new Date().toISOString(),
23
- firstNameEN: 'John',
24
- firstNameUA: 'Джон',
25
- gender: 'M',
26
- id: '9c3f7d54-c84b-405b-8959-12c85f02e40b',
27
- issueDate: '12.05.2023',
28
- itn: '2432900063',
29
- lastNameEN: 'Doe',
30
- lastNameUA: 'Доу',
31
- passportDocNumber: '2222-111111',
32
- phoneNumber: '+533443223431',
33
- residenceBuilding: '123',
34
- residenceCityEN: 'Kyiv',
35
- residenceCityUA: 'Київ',
36
- residenceCountryCode: 'UA',
37
- residenceCountryEN: 'Ukraine',
38
- residenceCountryUA: 'Україна',
39
- residenceStreet: '',
40
- residentshipStatus: eResidency_1.ResidentshipStatus.Active,
41
- signature: signature_1.default,
42
- patronymicEN: '',
43
- patronymicUA: '',
44
- residenceApartment: '',
45
- residencePostalCode: '',
46
- };
47
- exports.default = eResidency;
48
- //# sourceMappingURL=eResidency.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eResidency.js","sourceRoot":"","sources":["../../../src/stubs/documents/eResidency.ts"],"names":[],"mappings":";;;;;AAAA,0DAAsD;AACtD,sEAAsF;AACtF,6DAAoC;AAEpC,MAAM,UAAU,GAAe;IAC3B,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,YAAY;IACzB,gBAAgB,EAAE,KAAK;IACvB,cAAc,EAAE,UAAU;IAC1B,cAAc,EAAE,YAAY;IAC5B,SAAS,EAAE,YAAY;IACvB,sBAAsB,EAAE,KAAK;IAC7B,oBAAoB,EAAE,KAAK;IAC3B,oBAAoB,EAAE,EAAE;IACxB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,qBAAS,CAAC,EAAE;IACvB,KAAK,EAAE,oBAAoB;IAC3B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACpC,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,GAAG;IACX,EAAE,EAAE,sCAAsC;IAC1C,SAAS,EAAE,YAAY;IACvB,GAAG,EAAE,YAAY;IACjB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,iBAAiB,EAAE,aAAa;IAChC,WAAW,EAAE,eAAe;IAC5B,iBAAiB,EAAE,KAAK;IACxB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,oBAAoB,EAAE,IAAI;IAC1B,kBAAkB,EAAE,SAAS;IAC7B,kBAAkB,EAAE,SAAS;IAC7B,eAAe,EAAE,EAAE;IACnB,kBAAkB,EAAE,+BAAkB,CAAC,MAAM;IAC7C,SAAS,EAAT,mBAAS;IACT,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,EAAE;IAChB,kBAAkB,EAAE,EAAE;IACtB,mBAAmB,EAAE,EAAE;CAC1B,CAAA;AAED,kBAAe,UAAU,CAAA"}