@open-mercato/core 0.4.11-develop.1406.2f08706ed8 → 0.4.11-develop.1413.f6aab77ce7

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 (359) hide show
  1. package/dist/generated/entities/access_log/index.js.map +1 -1
  2. package/dist/generated/entities/action_log/index.js.map +1 -1
  3. package/dist/generated/entities/api_key/index.js.map +1 -1
  4. package/dist/generated/entities/attachment/index.js.map +1 -1
  5. package/dist/generated/entities/attachment_partition/index.js.map +1 -1
  6. package/dist/generated/entities/business_rule/index.js.map +1 -1
  7. package/dist/generated/entities/carrier_shipment/index.js.map +1 -1
  8. package/dist/generated/entities/catalog_offer/index.js.map +1 -1
  9. package/dist/generated/entities/catalog_option_schema_template/index.js.map +1 -1
  10. package/dist/generated/entities/catalog_price_kind/index.js.map +1 -1
  11. package/dist/generated/entities/catalog_product/index.js.map +1 -1
  12. package/dist/generated/entities/catalog_product_category/index.js.map +1 -1
  13. package/dist/generated/entities/catalog_product_category_assignment/index.js.map +1 -1
  14. package/dist/generated/entities/catalog_product_price/index.js.map +1 -1
  15. package/dist/generated/entities/catalog_product_tag/index.js.map +1 -1
  16. package/dist/generated/entities/catalog_product_tag_assignment/index.js.map +1 -1
  17. package/dist/generated/entities/catalog_product_unit_conversion/index.js.map +1 -1
  18. package/dist/generated/entities/catalog_product_variant/index.js.map +1 -1
  19. package/dist/generated/entities/catalog_product_variant_relation/index.js.map +1 -1
  20. package/dist/generated/entities/currency/index.js.map +1 -1
  21. package/dist/generated/entities/currency_fetch_config/index.js.map +1 -1
  22. package/dist/generated/entities/custom_entity/index.js.map +1 -1
  23. package/dist/generated/entities/custom_entity_storage/index.js.map +1 -1
  24. package/dist/generated/entities/custom_field_def/index.js.map +1 -1
  25. package/dist/generated/entities/custom_field_entity_config/index.js.map +1 -1
  26. package/dist/generated/entities/custom_field_value/index.js.map +1 -1
  27. package/dist/generated/entities/customer_activity/index.js.map +1 -1
  28. package/dist/generated/entities/customer_address/index.js.map +1 -1
  29. package/dist/generated/entities/customer_comment/index.js.map +1 -1
  30. package/dist/generated/entities/customer_company_profile/index.js.map +1 -1
  31. package/dist/generated/entities/customer_deal/index.js.map +1 -1
  32. package/dist/generated/entities/customer_deal_company_link/index.js.map +1 -1
  33. package/dist/generated/entities/customer_deal_person_link/index.js.map +1 -1
  34. package/dist/generated/entities/customer_dictionary_entry/index.js.map +1 -1
  35. package/dist/generated/entities/customer_entity/index.js.map +1 -1
  36. package/dist/generated/entities/customer_interaction/index.js.map +1 -1
  37. package/dist/generated/entities/customer_person_profile/index.js.map +1 -1
  38. package/dist/generated/entities/customer_pipeline/index.js.map +1 -1
  39. package/dist/generated/entities/customer_pipeline_stage/index.js.map +1 -1
  40. package/dist/generated/entities/customer_role/index.js.map +1 -1
  41. package/dist/generated/entities/customer_role_acl/index.js.map +1 -1
  42. package/dist/generated/entities/customer_settings/index.js.map +1 -1
  43. package/dist/generated/entities/customer_tag/index.js.map +1 -1
  44. package/dist/generated/entities/customer_tag_assignment/index.js.map +1 -1
  45. package/dist/generated/entities/customer_todo_link/index.js.map +1 -1
  46. package/dist/generated/entities/customer_user/index.js.map +1 -1
  47. package/dist/generated/entities/customer_user_acl/index.js.map +1 -1
  48. package/dist/generated/entities/customer_user_email_verification/index.js.map +1 -1
  49. package/dist/generated/entities/customer_user_invitation/index.js.map +1 -1
  50. package/dist/generated/entities/customer_user_password_reset/index.js.map +1 -1
  51. package/dist/generated/entities/customer_user_role/index.js.map +1 -1
  52. package/dist/generated/entities/customer_user_session/index.js.map +1 -1
  53. package/dist/generated/entities/dashboard_layout/index.js.map +1 -1
  54. package/dist/generated/entities/dashboard_role_widgets/index.js.map +1 -1
  55. package/dist/generated/entities/dashboard_user_widgets/index.js.map +1 -1
  56. package/dist/generated/entities/dictionary/index.js.map +1 -1
  57. package/dist/generated/entities/dictionary_entry/index.js.map +1 -1
  58. package/dist/generated/entities/encryption_map/index.js.map +1 -1
  59. package/dist/generated/entities/entity_index_coverage/index.js.map +1 -1
  60. package/dist/generated/entities/entity_index_job/index.js.map +1 -1
  61. package/dist/generated/entities/entity_index_row/index.js.map +1 -1
  62. package/dist/generated/entities/entity_translation/index.js.map +1 -1
  63. package/dist/generated/entities/exchange_rate/index.js.map +1 -1
  64. package/dist/generated/entities/feature_toggle/index.js.map +1 -1
  65. package/dist/generated/entities/feature_toggle_override/index.js.map +1 -1
  66. package/dist/generated/entities/gateway_transaction/index.js.map +1 -1
  67. package/dist/generated/entities/inbox_discrepancy/index.js.map +1 -1
  68. package/dist/generated/entities/inbox_email/index.js.map +1 -1
  69. package/dist/generated/entities/inbox_proposal/index.js.map +1 -1
  70. package/dist/generated/entities/inbox_proposal_action/index.js.map +1 -1
  71. package/dist/generated/entities/inbox_settings/index.js.map +1 -1
  72. package/dist/generated/entities/indexer_error_log/index.js.map +1 -1
  73. package/dist/generated/entities/indexer_status_log/index.js.map +1 -1
  74. package/dist/generated/entities/integration_credentials/index.js.map +1 -1
  75. package/dist/generated/entities/integration_log/index.js.map +1 -1
  76. package/dist/generated/entities/integration_state/index.js.map +1 -1
  77. package/dist/generated/entities/message/index.js.map +1 -1
  78. package/dist/generated/entities/message_access_token/index.js.map +1 -1
  79. package/dist/generated/entities/message_confirmation/index.js.map +1 -1
  80. package/dist/generated/entities/message_object/index.js.map +1 -1
  81. package/dist/generated/entities/message_recipient/index.js.map +1 -1
  82. package/dist/generated/entities/module_config/index.js.map +1 -1
  83. package/dist/generated/entities/notification/index.js.map +1 -1
  84. package/dist/generated/entities/organization/index.js.map +1 -1
  85. package/dist/generated/entities/password_reset/index.js.map +1 -1
  86. package/dist/generated/entities/perspective/index.js.map +1 -1
  87. package/dist/generated/entities/planner_availability_rule/index.js.map +1 -1
  88. package/dist/generated/entities/planner_availability_rule_set/index.js.map +1 -1
  89. package/dist/generated/entities/progress_job/index.js.map +1 -1
  90. package/dist/generated/entities/resources_resource/index.js.map +1 -1
  91. package/dist/generated/entities/resources_resource_activity/index.js.map +1 -1
  92. package/dist/generated/entities/resources_resource_comment/index.js.map +1 -1
  93. package/dist/generated/entities/resources_resource_tag/index.js.map +1 -1
  94. package/dist/generated/entities/resources_resource_tag_assignment/index.js.map +1 -1
  95. package/dist/generated/entities/resources_resource_type/index.js.map +1 -1
  96. package/dist/generated/entities/role/index.js.map +1 -1
  97. package/dist/generated/entities/role_acl/index.js.map +1 -1
  98. package/dist/generated/entities/role_perspective/index.js.map +1 -1
  99. package/dist/generated/entities/role_sidebar_preference/index.js.map +1 -1
  100. package/dist/generated/entities/rule_execution_log/index.js.map +1 -1
  101. package/dist/generated/entities/rule_set/index.js.map +1 -1
  102. package/dist/generated/entities/rule_set_member/index.js.map +1 -1
  103. package/dist/generated/entities/sales_channel/index.js.map +1 -1
  104. package/dist/generated/entities/sales_credit_memo/index.js.map +1 -1
  105. package/dist/generated/entities/sales_credit_memo_line/index.js.map +1 -1
  106. package/dist/generated/entities/sales_delivery_window/index.js.map +1 -1
  107. package/dist/generated/entities/sales_document_address/index.js.map +1 -1
  108. package/dist/generated/entities/sales_document_sequence/index.js.map +1 -1
  109. package/dist/generated/entities/sales_document_tag/index.js.map +1 -1
  110. package/dist/generated/entities/sales_document_tag_assignment/index.js.map +1 -1
  111. package/dist/generated/entities/sales_invoice/index.js.map +1 -1
  112. package/dist/generated/entities/sales_invoice_line/index.js.map +1 -1
  113. package/dist/generated/entities/sales_note/index.js.map +1 -1
  114. package/dist/generated/entities/sales_order/index.js.map +1 -1
  115. package/dist/generated/entities/sales_order_adjustment/index.js.map +1 -1
  116. package/dist/generated/entities/sales_order_line/index.js.map +1 -1
  117. package/dist/generated/entities/sales_payment/index.js.map +1 -1
  118. package/dist/generated/entities/sales_payment_allocation/index.js.map +1 -1
  119. package/dist/generated/entities/sales_payment_method/index.js.map +1 -1
  120. package/dist/generated/entities/sales_quote/index.js.map +1 -1
  121. package/dist/generated/entities/sales_quote_adjustment/index.js.map +1 -1
  122. package/dist/generated/entities/sales_quote_line/index.js.map +1 -1
  123. package/dist/generated/entities/sales_return/index.js.map +1 -1
  124. package/dist/generated/entities/sales_return_line/index.js.map +1 -1
  125. package/dist/generated/entities/sales_settings/index.js.map +1 -1
  126. package/dist/generated/entities/sales_shipment/index.js.map +1 -1
  127. package/dist/generated/entities/sales_shipment_item/index.js.map +1 -1
  128. package/dist/generated/entities/sales_shipping_method/index.js.map +1 -1
  129. package/dist/generated/entities/sales_tax_rate/index.js.map +1 -1
  130. package/dist/generated/entities/search_token/index.js.map +1 -1
  131. package/dist/generated/entities/session/index.js.map +1 -1
  132. package/dist/generated/entities/staff_leave_request/index.js.map +1 -1
  133. package/dist/generated/entities/staff_team/index.js.map +1 -1
  134. package/dist/generated/entities/staff_team_member/index.js.map +1 -1
  135. package/dist/generated/entities/staff_team_member_activity/index.js.map +1 -1
  136. package/dist/generated/entities/staff_team_member_address/index.js.map +1 -1
  137. package/dist/generated/entities/staff_team_member_comment/index.js.map +1 -1
  138. package/dist/generated/entities/staff_team_member_job_history/index.js.map +1 -1
  139. package/dist/generated/entities/staff_team_role/index.js.map +1 -1
  140. package/dist/generated/entities/step_instance/index.js.map +1 -1
  141. package/dist/generated/entities/sync_cursor/index.js.map +1 -1
  142. package/dist/generated/entities/sync_external_id_mapping/index.js.map +1 -1
  143. package/dist/generated/entities/sync_mapping/index.js.map +1 -1
  144. package/dist/generated/entities/sync_run/index.js.map +1 -1
  145. package/dist/generated/entities/sync_schedule/index.js.map +1 -1
  146. package/dist/generated/entities/tenant/index.js.map +1 -1
  147. package/dist/generated/entities/upgrade_action_run/index.js.map +1 -1
  148. package/dist/generated/entities/user/index.js.map +1 -1
  149. package/dist/generated/entities/user_acl/index.js.map +1 -1
  150. package/dist/generated/entities/user_consent/index.js.map +1 -1
  151. package/dist/generated/entities/user_role/index.js.map +1 -1
  152. package/dist/generated/entities/user_sidebar_preference/index.js.map +1 -1
  153. package/dist/generated/entities/user_task/index.js.map +1 -1
  154. package/dist/generated/entities/webhook_processed_event/index.js.map +1 -1
  155. package/dist/generated/entities/workflow_definition/index.js.map +1 -1
  156. package/dist/generated/entities/workflow_event/index.js.map +1 -1
  157. package/dist/generated/entities/workflow_event_trigger/index.js.map +1 -1
  158. package/dist/generated/entities/workflow_instance/index.js.map +1 -1
  159. package/dist/generated/entities.ids.generated.js +1 -2
  160. package/dist/generated/entities.ids.generated.js.map +2 -2
  161. package/dist/generated/entity-fields-registry.js +2585 -316
  162. package/dist/generated/entity-fields-registry.js.map +2 -2
  163. package/dist/helpers/integration/auth.js +23 -0
  164. package/dist/helpers/integration/auth.js.map +2 -2
  165. package/dist/helpers/integration/salesUi.js +261 -28
  166. package/dist/helpers/integration/salesUi.js.map +3 -3
  167. package/dist/modules/api_docs/frontend/docs/api/page.js +10 -10
  168. package/dist/modules/api_docs/frontend/docs/api/page.js.map +2 -2
  169. package/dist/modules/auth/api/admin/nav.js +5 -3
  170. package/dist/modules/auth/api/admin/nav.js.map +2 -2
  171. package/dist/modules/auth/lib/backendChrome.js +28 -1
  172. package/dist/modules/auth/lib/backendChrome.js.map +2 -2
  173. package/dist/modules/catalog/api/products/route.js +23 -6
  174. package/dist/modules/catalog/api/products/route.js.map +2 -2
  175. package/dist/modules/configs/lib/system-status.js +1 -1
  176. package/dist/modules/configs/lib/system-status.js.map +1 -1
  177. package/dist/modules/customers/backend/customers/deals/[id]/page.js +226 -221
  178. package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
  179. package/dist/modules/customers/commands/companies.js +14 -0
  180. package/dist/modules/customers/commands/companies.js.map +2 -2
  181. package/dist/modules/customers/commands/people.js +18 -1
  182. package/dist/modules/customers/commands/people.js.map +2 -2
  183. package/dist/modules/entities/backend/entities/user/[entityId]/records/create/page.js +0 -1
  184. package/dist/modules/entities/backend/entities/user/[entityId]/records/create/page.js.map +2 -2
  185. package/dist/modules/query_index/lib/engine.js +2 -2
  186. package/dist/modules/query_index/lib/engine.js.map +2 -2
  187. package/generated/entities/access_log/index.ts +11 -11
  188. package/generated/entities/action_log/index.ts +20 -20
  189. package/generated/entities/api_key/index.ts +17 -17
  190. package/generated/entities/attachment/index.ts +15 -15
  191. package/generated/entities/attachment_partition/index.ts +11 -11
  192. package/generated/entities/business_rule/index.ts +23 -23
  193. package/generated/entities/carrier_shipment/index.ts +17 -17
  194. package/generated/entities/catalog_offer/index.ts +15 -15
  195. package/generated/entities/catalog_option_schema_template/index.ts +12 -12
  196. package/generated/entities/catalog_price_kind/index.ts +13 -13
  197. package/generated/entities/catalog_product/index.ts +39 -39
  198. package/generated/entities/catalog_product_category/index.ts +19 -19
  199. package/generated/entities/catalog_product_category_assignment/index.ts +8 -8
  200. package/generated/entities/catalog_product_price/index.ts +25 -25
  201. package/generated/entities/catalog_product_tag/index.ts +8 -8
  202. package/generated/entities/catalog_product_tag_assignment/index.ts +7 -7
  203. package/generated/entities/catalog_product_unit_conversion/index.ts +12 -12
  204. package/generated/entities/catalog_product_variant/index.ts +24 -24
  205. package/generated/entities/catalog_product_variant_relation/index.ts +14 -14
  206. package/generated/entities/currency/index.ts +14 -14
  207. package/generated/entities/currency_fetch_config/index.ts +13 -13
  208. package/generated/entities/custom_entity/index.ts +13 -13
  209. package/generated/entities/custom_entity_storage/index.ts +9 -9
  210. package/generated/entities/custom_field_def/index.ts +11 -11
  211. package/generated/entities/custom_field_entity_config/index.ts +9 -9
  212. package/generated/entities/custom_field_value/index.ts +13 -13
  213. package/generated/entities/customer_activity/index.ts +14 -14
  214. package/generated/entities/customer_address/index.ts +20 -20
  215. package/generated/entities/customer_comment/index.ts +12 -12
  216. package/generated/entities/customer_company_profile/index.ts +13 -13
  217. package/generated/entities/customer_deal/index.ts +22 -22
  218. package/generated/entities/customer_deal_company_link/index.ts +4 -4
  219. package/generated/entities/customer_deal_person_link/index.ts +5 -5
  220. package/generated/entities/customer_dictionary_entry/index.ts +11 -11
  221. package/generated/entities/customer_entity/index.ts +32 -32
  222. package/generated/entities/customer_interaction/index.ts +20 -20
  223. package/generated/entities/customer_person_profile/index.ts +16 -16
  224. package/generated/entities/customer_pipeline/index.ts +7 -7
  225. package/generated/entities/customer_pipeline_stage/index.ts +8 -8
  226. package/generated/entities/customer_role/index.ts +12 -12
  227. package/generated/entities/customer_role_acl/index.ts +8 -8
  228. package/generated/entities/customer_settings/index.ts +6 -6
  229. package/generated/entities/customer_tag/index.ts +10 -10
  230. package/generated/entities/customer_tag_assignment/index.ts +6 -6
  231. package/generated/entities/customer_todo_link/index.ts +8 -8
  232. package/generated/entities/customer_user/index.ts +17 -17
  233. package/generated/entities/customer_user_acl/index.ts +8 -8
  234. package/generated/entities/customer_user_email_verification/index.ts +7 -7
  235. package/generated/entities/customer_user_invitation/index.ts +15 -15
  236. package/generated/entities/customer_user_password_reset/index.ts +6 -6
  237. package/generated/entities/customer_user_role/index.ts +5 -5
  238. package/generated/entities/customer_user_session/index.ts +9 -9
  239. package/generated/entities/dashboard_layout/index.ts +8 -8
  240. package/generated/entities/dashboard_role_widgets/index.ts +8 -8
  241. package/generated/entities/dashboard_user_widgets/index.ts +9 -9
  242. package/generated/entities/dictionary/index.ts +12 -12
  243. package/generated/entities/dictionary_entry/index.ts +11 -11
  244. package/generated/entities/encryption_map/index.ts +9 -9
  245. package/generated/entities/entity_index_coverage/index.ts +9 -9
  246. package/generated/entities/entity_index_job/index.ts +12 -12
  247. package/generated/entities/entity_index_row/index.ts +11 -11
  248. package/generated/entities/entity_translation/index.ts +8 -8
  249. package/generated/entities/exchange_rate/index.ts +13 -13
  250. package/generated/entities/feature_toggle/index.ts +10 -10
  251. package/generated/entities/feature_toggle_override/index.ts +6 -6
  252. package/generated/entities/gateway_transaction/index.ts +22 -22
  253. package/generated/entities/inbox_discrepancy/index.ts +15 -15
  254. package/generated/entities/inbox_email/index.ts +26 -26
  255. package/generated/entities/inbox_proposal/index.ts +22 -22
  256. package/generated/entities/inbox_proposal_action/index.ts +23 -23
  257. package/generated/entities/inbox_settings/index.ts +9 -9
  258. package/generated/entities/indexer_error_log/index.ts +11 -11
  259. package/generated/entities/indexer_status_log/index.ts +11 -11
  260. package/generated/entities/integration_credentials/index.ts +8 -8
  261. package/generated/entities/integration_log/index.ts +12 -12
  262. package/generated/entities/integration_state/index.ts +12 -12
  263. package/generated/entities/message/index.ts +31 -31
  264. package/generated/entities/message_access_token/index.ts +8 -8
  265. package/generated/entities/message_confirmation/index.ts +9 -9
  266. package/generated/entities/message_object/index.ts +10 -10
  267. package/generated/entities/message_recipient/index.ts +14 -14
  268. package/generated/entities/module_config/index.ts +6 -6
  269. package/generated/entities/notification/index.ts +27 -27
  270. package/generated/entities/organization/index.ts +15 -15
  271. package/generated/entities/password_reset/index.ts +7 -7
  272. package/generated/entities/perspective/index.ts +11 -11
  273. package/generated/entities/planner_availability_rule/index.ts +15 -15
  274. package/generated/entities/planner_availability_rule_set/index.ts +9 -9
  275. package/generated/entities/progress_job/index.ts +27 -27
  276. package/generated/entities/resources_resource/index.ts +18 -18
  277. package/generated/entities/resources_resource_activity/index.ts +13 -13
  278. package/generated/entities/resources_resource_comment/index.ts +11 -11
  279. package/generated/entities/resources_resource_tag/index.ts +10 -10
  280. package/generated/entities/resources_resource_tag_assignment/index.ts +7 -7
  281. package/generated/entities/resources_resource_type/index.ts +10 -10
  282. package/generated/entities/role/index.ts +5 -5
  283. package/generated/entities/role_acl/index.ts +9 -9
  284. package/generated/entities/role_perspective/index.ts +11 -11
  285. package/generated/entities/role_sidebar_preference/index.ts +8 -8
  286. package/generated/entities/rule_execution_log/index.ts +13 -13
  287. package/generated/entities/rule_set/index.ts +12 -12
  288. package/generated/entities/rule_set_member/index.ts +8 -8
  289. package/generated/entities/sales_channel/index.ts +25 -25
  290. package/generated/entities/sales_credit_memo/index.ts +21 -21
  291. package/generated/entities/sales_credit_memo_line/index.ts +20 -20
  292. package/generated/entities/sales_delivery_window/index.ts +15 -15
  293. package/generated/entities/sales_document_address/index.ts +24 -24
  294. package/generated/entities/sales_document_sequence/index.ts +8 -8
  295. package/generated/entities/sales_document_tag/index.ts +10 -10
  296. package/generated/entities/sales_document_tag_assignment/index.ts +10 -10
  297. package/generated/entities/sales_invoice/index.ts +25 -25
  298. package/generated/entities/sales_invoice_line/index.ts +23 -23
  299. package/generated/entities/sales_note/index.ts +14 -14
  300. package/generated/entities/sales_order/index.ts +71 -71
  301. package/generated/entities/sales_order_adjustment/index.ts +20 -20
  302. package/generated/entities/sales_order_line/index.ts +44 -44
  303. package/generated/entities/sales_payment/index.ts +20 -20
  304. package/generated/entities/sales_payment_allocation/index.ts +9 -9
  305. package/generated/entities/sales_payment_method/index.ts +15 -15
  306. package/generated/entities/sales_quote/index.ts +56 -56
  307. package/generated/entities/sales_quote_adjustment/index.ts +20 -20
  308. package/generated/entities/sales_quote_line/index.ts +37 -37
  309. package/generated/entities/sales_return/index.ts +14 -14
  310. package/generated/entities/sales_return_line/index.ts +13 -13
  311. package/generated/entities/sales_settings/index.ts +10 -10
  312. package/generated/entities/sales_shipment/index.ts +24 -24
  313. package/generated/entities/sales_shipment_item/index.ts +7 -7
  314. package/generated/entities/sales_shipping_method/index.ts +19 -19
  315. package/generated/entities/sales_tax_rate/index.ts +22 -22
  316. package/generated/entities/search_token/index.ts +9 -9
  317. package/generated/entities/session/index.ts +7 -7
  318. package/generated/entities/staff_leave_request/index.ts +18 -18
  319. package/generated/entities/staff_team/index.ts +9 -9
  320. package/generated/entities/staff_team_member/index.ts +14 -14
  321. package/generated/entities/staff_team_member_activity/index.ts +13 -13
  322. package/generated/entities/staff_team_member_address/index.ts +20 -20
  323. package/generated/entities/staff_team_member_comment/index.ts +11 -11
  324. package/generated/entities/staff_team_member_job_history/index.ts +11 -11
  325. package/generated/entities/staff_team_role/index.ts +11 -11
  326. package/generated/entities/step_instance/index.ts +17 -17
  327. package/generated/entities/sync_cursor/index.ts +8 -8
  328. package/generated/entities/sync_external_id_mapping/index.ts +12 -12
  329. package/generated/entities/sync_mapping/index.ts +8 -8
  330. package/generated/entities/sync_run/index.ts +21 -21
  331. package/generated/entities/sync_schedule/index.ts +16 -16
  332. package/generated/entities/tenant/index.ts +7 -7
  333. package/generated/entities/upgrade_action_run/index.ts +7 -7
  334. package/generated/entities/user/index.ts +11 -11
  335. package/generated/entities/user_acl/index.ts +9 -9
  336. package/generated/entities/user_consent/index.ts +14 -14
  337. package/generated/entities/user_role/index.ts +5 -5
  338. package/generated/entities/user_sidebar_preference/index.ts +9 -9
  339. package/generated/entities/user_task/index.ts +22 -22
  340. package/generated/entities/webhook_processed_event/index.ts +7 -7
  341. package/generated/entities/workflow_definition/index.ts +17 -17
  342. package/generated/entities/workflow_event/index.ts +9 -9
  343. package/generated/entities/workflow_event_trigger/index.ts +15 -15
  344. package/generated/entities/workflow_instance/index.ts +22 -22
  345. package/generated/entities.ids.generated.ts +258 -258
  346. package/generated/entity-fields-registry.ts +2587 -319
  347. package/package.json +3 -3
  348. package/src/helpers/integration/auth.ts +22 -0
  349. package/src/helpers/integration/salesUi.ts +397 -29
  350. package/src/modules/api_docs/frontend/docs/api/page.tsx +14 -11
  351. package/src/modules/auth/api/admin/nav.ts +5 -4
  352. package/src/modules/auth/lib/backendChrome.tsx +36 -3
  353. package/src/modules/catalog/api/products/route.ts +25 -6
  354. package/src/modules/configs/lib/system-status.ts +1 -1
  355. package/src/modules/customers/backend/customers/deals/[id]/page.tsx +1 -1
  356. package/src/modules/customers/commands/companies.ts +15 -0
  357. package/src/modules/customers/commands/people.ts +19 -1
  358. package/src/modules/entities/backend/entities/user/[entityId]/records/create/page.tsx +0 -1
  359. package/src/modules/query_index/lib/engine.ts +1 -2
@@ -31,11 +31,21 @@ function readId(payload, keys) {
31
31
  }
32
32
  return null;
33
33
  }
34
+ function readListItems(payload) {
35
+ return Array.isArray(payload?.result?.items) ? payload.result.items : Array.isArray(payload?.items) ? payload.items : [];
36
+ }
37
+ function resolveOrderIdFromPage(page) {
38
+ const match = page.url().match(/\/backend\/sales\/(?:documents|orders)\/([0-9a-f-]{36})/i);
39
+ return match?.[1] ?? null;
40
+ }
34
41
  async function ensureSalesDocumentFixtures(page, options) {
35
42
  let customerQuery = options.customerQuery;
36
43
  let channelQuery = options.channelQuery;
44
+ let customerEntityId = null;
45
+ let channelId = null;
46
+ let customerAddressId = null;
37
47
  if (customerQuery && channelQuery) {
38
- return { customerQuery, channelQuery };
48
+ return { customerQuery, channelQuery, authToken: options.token ?? null };
39
49
  }
40
50
  const token = await getAuthToken(page.request, "admin").catch(() => null);
41
51
  if (!token) {
@@ -61,7 +71,8 @@ async function ensureSalesDocumentFixtures(page, options) {
61
71
  }
62
72
  return {
63
73
  customerQuery,
64
- channelQuery
74
+ channelQuery,
75
+ authToken: options.token ?? null
65
76
  };
66
77
  }
67
78
  if (!customerQuery) {
@@ -72,12 +83,12 @@ async function ensureSalesDocumentFixtures(page, options) {
72
83
  }).catch(() => null);
73
84
  if (companyResponse && companyResponse.ok()) {
74
85
  const companyBody = await companyResponse.json().catch(() => null);
75
- const companyId = readId(companyBody, ["id", "entityId", "companyId"]);
76
- if (companyId) {
86
+ customerEntityId = readId(companyBody, ["id", "entityId", "companyId"]);
87
+ if (customerEntityId) {
77
88
  await apiRequest(page.request, "POST", "/api/customers/addresses", {
78
89
  token,
79
90
  data: {
80
- entityId: companyId,
91
+ entityId: customerEntityId,
81
92
  name: "Primary",
82
93
  purpose: "Shipping",
83
94
  addressLine1: "100 QA Street",
@@ -86,6 +97,9 @@ async function ensureSalesDocumentFixtures(page, options) {
86
97
  country: "US",
87
98
  isPrimary: true
88
99
  }
100
+ }).then(async (response) => {
101
+ const body = await response.json().catch(() => null);
102
+ customerAddressId = readId(body, ["id", "addressId"]);
89
103
  }).catch(() => {
90
104
  });
91
105
  customerQuery = companyName;
@@ -107,6 +121,7 @@ async function ensureSalesDocumentFixtures(page, options) {
107
121
  const preferredExistingChannel = existingChannels.find((item) => item.code === "online" && item.isActive !== false) ?? existingChannels.find((item) => item.isActive !== false);
108
122
  if (preferredExistingChannel?.name) {
109
123
  channelQuery = preferredExistingChannel.name;
124
+ channelId = preferredExistingChannel.id ?? null;
110
125
  } else {
111
126
  const timestamp = Date.now();
112
127
  const channelName = `QA Sales Channel ${timestamp}`;
@@ -120,6 +135,8 @@ async function ensureSalesDocumentFixtures(page, options) {
120
135
  }).catch(() => null);
121
136
  if (channelResponse && channelResponse.ok()) {
122
137
  channelQuery = channelName;
138
+ const channelBody = await channelResponse.json().catch(() => null);
139
+ channelId = readId(channelBody, ["id", "channelId"]);
123
140
  } else {
124
141
  channelQuery = "online";
125
142
  }
@@ -127,7 +144,11 @@ async function ensureSalesDocumentFixtures(page, options) {
127
144
  }
128
145
  return {
129
146
  customerQuery: customerQuery ?? "Copperleaf",
130
- channelQuery: channelQuery ?? "online"
147
+ channelQuery: channelQuery ?? "online",
148
+ customerEntityId,
149
+ channelId,
150
+ customerAddressId,
151
+ authToken: token
131
152
  };
132
153
  }
133
154
  async function selectFirstAddressIfAvailable(page) {
@@ -222,13 +243,69 @@ async function resolveCustomerEntityId(page, token, customerQuery) {
222
243
  const params = new URLSearchParams({ page: "1", pageSize: "5", search: customerQuery });
223
244
  const response = await apiRequest(page.request, "GET", `/api/customers/companies?${params.toString()}`, { token }).catch(() => null);
224
245
  const body = await response?.json().catch(() => null);
225
- const items = Array.isArray(body?.result?.items) ? body.result.items : [];
246
+ const items = Array.isArray(body?.result?.items) ? body.result.items : Array.isArray(body?.items) ? body.items : [];
226
247
  const exactMatch = items.find((item) => {
227
248
  const displayName = typeof item.displayName === "string" ? item.displayName : typeof item.display_name === "string" ? item.display_name : "";
228
249
  return displayName.trim().toLowerCase() === customerQuery.trim().toLowerCase();
229
250
  }) ?? items[0];
230
251
  return exactMatch ? readId(exactMatch, ["id", "entityId", "companyId"]) : null;
231
252
  }
253
+ function toDocumentAddressPayload(address) {
254
+ const addressLine1 = typeof address.addressLine1 === "string" ? address.addressLine1 : typeof address.address_line1 === "string" ? address.address_line1 : null;
255
+ if (!addressLine1) return null;
256
+ return {
257
+ customerAddressId: typeof address.id === "string" ? address.id : void 0,
258
+ name: typeof address.name === "string" ? address.name : void 0,
259
+ purpose: typeof address.purpose === "string" ? address.purpose : void 0,
260
+ companyName: typeof address.companyName === "string" ? address.companyName : typeof address.company_name === "string" ? address.company_name : void 0,
261
+ addressLine1,
262
+ addressLine2: typeof address.addressLine2 === "string" ? address.addressLine2 : typeof address.address_line2 === "string" ? address.address_line2 : void 0,
263
+ buildingNumber: typeof address.buildingNumber === "string" ? address.buildingNumber : typeof address.building_number === "string" ? address.building_number : void 0,
264
+ flatNumber: typeof address.flatNumber === "string" ? address.flatNumber : typeof address.flat_number === "string" ? address.flat_number : void 0,
265
+ city: typeof address.city === "string" ? address.city : void 0,
266
+ region: typeof address.region === "string" ? address.region : void 0,
267
+ postalCode: typeof address.postalCode === "string" ? address.postalCode : typeof address.postal_code === "string" ? address.postal_code : void 0,
268
+ country: typeof address.country === "string" ? address.country : void 0
269
+ };
270
+ }
271
+ async function ensureCustomerAddressFixture(page, token, customerEntityId, preferredAddressId) {
272
+ const existingResponse = await apiRequest(
273
+ page.request,
274
+ "GET",
275
+ `/api/customers/addresses?page=1&pageSize=20&entityId=${customerEntityId}`,
276
+ { token }
277
+ ).catch(() => null);
278
+ const existingBody = await existingResponse?.json().catch(() => null);
279
+ const existingItems = Array.isArray(existingBody?.result?.items) ? existingBody.result.items : Array.isArray(existingBody?.items) ? existingBody.items : [];
280
+ const preferredAddress = existingItems.find((item) => item.id === preferredAddressId) ?? existingItems.find((item) => item.purpose?.toLowerCase() === "shipping") ?? existingItems[0];
281
+ const preferredPayload = preferredAddress ? toDocumentAddressPayload(preferredAddress) : null;
282
+ if (preferredPayload) return preferredPayload;
283
+ const createResponse = await apiRequest(page.request, "POST", "/api/customers/addresses", {
284
+ token,
285
+ data: {
286
+ entityId: customerEntityId,
287
+ name: "Primary",
288
+ purpose: "Shipping",
289
+ addressLine1: "100 QA Street",
290
+ city: "Austin",
291
+ postalCode: "78701",
292
+ country: "US",
293
+ isPrimary: true
294
+ }
295
+ }).catch(() => null);
296
+ const createBody = await createResponse?.json().catch(() => null);
297
+ const createdAddressId = readId(createBody, ["id", "addressId"]);
298
+ if (!createResponse?.ok() || !createdAddressId) return null;
299
+ return {
300
+ customerAddressId: createdAddressId,
301
+ name: "Primary",
302
+ purpose: "Shipping",
303
+ addressLine1: "100 QA Street",
304
+ city: "Austin",
305
+ postalCode: "78701",
306
+ country: "US"
307
+ };
308
+ }
232
309
  async function resolveSalesChannelId(page, token, channelQuery) {
233
310
  const resolveItems = async (search) => {
234
311
  const params = new URLSearchParams({ page: "1", pageSize: "5", isActive: "true" });
@@ -245,9 +322,95 @@ async function resolveSalesChannelId(page, token, channelQuery) {
245
322
  const exactMatch = items.find((item) => item.name?.trim().toLowerCase() === normalizedQuery) ?? items.find((item) => item.code?.trim().toLowerCase() === normalizedQuery) ?? items.find((item) => item.code === "online") ?? items[0];
246
323
  return exactMatch?.id ?? null;
247
324
  }
248
- async function createSalesDocumentFixture(page, token, kind, customerQuery, channelQuery) {
249
- const customerEntityId = await resolveCustomerEntityId(page, token, customerQuery);
250
- const channelId = await resolveSalesChannelId(page, token, channelQuery);
325
+ async function resolveOrderLineId(page, token, orderId) {
326
+ const response = await apiRequest(page.request, "GET", `/api/sales/order-lines?page=1&pageSize=20&orderId=${orderId}`, {
327
+ token
328
+ }).catch(() => null);
329
+ const body = await response?.json().catch(() => null);
330
+ const items = readListItems(body);
331
+ return items.find((item) => typeof item.id === "string" && item.id.length > 0)?.id ?? null;
332
+ }
333
+ async function resolveShippingMethodId(page, token) {
334
+ const response = await apiRequest(
335
+ page.request,
336
+ "GET",
337
+ "/api/sales/shipping-methods?page=1&pageSize=20&isActive=true",
338
+ { token }
339
+ ).catch(() => null);
340
+ const body = await response?.json().catch(() => null);
341
+ const items = readListItems(body);
342
+ const preferred = items.find((item) => item.code === "standard-ground") ?? items.find((item) => item.name?.toLowerCase().includes("standard")) ?? items[0];
343
+ return preferred?.id ?? null;
344
+ }
345
+ async function resolvePaymentMethodId(page, token) {
346
+ const response = await apiRequest(
347
+ page.request,
348
+ "GET",
349
+ "/api/sales/payment-methods?page=1&pageSize=20&isActive=true",
350
+ { token }
351
+ ).catch(() => null);
352
+ const body = await response?.json().catch(() => null);
353
+ const items = readListItems(body);
354
+ const preferred = items.find((item) => item.code === "bank-transfer") ?? items.find((item) => item.name?.toLowerCase().includes("bank")) ?? items[0];
355
+ return preferred?.id ?? null;
356
+ }
357
+ async function refreshSalesDocumentPage(page, activeTabName) {
358
+ await page.reload({ waitUntil: "domcontentloaded" }).catch(() => {
359
+ });
360
+ await ensureSalesDocumentReady(page);
361
+ const tab = page.getByRole("button", { name: new RegExp(`^${activeTabName}$`, "i") }).first();
362
+ await waitForStableVisibility(tab, TEST_WAIT_TIMEOUT_MS).catch(() => {
363
+ });
364
+ await tab.click().catch(() => {
365
+ });
366
+ }
367
+ async function addShipmentViaApi(page, shipmentNumber, trackingNumber) {
368
+ const token = await getAuthToken(page.request, "admin").catch(() => null);
369
+ const orderId = resolveOrderIdFromPage(page);
370
+ if (!token || !orderId) return false;
371
+ const [orderLineId, shippingMethodId] = await Promise.all([
372
+ resolveOrderLineId(page, token, orderId),
373
+ resolveShippingMethodId(page, token)
374
+ ]);
375
+ if (!orderLineId) return false;
376
+ const response = await apiRequest(page.request, "POST", "/api/sales/shipments", {
377
+ token,
378
+ data: {
379
+ orderId,
380
+ shipmentNumber,
381
+ ...shippingMethodId ? { shippingMethodId } : {},
382
+ trackingNumbers: [trackingNumber],
383
+ shippedAt: (/* @__PURE__ */ new Date()).toISOString(),
384
+ currencyCode: "USD",
385
+ items: [{ orderLineId, quantity: "1" }]
386
+ }
387
+ }).catch(() => null);
388
+ if (!response?.ok()) return false;
389
+ await refreshSalesDocumentPage(page, "Shipments");
390
+ return true;
391
+ }
392
+ async function addPaymentViaApi(page, amount) {
393
+ const token = await getAuthToken(page.request, "admin").catch(() => null);
394
+ const orderId = resolveOrderIdFromPage(page);
395
+ if (!token || !orderId) return false;
396
+ const paymentMethodId = await resolvePaymentMethodId(page, token);
397
+ const response = await apiRequest(page.request, "POST", "/api/sales/payments", {
398
+ token,
399
+ data: {
400
+ orderId,
401
+ ...paymentMethodId ? { paymentMethodId } : {},
402
+ amount: amount.toFixed(2),
403
+ currencyCode: "USD",
404
+ receivedAt: (/* @__PURE__ */ new Date()).toISOString()
405
+ }
406
+ }).catch(() => null);
407
+ if (!response?.ok()) return false;
408
+ await refreshSalesDocumentPage(page, "Payments");
409
+ return true;
410
+ }
411
+ async function createSalesDocumentFixture(page, token, kind, customerQuery, channelQuery, ids) {
412
+ const customerEntityId = ids?.customerEntityId ?? await resolveCustomerEntityId(page, token, customerQuery);
413
+ const channelId = ids?.channelId ?? await resolveSalesChannelId(page, token, channelQuery);
251
414
  const payload = {
252
415
  currencyCode: "USD"
253
416
  };
@@ -265,6 +428,20 @@ async function createSalesDocumentFixture(page, token, kind, customerQuery, chan
265
428
  if (!id) {
266
429
  throw new Error(`Missing sales ${kind} id in API fallback response.`);
267
430
  }
431
+ if (customerEntityId) {
432
+ const address = await ensureCustomerAddressFixture(page, token, customerEntityId, ids?.customerAddressId);
433
+ if (address) {
434
+ await apiRequest(page.request, "POST", "/api/sales/document-addresses", {
435
+ token,
436
+ data: {
437
+ documentId: id,
438
+ documentKind: kind,
439
+ ...address
440
+ }
441
+ }).catch(() => {
442
+ });
443
+ }
444
+ }
268
445
  return id;
269
446
  }
270
447
  async function waitForDocumentLoaded(page, timeout = TEST_WAIT_TIMEOUT_MS) {
@@ -379,9 +556,15 @@ async function createSalesDocument(page, options) {
379
556
  const fixtureContext = await ensureSalesDocumentFixtures(page, options);
380
557
  const customerQuery = fixtureContext.customerQuery;
381
558
  const channelQuery = fixtureContext.channelQuery;
559
+ let fallbackToken = options.token ?? fixtureContext.authToken ?? null;
560
+ const resolveFallbackToken = async () => {
561
+ if (fallbackToken) return fallbackToken;
562
+ fallbackToken = await getAuthToken(page.request, "admin");
563
+ return fallbackToken;
564
+ };
382
565
  if (options.preferApi) {
383
- const token = await getAuthToken(page.request, "admin");
384
- const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery);
566
+ const token = await resolveFallbackToken();
567
+ const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery, fixtureContext);
385
568
  await openSalesDocumentPage(page, id, options.kind);
386
569
  return id;
387
570
  }
@@ -403,8 +586,8 @@ async function createSalesDocument(page, options) {
403
586
  }
404
587
  }
405
588
  if (!createPageReady) {
406
- const token = await getAuthToken(page.request, "admin");
407
- const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery);
589
+ const token = await resolveFallbackToken();
590
+ const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery, fixtureContext);
408
591
  await openSalesDocumentPage(page, id, options.kind);
409
592
  return id;
410
593
  }
@@ -416,7 +599,6 @@ async function createSalesDocument(page, options) {
416
599
  const hasGenerateButton = await generateButton.count() > 0;
417
600
  if (hasGenerateButton) {
418
601
  await expect(generateButton).toBeVisible({ timeout: 1e4 });
419
- await expect(generateButton).toBeEnabled({ timeout: 3e4 });
420
602
  }
421
603
  await page.getByText("Document type").click();
422
604
  const customerSelected = await selectLookupValue(
@@ -424,17 +606,22 @@ async function createSalesDocument(page, options) {
424
606
  customerQuery,
425
607
  new RegExp(escapeRegExp(customerQuery), "i")
426
608
  );
427
- if (!customerSelected) throw new Error(`Could not select customer "${customerQuery}" while creating sales ${options.kind}.`);
428
- await selectLookupValue(
609
+ const channelSelected = await selectLookupValue(
429
610
  page.getByRole("textbox", { name: /Select a channel/i }).first(),
430
611
  channelQuery,
431
612
  new RegExp(escapeRegExp(channelQuery), "i")
432
613
  );
614
+ if (!customerSelected || !channelSelected) {
615
+ const token = await resolveFallbackToken();
616
+ const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery, fixtureContext);
617
+ await openSalesDocumentPage(page, id, options.kind);
618
+ return id;
619
+ }
433
620
  await selectFirstAddressIfAvailable(page);
434
621
  const createEnabled = await createButton.isEnabled().catch(() => false);
435
622
  if (!createEnabled) {
436
- const token = await getAuthToken(page.request, "admin");
437
- const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery);
623
+ const token = await resolveFallbackToken();
624
+ const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery, fixtureContext);
438
625
  await openSalesDocumentPage(page, id, options.kind);
439
626
  return id;
440
627
  }
@@ -447,8 +634,8 @@ async function createSalesDocument(page, options) {
447
634
  { timeout: TEST_WAIT_TIMEOUT_MS }
448
635
  ).then(() => true).catch(() => false);
449
636
  if (!navigated) {
450
- const token = await getAuthToken(page.request, "admin");
451
- const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery);
637
+ const token = await resolveFallbackToken();
638
+ const id = await createSalesDocumentFixture(page, token, options.kind, customerQuery, channelQuery, fixtureContext);
452
639
  await openSalesDocumentPage(page, id, options.kind);
453
640
  return id;
454
641
  }
@@ -745,7 +932,10 @@ async function addPayment(page, amount) {
745
932
  }
746
933
  await operationMessage.waitFor({ state: "visible", timeout: 2500 }).catch(() => {
747
934
  });
748
- const added = await operationMessage.isVisible().catch(() => false);
935
+ let added = await operationMessage.isVisible().catch(() => false);
936
+ if (!added) {
937
+ added = await addPaymentViaApi(page, amount);
938
+ }
749
939
  return { amountLabel, added };
750
940
  }
751
941
  async function addShipment(page) {
@@ -756,13 +946,56 @@ async function addShipment(page) {
756
946
  await shipmentsTab.click();
757
947
  const trackingNumber = `SHIP-${Date.now()}`;
758
948
  const shipmentNumber = String(Date.now());
759
- const addShipmentButton = page.getByRole("button", { name: /Add shipment/i }).first();
760
- await waitForStableVisibility(addShipmentButton, TEST_WAIT_TIMEOUT_MS);
761
- await expect(addShipmentButton).toBeEnabled({ timeout: TEST_WAIT_TIMEOUT_MS });
762
- await addShipmentButton.click();
763
949
  const dialog = page.getByRole("dialog", { name: /Add shipment/i });
764
- const shipmentNumberInput = dialog.getByRole("textbox").first();
765
- await waitForDialogFieldReady(dialog, shipmentNumberInput, /Loading shipments…|Loading shipments\.\.\./i);
950
+ const openShipmentDialog = async () => {
951
+ const addShipmentButtons = page.getByRole("button", { name: /Add shipment/i });
952
+ const buttonCount = await addShipmentButtons.count();
953
+ for (let index = buttonCount - 1; index >= 0; index -= 1) {
954
+ const button = addShipmentButtons.nth(index);
955
+ if (!await button.isVisible().catch(() => false)) continue;
956
+ if (!await button.isEnabled().catch(() => false)) continue;
957
+ await waitForStableVisibility(button, TEST_WAIT_TIMEOUT_MS).catch(() => {
958
+ });
959
+ await button.scrollIntoViewIfNeeded().catch(() => {
960
+ });
961
+ await button.click().catch(() => {
962
+ });
963
+ const visible = await dialog.waitFor({ state: "visible", timeout: 2500 }).then(() => true).catch(() => false);
964
+ if (visible) return true;
965
+ }
966
+ return false;
967
+ };
968
+ let dialogReady = false;
969
+ for (let attempt = 0; attempt < 2; attempt += 1) {
970
+ const opened = await openShipmentDialog();
971
+ if (!opened) break;
972
+ await dialog.getByText(/Loading shipments…|Loading shipments\.\.\./i).first().waitFor({ state: "hidden", timeout: 5e3 }).catch(() => {
973
+ });
974
+ const shipmentNumberInput2 = dialog.locator("input, textarea").first();
975
+ if (await shipmentNumberInput2.isVisible().catch(() => false)) {
976
+ await waitForStableVisibility(shipmentNumberInput2, TEST_WAIT_TIMEOUT_MS).catch(() => {
977
+ });
978
+ dialogReady = true;
979
+ break;
980
+ }
981
+ await dialog.getByRole("button", { name: /Close/i }).first().click().catch(() => {
982
+ });
983
+ await dialog.waitFor({ state: "hidden", timeout: 2e3 }).catch(() => {
984
+ });
985
+ }
986
+ if (!dialogReady) {
987
+ const added2 = await addShipmentViaApi(page, shipmentNumber, trackingNumber);
988
+ if (!added2) {
989
+ await openShipmentDialog();
990
+ const shipmentNumberInput2 = dialog.locator("input, textarea").first();
991
+ await waitForDialogFieldReady(dialog, shipmentNumberInput2, /Loading shipments…|Loading shipments\.\.\./i);
992
+ } else {
993
+ const shipmentLabel2 = page.getByText(new RegExp(`Shipment\\s+${escapeRegExp(shipmentNumber)}`, "i")).first();
994
+ const visible = await shipmentLabel2.waitFor({ state: "visible", timeout: TEST_WAIT_TIMEOUT_MS }).then(() => true).catch(() => false);
995
+ return { trackingNumber, shipmentNumber, added: visible };
996
+ }
997
+ }
998
+ const shipmentNumberInput = dialog.locator("input, textarea").first();
766
999
  await fillShipmentNumber(dialog, shipmentNumber);
767
1000
  const trackingInput = dialog.getByPlaceholder(/One per line or comma separated/i).first();
768
1001
  await waitForStableVisibility(trackingInput, 4e3).catch(() => {