@icure/api 8.11.0 → 8.13.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 (302) hide show
  1. package/icc-api/api/IccUserApi.d.ts +1 -1
  2. package/icc-api/api/IccUserApi.js +2 -2
  3. package/icc-api/api/IccUserApi.js.map +1 -1
  4. package/icc-api/model/HealthElement.d.ts +11 -0
  5. package/icc-api/model/HealthElement.js.map +1 -1
  6. package/icc-api/model/HealthElementAsserter.d.ts +33 -0
  7. package/icc-api/model/HealthElementAsserter.js +28 -0
  8. package/icc-api/model/HealthElementAsserter.js.map +1 -0
  9. package/icc-api/model/HealthElementQualifiedLink.d.ts +31 -0
  10. package/icc-api/model/HealthElementQualifiedLink.js +26 -0
  11. package/icc-api/model/HealthElementQualifiedLink.js.map +1 -0
  12. package/icc-api/model/models.d.ts +2 -0
  13. package/icc-api/model/models.js +2 -0
  14. package/icc-api/model/models.js.map +1 -1
  15. package/icc-x-api/filters/HealthElementByAssociationIdFilter.d.ts +23 -0
  16. package/icc-x-api/filters/HealthElementByAssociationIdFilter.js +30 -0
  17. package/icc-x-api/filters/HealthElementByAssociationIdFilter.js.map +1 -0
  18. package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.d.ts +24 -0
  19. package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.js +30 -0
  20. package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.js.map +1 -0
  21. package/icc-x-api/filters/filters.d.ts +2 -0
  22. package/icc-x-api/filters/filters.js +2 -0
  23. package/icc-x-api/filters/filters.js.map +1 -1
  24. package/icc-x-api/index.js +1 -1
  25. package/icc-x-api/index.js.map +1 -1
  26. package/package.json +1 -1
  27. package/test/benchmarks/lzma-benchmark.spec.d.ts +0 -1
  28. package/test/benchmarks/lzma-benchmark.spec.js +0 -131
  29. package/test/benchmarks/lzma-benchmark.spec.js.map +0 -1
  30. package/test/benchmarks/lzma-compat.spec.d.ts +0 -1
  31. package/test/benchmarks/lzma-compat.spec.js +0 -187
  32. package/test/benchmarks/lzma-compat.spec.js.map +0 -1
  33. package/test/benchmarks/playwright.config.d.ts +0 -2
  34. package/test/benchmarks/playwright.config.js +0 -18
  35. package/test/benchmarks/playwright.config.js.map +0 -1
  36. package/test/icc-api/api/IccAgendaApi.d.ts +0 -1
  37. package/test/icc-api/api/IccAgendaApi.js +0 -64
  38. package/test/icc-api/api/IccAgendaApi.js.map +0 -1
  39. package/test/icc-api/api/IccAnonymousAccessApi.d.ts +0 -1
  40. package/test/icc-api/api/IccAnonymousAccessApi.js +0 -58
  41. package/test/icc-api/api/IccAnonymousAccessApi.js.map +0 -1
  42. package/test/icc-api/api/IccCalendarItemApi.d.ts +0 -1
  43. package/test/icc-api/api/IccCalendarItemApi.js +0 -67
  44. package/test/icc-api/api/IccCalendarItemApi.js.map +0 -1
  45. package/test/icc-api/api/IccCalendarItemTypeApi.d.ts +0 -1
  46. package/test/icc-api/api/IccCalendarItemTypeApi.js +0 -96
  47. package/test/icc-api/api/IccCalendarItemTypeApi.js.map +0 -1
  48. package/test/icc-api/api/IccCodeApi.d.ts +0 -1
  49. package/test/icc-api/api/IccCodeApi.js +0 -38
  50. package/test/icc-api/api/IccCodeApi.js.map +0 -1
  51. package/test/icc-api/api/IccDocumentApi.d.ts +0 -1
  52. package/test/icc-api/api/IccDocumentApi.js +0 -199
  53. package/test/icc-api/api/IccDocumentApi.js.map +0 -1
  54. package/test/icc-api/api/IccGroupApi.d.ts +0 -1
  55. package/test/icc-api/api/IccGroupApi.js +0 -50
  56. package/test/icc-api/api/IccGroupApi.js.map +0 -1
  57. package/test/icc-api/api/IccKeywordApi.d.ts +0 -1
  58. package/test/icc-api/api/IccKeywordApi.js +0 -64
  59. package/test/icc-api/api/IccKeywordApi.js.map +0 -1
  60. package/test/icc-api/api/IccMedicalLocationApi.d.ts +0 -1
  61. package/test/icc-api/api/IccMedicalLocationApi.js +0 -64
  62. package/test/icc-api/api/IccMedicalLocationApi.js.map +0 -1
  63. package/test/icc-api/api/IccPlaceApi.d.ts +0 -1
  64. package/test/icc-api/api/IccPlaceApi.js +0 -64
  65. package/test/icc-api/api/IccPlaceApi.js.map +0 -1
  66. package/test/icc-api/api/IccRecoveryDataApi.d.ts +0 -1
  67. package/test/icc-api/api/IccRecoveryDataApi.js +0 -95
  68. package/test/icc-api/api/IccRecoveryDataApi.js.map +0 -1
  69. package/test/icc-api/api/IccRoleApi.d.ts +0 -1
  70. package/test/icc-api/api/IccRoleApi.js +0 -34
  71. package/test/icc-api/api/IccRoleApi.js.map +0 -1
  72. package/test/icc-api/api/IccUserApi.d.ts +0 -1
  73. package/test/icc-api/api/IccUserApi.js +0 -96
  74. package/test/icc-api/api/IccUserApi.js.map +0 -1
  75. package/test/icc-api/e2e/IccCalendarItemApi.d.ts +0 -1
  76. package/test/icc-api/e2e/IccCalendarItemApi.js +0 -46
  77. package/test/icc-api/e2e/IccCalendarItemApi.js.map +0 -1
  78. package/test/icc-api/model/modelHelpersTest.d.ts +0 -1
  79. package/test/icc-api/model/modelHelpersTest.js +0 -45
  80. package/test/icc-api/model/modelHelpersTest.js.map +0 -1
  81. package/test/icc-x-api/auth/group-switch-test.d.ts +0 -1
  82. package/test/icc-x-api/auth/group-switch-test.js +0 -81
  83. package/test/icc-x-api/auth/group-switch-test.js.map +0 -1
  84. package/test/icc-x-api/auth/jwt-concurrency-test.d.ts +0 -2
  85. package/test/icc-x-api/auth/jwt-concurrency-test.js +0 -112
  86. package/test/icc-x-api/auth/jwt-concurrency-test.js.map +0 -1
  87. package/test/icc-x-api/auth/jwt-provider-test.d.ts +0 -1
  88. package/test/icc-x-api/auth/jwt-provider-test.js +0 -197
  89. package/test/icc-x-api/auth/jwt-provider-test.js.map +0 -1
  90. package/test/icc-x-api/auth/smart-auth-provider-test.d.ts +0 -1
  91. package/test/icc-x-api/auth/smart-auth-provider-test.js +0 -224
  92. package/test/icc-x-api/auth/smart-auth-provider-test.js.map +0 -1
  93. package/test/icc-x-api/autofix-anonymity-test.d.ts +0 -1
  94. package/test/icc-x-api/autofix-anonymity-test.js +0 -122
  95. package/test/icc-x-api/autofix-anonymity-test.js.map +0 -1
  96. package/test/icc-x-api/confidential-entities-test.d.ts +0 -1
  97. package/test/icc-x-api/confidential-entities-test.js +0 -168
  98. package/test/icc-x-api/confidential-entities-test.js.map +0 -1
  99. package/test/icc-x-api/crud/comprehensive-crud-test.d.ts +0 -1
  100. package/test/icc-x-api/crud/comprehensive-crud-test.js +0 -276
  101. package/test/icc-x-api/crud/comprehensive-crud-test.js.map +0 -1
  102. package/test/icc-x-api/crud/entities-crud-test-interface.d.ts +0 -16
  103. package/test/icc-x-api/crud/entities-crud-test-interface.js +0 -407
  104. package/test/icc-x-api/crud/entities-crud-test-interface.js.map +0 -1
  105. package/test/icc-x-api/crypto/anonymous-delegations-test.d.ts +0 -1
  106. package/test/icc-x-api/crypto/anonymous-delegations-test.js +0 -587
  107. package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +0 -1
  108. package/test/icc-x-api/crypto/concurrency.d.ts +0 -1
  109. package/test/icc-x-api/crypto/concurrency.js +0 -35
  110. package/test/icc-x-api/crypto/concurrency.js.map +0 -1
  111. package/test/icc-x-api/crypto/crypto-utils.d.ts +0 -1
  112. package/test/icc-x-api/crypto/crypto-utils.js +0 -79
  113. package/test/icc-x-api/crypto/crypto-utils.js.map +0 -1
  114. package/test/icc-x-api/crypto/cryptoTest.d.ts +0 -2
  115. package/test/icc-x-api/crypto/cryptoTest.js +0 -402
  116. package/test/icc-x-api/crypto/cryptoTest.js.map +0 -1
  117. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.d.ts +0 -1
  118. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js +0 -166
  119. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +0 -1
  120. package/test/icc-x-api/crypto/exchange-data-manager-test.d.ts +0 -1
  121. package/test/icc-x-api/crypto/exchange-data-manager-test.js +0 -674
  122. package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +0 -1
  123. package/test/icc-x-api/crypto/full-crypto-test.d.ts +0 -1
  124. package/test/icc-x-api/crypto/full-crypto-test.js +0 -454
  125. package/test/icc-x-api/crypto/full-crypto-test.js.map +0 -1
  126. package/test/icc-x-api/crypto/legacy-metadata-migration-test.d.ts +0 -1
  127. package/test/icc-x-api/crypto/legacy-metadata-migration-test.js +0 -379
  128. package/test/icc-x-api/crypto/legacy-metadata-migration-test.js.map +0 -1
  129. package/test/icc-x-api/crypto/secure-delegations-manager-test.d.ts +0 -1
  130. package/test/icc-x-api/crypto/secure-delegations-manager-test.js +0 -278
  131. package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +0 -1
  132. package/test/icc-x-api/crypto/shamir.d.ts +0 -2
  133. package/test/icc-x-api/crypto/shamir.js +0 -167
  134. package/test/icc-x-api/crypto/shamir.js.map +0 -1
  135. package/test/icc-x-api/crypto/share-deduplication-test.d.ts +0 -1
  136. package/test/icc-x-api/crypto/share-deduplication-test.js +0 -250
  137. package/test/icc-x-api/crypto/share-deduplication-test.js.map +0 -1
  138. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.d.ts +0 -1
  139. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js +0 -71
  140. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js.map +0 -1
  141. package/test/icc-x-api/crypto/soft-deleted-data-owners.d.ts +0 -2
  142. package/test/icc-x-api/crypto/soft-deleted-data-owners.js +0 -113
  143. package/test/icc-x-api/crypto/soft-deleted-data-owners.js.map +0 -1
  144. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.d.ts +0 -1
  145. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js +0 -246
  146. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js.map +0 -1
  147. package/test/icc-x-api/entity-with-attachments-api-test.d.ts +0 -1
  148. package/test/icc-x-api/entity-with-attachments-api-test.js +0 -142
  149. package/test/icc-x-api/entity-with-attachments-api-test.js.map +0 -1
  150. package/test/icc-x-api/filters/filters.d.ts +0 -1
  151. package/test/icc-x-api/filters/filters.js +0 -49
  152. package/test/icc-x-api/filters/filters.js.map +0 -1
  153. package/test/icc-x-api/filters/healthelement.d.ts +0 -1
  154. package/test/icc-x-api/filters/healthelement.js +0 -333
  155. package/test/icc-x-api/filters/healthelement.js.map +0 -1
  156. package/test/icc-x-api/icc-accesslog-x-api.d.ts +0 -1
  157. package/test/icc-x-api/icc-accesslog-x-api.js +0 -106
  158. package/test/icc-x-api/icc-accesslog-x-api.js.map +0 -1
  159. package/test/icc-x-api/icc-application-settings-x-api.d.ts +0 -1
  160. package/test/icc-x-api/icc-application-settings-x-api.js +0 -91
  161. package/test/icc-x-api/icc-application-settings-x-api.js.map +0 -1
  162. package/test/icc-x-api/icc-auth-api.d.ts +0 -1
  163. package/test/icc-x-api/icc-auth-api.js +0 -47
  164. package/test/icc-x-api/icc-auth-api.js.map +0 -1
  165. package/test/icc-x-api/icc-calendar-item-x-api.d.ts +0 -1
  166. package/test/icc-x-api/icc-calendar-item-x-api.js +0 -150
  167. package/test/icc-x-api/icc-calendar-item-x-api.js.map +0 -1
  168. package/test/icc-x-api/icc-code-x-api-test.d.ts +0 -1
  169. package/test/icc-x-api/icc-code-x-api-test.js +0 -74
  170. package/test/icc-x-api/icc-code-x-api-test.js.map +0 -1
  171. package/test/icc-x-api/icc-contact-x-api.d.ts +0 -1
  172. package/test/icc-x-api/icc-contact-x-api.js +0 -355
  173. package/test/icc-x-api/icc-contact-x-api.js.map +0 -1
  174. package/test/icc-x-api/icc-document-x-api.d.ts +0 -1
  175. package/test/icc-x-api/icc-document-x-api.js +0 -76
  176. package/test/icc-x-api/icc-document-x-api.js.map +0 -1
  177. package/test/icc-x-api/icc-form-x-api.d.ts +0 -1
  178. package/test/icc-x-api/icc-form-x-api.js +0 -413
  179. package/test/icc-x-api/icc-form-x-api.js.map +0 -1
  180. package/test/icc-x-api/icc-hcparty-x-api-test.d.ts +0 -1
  181. package/test/icc-x-api/icc-hcparty-x-api-test.js +0 -43
  182. package/test/icc-x-api/icc-hcparty-x-api-test.js.map +0 -1
  183. package/test/icc-x-api/icc-helement-x-api-test.d.ts +0 -1
  184. package/test/icc-x-api/icc-helement-x-api-test.js +0 -155
  185. package/test/icc-x-api/icc-helement-x-api-test.js.map +0 -1
  186. package/test/icc-x-api/icc-invoice-x-api.d.ts +0 -1
  187. package/test/icc-x-api/icc-invoice-x-api.js +0 -99
  188. package/test/icc-x-api/icc-invoice-x-api.js.map +0 -1
  189. package/test/icc-x-api/icc-maintenance-task-x-api-test.d.ts +0 -1
  190. package/test/icc-x-api/icc-maintenance-task-x-api-test.js +0 -222
  191. package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +0 -1
  192. package/test/icc-x-api/icc-message-x-api.d.ts +0 -1
  193. package/test/icc-x-api/icc-message-x-api.js +0 -54
  194. package/test/icc-x-api/icc-message-x-api.js.map +0 -1
  195. package/test/icc-x-api/icc-patient-x-api-test.d.ts +0 -1
  196. package/test/icc-x-api/icc-patient-x-api-test.js +0 -209
  197. package/test/icc-x-api/icc-patient-x-api-test.js.map +0 -1
  198. package/test/icc-x-api/icc-recovery-x-api.d.ts +0 -1
  199. package/test/icc-x-api/icc-recovery-x-api.js +0 -175
  200. package/test/icc-x-api/icc-recovery-x-api.js.map +0 -1
  201. package/test/icc-x-api/icc-topic-x-api.d.ts +0 -1
  202. package/test/icc-x-api/icc-topic-x-api.js +0 -269
  203. package/test/icc-x-api/icc-topic-x-api.js.map +0 -1
  204. package/test/icc-x-api/icc-user-x-api-test.d.ts +0 -1
  205. package/test/icc-x-api/icc-user-x-api-test.js +0 -99
  206. package/test/icc-x-api/icc-user-x-api-test.js.map +0 -1
  207. package/test/icc-x-api/keyless-api.d.ts +0 -1
  208. package/test/icc-x-api/keyless-api.js +0 -125
  209. package/test/icc-x-api/keyless-api.js.map +0 -1
  210. package/test/icc-x-api/patient-user.d.ts +0 -2
  211. package/test/icc-x-api/patient-user.js +0 -103
  212. package/test/icc-x-api/patient-user.js.map +0 -1
  213. package/test/icc-x-api/storage/storage.d.ts +0 -1
  214. package/test/icc-x-api/storage/storage.js +0 -48
  215. package/test/icc-x-api/storage/storage.js.map +0 -1
  216. package/test/icc-x-api/test-api-no-parent.d.ts +0 -1
  217. package/test/icc-x-api/test-api-no-parent.js +0 -79
  218. package/test/icc-x-api/test-api-no-parent.js.map +0 -1
  219. package/test/icc-x-api/test-legacy-data-support.d.ts +0 -1
  220. package/test/icc-x-api/test-legacy-data-support.js +0 -375
  221. package/test/icc-x-api/test-legacy-data-support.js.map +0 -1
  222. package/test/icc-x-api/utils/date-encode-test.d.ts +0 -1
  223. package/test/icc-x-api/utils/date-encode-test.js +0 -150
  224. package/test/icc-x-api/utils/date-encode-test.js.map +0 -1
  225. package/test/icc-x-api/utils/graph-test.d.ts +0 -1
  226. package/test/icc-x-api/utils/graph-test.js +0 -54
  227. package/test/icc-x-api/utils/graph-test.js.map +0 -1
  228. package/test/icc-x-api/utils/lru-temporised-async-cache-test.d.ts +0 -1
  229. package/test/icc-x-api/utils/lru-temporised-async-cache-test.js +0 -364
  230. package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +0 -1
  231. package/test/icc-x-api/utils/lzma-benchmark-test.d.ts +0 -1
  232. package/test/icc-x-api/utils/lzma-benchmark-test.js +0 -132
  233. package/test/icc-x-api/utils/lzma-benchmark-test.js.map +0 -1
  234. package/test/icc-x-api/utils/lzma-compat-test.d.ts +0 -1
  235. package/test/icc-x-api/utils/lzma-compat-test.js +0 -218
  236. package/test/icc-x-api/utils/lzma-compat-test.js.map +0 -1
  237. package/test/icc-x-api/utils/mutex-test.d.ts +0 -1
  238. package/test/icc-x-api/utils/mutex-test.js +0 -114
  239. package/test/icc-x-api/utils/mutex-test.js.map +0 -1
  240. package/test/icc-x-api/utils/to-moment-test.d.ts +0 -1
  241. package/test/icc-x-api/utils/to-moment-test.js +0 -110
  242. package/test/icc-x-api/utils/to-moment-test.js.map +0 -1
  243. package/test/support/CSM-185.d.ts +0 -1
  244. package/test/support/CSM-185.js +0 -124
  245. package/test/support/CSM-185.js.map +0 -1
  246. package/test/support/CSM-243.d.ts +0 -1
  247. package/test/support/CSM-243.js +0 -120
  248. package/test/support/CSM-243.js.map +0 -1
  249. package/test/support/CSM-543.d.ts +0 -1
  250. package/test/support/CSM-543.js +0 -164
  251. package/test/support/CSM-543.js.map +0 -1
  252. package/test/support/CSM-729.d.ts +0 -1
  253. package/test/support/CSM-729.js +0 -225
  254. package/test/support/CSM-729.js.map +0 -1
  255. package/test/support/CSM-814.d.ts +0 -1
  256. package/test/support/CSM-814.js +0 -475
  257. package/test/support/CSM-814.js.map +0 -1
  258. package/test/support/CSM-87.d.ts +0 -0
  259. package/test/support/CSM-87.js +0 -21
  260. package/test/support/CSM-87.js.map +0 -1
  261. package/test/support/CSM-93.d.ts +0 -1
  262. package/test/support/CSM-93.js +0 -112
  263. package/test/support/CSM-93.js.map +0 -1
  264. package/test/utils/FakeDataOwnerApi.d.ts +0 -32
  265. package/test/utils/FakeDataOwnerApi.js +0 -136
  266. package/test/utils/FakeDataOwnerApi.js.map +0 -1
  267. package/test/utils/FakeEncryptionKeysManager.d.ts +0 -36
  268. package/test/utils/FakeEncryptionKeysManager.js +0 -97
  269. package/test/utils/FakeEncryptionKeysManager.js.map +0 -1
  270. package/test/utils/FakeExchangeDataApi.d.ts +0 -32
  271. package/test/utils/FakeExchangeDataApi.js +0 -92
  272. package/test/utils/FakeExchangeDataApi.js.map +0 -1
  273. package/test/utils/FakeExchangeDataManager.d.ts +0 -48
  274. package/test/utils/FakeExchangeDataManager.js +0 -82
  275. package/test/utils/FakeExchangeDataManager.js.map +0 -1
  276. package/test/utils/FakeExchangeDataMapManager.d.ts +0 -12
  277. package/test/utils/FakeExchangeDataMapManager.js +0 -38
  278. package/test/utils/FakeExchangeDataMapManager.js.map +0 -1
  279. package/test/utils/FakeGenericApi.d.ts +0 -16
  280. package/test/utils/FakeGenericApi.js +0 -65
  281. package/test/utils/FakeGenericApi.js.map +0 -1
  282. package/test/utils/KeylessCryptoStrategies.d.ts +0 -23
  283. package/test/utils/KeylessCryptoStrategies.js +0 -26
  284. package/test/utils/KeylessCryptoStrategies.js.map +0 -1
  285. package/test/utils/TestApi.d.ts +0 -3
  286. package/test/utils/TestApi.js +0 -30
  287. package/test/utils/TestApi.js.map +0 -1
  288. package/test/utils/TestCollectionUtils.d.ts +0 -1
  289. package/test/utils/TestCollectionUtils.js +0 -310
  290. package/test/utils/TestCollectionUtils.js.map +0 -1
  291. package/test/utils/TestCryptoStrategies.d.ts +0 -42
  292. package/test/utils/TestCryptoStrategies.js +0 -80
  293. package/test/utils/TestCryptoStrategies.js.map +0 -1
  294. package/test/utils/TestStorage.d.ts +0 -23
  295. package/test/utils/TestStorage.js +0 -61
  296. package/test/utils/TestStorage.js.map +0 -1
  297. package/test/utils/roles.d.ts +0 -14
  298. package/test/utils/roles.js +0 -345
  299. package/test/utils/roles.js.map +0 -1
  300. package/test/utils/test_utils.d.ts +0 -87
  301. package/test/utils/test_utils.js +0 -452
  302. package/test/utils/test_utils.js.map +0 -1
@@ -1,131 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const test_1 = require("@playwright/test");
13
- const http = require("http");
14
- const fs = require("fs");
15
- const path = require("path");
16
- const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
17
- const MIME_TYPES = {
18
- '.html': 'text/html',
19
- '.js': 'application/javascript',
20
- '.wasm': 'application/wasm',
21
- '.css': 'text/css',
22
- };
23
- function startServer() {
24
- return new Promise((resolve) => {
25
- const server = http.createServer((req, res) => {
26
- var _a;
27
- const urlPath = ((_a = req.url) === null || _a === void 0 ? void 0 : _a.split('?')[0]) || '/';
28
- const filePath = path.join(PROJECT_ROOT, urlPath);
29
- if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) {
30
- res.writeHead(404);
31
- res.end('Not found');
32
- return;
33
- }
34
- const ext = path.extname(filePath);
35
- const contentType = MIME_TYPES[ext] || 'application/octet-stream';
36
- res.writeHead(200, {
37
- 'Content-Type': contentType,
38
- 'Cross-Origin-Opener-Policy': 'same-origin',
39
- 'Cross-Origin-Embedder-Policy': 'require-corp',
40
- });
41
- fs.createReadStream(filePath).pipe(res);
42
- });
43
- server.listen(0, () => {
44
- const addr = server.address();
45
- const port = typeof addr === 'object' && addr ? addr.port : 0;
46
- resolve({ server, port });
47
- });
48
- });
49
- }
50
- const IMPLS = ['jsInline', 'jsWorker', 'wasm'];
51
- const IMPL_LABELS = {
52
- jsInline: 'JS Inline (LZMA1)',
53
- jsWorker: 'JS Worker (LZMA1)',
54
- wasm: 'WASM (LZMA2/XZ)',
55
- };
56
- function fmtMs(ms) {
57
- if (ms >= 1000)
58
- return (ms / 1000).toFixed(2) + ' s';
59
- return ms.toFixed(2) + ' ms';
60
- }
61
- function pad(s, w) {
62
- return s.length >= w ? s : ' '.repeat(w - s.length) + s;
63
- }
64
- const WORKER_FILES_DIR = path.join(__dirname, 'worker-files');
65
- (0, test_1.test)('LZMA benchmark: JS Inline vs JS Worker vs WASM', (_a) => __awaiter(void 0, [_a], void 0, function* ({ page }) {
66
- test_1.test.setTimeout(3600000); // 60 minutes for 128MB payloads
67
- const { server, port } = yield startServer();
68
- try {
69
- yield page.goto(`http://localhost:${port}/test/benchmarks/lzma-benchmark.html`);
70
- yield page.waitForFunction(() => window.__benchmarkResults != null, null, { timeout: 3300000 });
71
- const results = yield page.evaluate(() => window.__benchmarkResults);
72
- // Save test files to worker-files directory (skip large payloads with no exported files)
73
- fs.mkdirSync(WORKER_FILES_DIR, { recursive: true });
74
- for (const r of results) {
75
- if (!r.files)
76
- continue;
77
- fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.bin`), Buffer.from(r.files.reference, 'base64'));
78
- fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.lzma`), Buffer.from(r.files.lzmaJs, 'base64'));
79
- fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.xz`), Buffer.from(r.files.lzmaWasm, 'base64'));
80
- console.log(`Saved ${r.tag}.bin, ${r.tag}.lzma, ${r.tag}.xz to ${WORKER_FILES_DIR}`);
81
- }
82
- // Print results
83
- const W = 130;
84
- console.log('\n' + '='.repeat(W));
85
- console.log('LZMA Benchmark: JS Inline vs JS Worker vs WASM');
86
- console.log('='.repeat(W));
87
- for (const r of results) {
88
- console.log(`\n--- ${r.size} (${r.originalBytes.toLocaleString()} bytes)${r.skipJs ? ' [WASM only]' : ''} ---\n`);
89
- const activeImpls = r.skipJs ? ['wasm'] : IMPLS;
90
- for (const op of ['compress', 'decompress']) {
91
- console.log(` ${op.toUpperCase()}:`);
92
- console.log(` ${'Implementation'.padEnd(22)} ${pad('Median', 12)} ${pad('Mean', 12)} ${pad('Min', 12)} ${pad('Max', 12)} ${pad('P95', 12)} ${pad('Size', 10)} ${pad('Ratio', 8)} ${pad('OK', 4)}`);
93
- console.log(' ' + '-'.repeat(W - 4));
94
- const medians = activeImpls.map((impl) => r[impl][op].median);
95
- const fastestMedian = Math.min(...medians);
96
- for (const impl of activeImpls) {
97
- const s = r[impl][op];
98
- const isFastest = s.median === fastestMedian;
99
- const marker = isFastest ? ' *' : ' ';
100
- const compSize = op === 'compress' ? String(r[impl].compressedSize) : '-';
101
- const ratio = op === 'compress' ? r[impl].ratio + '%' : '-';
102
- console.log(` ${marker}${IMPL_LABELS[impl].padEnd(22)} ${pad(fmtMs(s.median), 12)} ${pad(fmtMs(s.mean), 12)} ${pad(fmtMs(s.min), 12)} ${pad(fmtMs(s.max), 12)} ${pad(fmtMs(s.p95), 12)} ${pad(compSize, 10)} ${pad(ratio, 8)} ${pad(r[impl].correct ? 'OK' : 'FAIL', 4)}`);
103
- }
104
- if (!r.skipJs) {
105
- const jsInlineMs = r.jsInline[op].median;
106
- const jsWorkerMs = r.jsWorker[op].median;
107
- const wasmMs = r.wasm[op].median;
108
- console.log('');
109
- console.log(` Speedup vs JS Inline: Worker ${(jsInlineMs / jsWorkerMs).toFixed(1)}x | WASM ${(jsInlineMs / wasmMs).toFixed(1)}x`);
110
- console.log(` Speedup vs JS Worker: WASM ${(jsWorkerMs / wasmMs).toFixed(1)}x`);
111
- }
112
- console.log('');
113
- }
114
- }
115
- console.log('='.repeat(W));
116
- console.log('* = fastest for that operation/size');
117
- console.log('='.repeat(W));
118
- // Assertions
119
- for (const r of results) {
120
- if (!r.skipJs) {
121
- (0, test_1.expect)(r.jsInline.correct).toBe(true);
122
- (0, test_1.expect)(r.jsWorker.correct).toBe(true);
123
- }
124
- (0, test_1.expect)(r.wasm.correct).toBe(true);
125
- }
126
- }
127
- finally {
128
- server.close();
129
- }
130
- }));
131
- //# sourceMappingURL=lzma-benchmark.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lzma-benchmark.spec.js","sourceRoot":"","sources":["../../../test/benchmarks/lzma-benchmark.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test'\nimport * as http from 'http'\nimport * as fs from 'fs'\nimport * as path from 'path'\n\nconst PROJECT_ROOT = path.resolve(__dirname, '..', '..')\n\nconst MIME_TYPES: Record<string, string> = {\n '.html': 'text/html',\n '.js': 'application/javascript',\n '.wasm': 'application/wasm',\n '.css': 'text/css',\n}\n\nfunction startServer(): Promise<{ server: http.Server; port: number }> {\n return new Promise((resolve) => {\n const server = http.createServer((req, res) => {\n const urlPath = req.url?.split('?')[0] || '/'\n const filePath = path.join(PROJECT_ROOT, urlPath)\n\n if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) {\n res.writeHead(404)\n res.end('Not found')\n return\n }\n\n const ext = path.extname(filePath)\n const contentType = MIME_TYPES[ext] || 'application/octet-stream'\n\n res.writeHead(200, {\n 'Content-Type': contentType,\n 'Cross-Origin-Opener-Policy': 'same-origin',\n 'Cross-Origin-Embedder-Policy': 'require-corp',\n })\n fs.createReadStream(filePath).pipe(res)\n })\n\n server.listen(0, () => {\n const addr = server.address()\n const port = typeof addr === 'object' && addr ? addr.port : 0\n resolve({ server, port })\n })\n })\n}\n\ninterface Stats {\n median: number\n mean: number\n min: number\n max: number\n p95: number\n}\n\ninterface ImplResult {\n compress: Stats\n decompress: Stats\n compressedSize: number\n ratio: string\n correct: boolean\n}\n\ninterface BenchmarkResult {\n size: string\n tag: string\n skipJs: boolean\n originalBytes: number\n files: {\n reference: string // base64\n lzmaJs: string // base64\n lzmaWasm: string // base64\n } | null\n jsInline: ImplResult\n jsWorker: ImplResult\n wasm: ImplResult\n}\n\nconst IMPLS = ['jsInline', 'jsWorker', 'wasm'] as const\nconst IMPL_LABELS: Record<string, string> = {\n jsInline: 'JS Inline (LZMA1)',\n jsWorker: 'JS Worker (LZMA1)',\n wasm: 'WASM (LZMA2/XZ)',\n}\n\nfunction fmtMs(ms: number): string {\n if (ms >= 1000) return (ms / 1000).toFixed(2) + ' s'\n return ms.toFixed(2) + ' ms'\n}\n\nfunction pad(s: string, w: number): string {\n return s.length >= w ? s : ' '.repeat(w - s.length) + s\n}\n\nconst WORKER_FILES_DIR = path.join(__dirname, 'worker-files')\n\ntest('LZMA benchmark: JS Inline vs JS Worker vs WASM', async ({ page }) => {\n test.setTimeout(3_600_000) // 60 minutes for 128MB payloads\n\n const { server, port } = await startServer()\n\n try {\n await page.goto(`http://localhost:${port}/test/benchmarks/lzma-benchmark.html`)\n\n await page.waitForFunction(() => (window as any).__benchmarkResults != null, null, { timeout: 3_300_000 })\n\n const results: BenchmarkResult[] = await page.evaluate(() => (window as any).__benchmarkResults)\n\n // Save test files to worker-files directory (skip large payloads with no exported files)\n fs.mkdirSync(WORKER_FILES_DIR, { recursive: true })\n for (const r of results) {\n if (!r.files) continue\n fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.bin`), Buffer.from(r.files.reference, 'base64'))\n fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.lzma`), Buffer.from(r.files.lzmaJs, 'base64'))\n fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.xz`), Buffer.from(r.files.lzmaWasm, 'base64'))\n console.log(`Saved ${r.tag}.bin, ${r.tag}.lzma, ${r.tag}.xz to ${WORKER_FILES_DIR}`)\n }\n\n // Print results\n const W = 130\n console.log('\\n' + '='.repeat(W))\n console.log('LZMA Benchmark: JS Inline vs JS Worker vs WASM')\n console.log('='.repeat(W))\n\n for (const r of results) {\n console.log(`\\n--- ${r.size} (${r.originalBytes.toLocaleString()} bytes)${r.skipJs ? ' [WASM only]' : ''} ---\\n`)\n\n const activeImpls = r.skipJs ? (['wasm'] as const) : IMPLS\n\n for (const op of ['compress', 'decompress'] as const) {\n console.log(` ${op.toUpperCase()}:`)\n console.log(\n ` ${'Implementation'.padEnd(22)} ${pad('Median', 12)} ${pad('Mean', 12)} ${pad('Min', 12)} ${pad('Max', 12)} ${pad('P95', 12)} ${pad('Size', 10)} ${pad('Ratio', 8)} ${pad('OK', 4)}`\n )\n console.log(' ' + '-'.repeat(W - 4))\n\n const medians = activeImpls.map((impl) => r[impl][op].median)\n const fastestMedian = Math.min(...medians)\n\n for (const impl of activeImpls) {\n const s = r[impl][op]\n const isFastest = s.median === fastestMedian\n const marker = isFastest ? ' *' : ' '\n const compSize = op === 'compress' ? String(r[impl].compressedSize) : '-'\n const ratio = op === 'compress' ? r[impl].ratio + '%' : '-'\n console.log(\n ` ${marker}${IMPL_LABELS[impl].padEnd(22)} ${pad(fmtMs(s.median), 12)} ${pad(fmtMs(s.mean), 12)} ${pad(fmtMs(s.min), 12)} ${pad(fmtMs(s.max), 12)} ${pad(fmtMs(s.p95), 12)} ${pad(compSize, 10)} ${pad(ratio, 8)} ${pad(r[impl].correct ? 'OK' : 'FAIL', 4)}`\n )\n }\n\n if (!r.skipJs) {\n const jsInlineMs = r.jsInline[op].median\n const jsWorkerMs = r.jsWorker[op].median\n const wasmMs = r.wasm[op].median\n\n console.log('')\n console.log(` Speedup vs JS Inline: Worker ${(jsInlineMs / jsWorkerMs).toFixed(1)}x | WASM ${(jsInlineMs / wasmMs).toFixed(1)}x`)\n console.log(` Speedup vs JS Worker: WASM ${(jsWorkerMs / wasmMs).toFixed(1)}x`)\n }\n console.log('')\n }\n }\n\n console.log('='.repeat(W))\n console.log('* = fastest for that operation/size')\n console.log('='.repeat(W))\n\n // Assertions\n for (const r of results) {\n if (!r.skipJs) {\n expect(r.jsInline.correct).toBe(true)\n expect(r.jsWorker.correct).toBe(true)\n }\n expect(r.wasm.correct).toBe(true)\n }\n } finally {\n server.close()\n }\n})\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,187 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const test_1 = require("@playwright/test");
13
- const http = require("http");
14
- const fs = require("fs");
15
- const path = require("path");
16
- const child_process_1 = require("child_process");
17
- const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
18
- const REF_SIZE = 32 * 1024;
19
- const MIME_TYPES = {
20
- '.html': 'text/html',
21
- '.js': 'application/javascript',
22
- '.wasm': 'application/wasm',
23
- };
24
- function startServer() {
25
- return new Promise((resolve) => {
26
- const server = http.createServer((req, res) => {
27
- var _a;
28
- const urlPath = ((_a = req.url) === null || _a === void 0 ? void 0 : _a.split('?')[0]) || '/';
29
- const filePath = path.join(PROJECT_ROOT, urlPath);
30
- if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) {
31
- res.writeHead(404);
32
- res.end('Not found');
33
- return;
34
- }
35
- const ext = path.extname(filePath);
36
- res.writeHead(200, {
37
- 'Content-Type': MIME_TYPES[ext] || 'application/octet-stream',
38
- 'Cross-Origin-Opener-Policy': 'same-origin',
39
- 'Cross-Origin-Embedder-Policy': 'require-corp',
40
- });
41
- fs.createReadStream(filePath).pipe(res);
42
- });
43
- server.listen(0, () => {
44
- const addr = server.address();
45
- resolve({ server, port: typeof addr === 'object' && addr ? addr.port : 0 });
46
- });
47
- });
48
- }
49
- function generateReferenceData() {
50
- const words = ['patient', 'contact', 'healthcare', 'delegation', 'encrypted', 'document', 'service', 'invoice'];
51
- const lines = [];
52
- let len = 0;
53
- let i = 0;
54
- while (len < REF_SIZE) {
55
- const line = `${i}: ${words[i % words.length]} id=${Math.random().toString(36).slice(2)} ts=${Date.now()} value=${Math.random()}\n`;
56
- lines.push(line);
57
- len += line.length;
58
- i++;
59
- }
60
- return Buffer.from(lines.join('').slice(0, REF_SIZE), 'utf-8');
61
- }
62
- function xzCompress(data) {
63
- const tmpIn = path.join(require('os').tmpdir(), `lzma-compat-ref-${Date.now()}.bin`);
64
- fs.writeFileSync(tmpIn, data);
65
- try {
66
- return (0, child_process_1.execFileSync)('xz', ['--compress', '-6', '--stdout', tmpIn]);
67
- }
68
- finally {
69
- fs.unlinkSync(tmpIn);
70
- }
71
- }
72
- function xzDecompress(data, format = 'auto') {
73
- const tmpIn = path.join(require('os').tmpdir(), `lzma-compat-dec-${Date.now()}.bin`);
74
- fs.writeFileSync(tmpIn, data);
75
- try {
76
- return (0, child_process_1.execFileSync)('xz', ['--decompress', `--format=${format}`, '--stdout', tmpIn]);
77
- }
78
- catch (_a) {
79
- return null;
80
- }
81
- finally {
82
- fs.unlinkSync(tmpIn);
83
- }
84
- }
85
- (0, test_1.test)('Compression compatibility matrix', (_a) => __awaiter(void 0, [_a], void 0, function* ({ page }) {
86
- test_1.test.setTimeout(60000);
87
- const { server, port } = yield startServer();
88
- try {
89
- yield page.goto(`http://localhost:${port}/test/benchmarks/lzma-compat.html`);
90
- yield page.waitForFunction(() => window.__ready === true, null, { timeout: 30000 });
91
- // Generate reference data
92
- const refData = generateReferenceData();
93
- const refArray = Array.from(refData);
94
- // --- Compress with all three producers ---
95
- // LZMA-JS (LZMA1 .lzma format)
96
- const lzmaJsCompressed = yield page.evaluate((data) => __awaiter(void 0, void 0, void 0, function* () {
97
- return yield window.lzmaJsCompress(new Uint8Array(data));
98
- }), refArray);
99
- // LZMA-WASM (LZMA2 .xz format)
100
- const lzmaWasmCompressed = yield page.evaluate((data) => {
101
- return window.lzmaWasmCompress(data);
102
- }, refArray);
103
- // xz CLI (.xz format)
104
- const xzCompressed = xzCompress(refData);
105
- const compressed = {
106
- 'LZMA-JS': { data: lzmaJsCompressed, size: lzmaJsCompressed.length },
107
- 'LZMA-WASM': { data: lzmaWasmCompressed, size: lzmaWasmCompressed.length },
108
- 'xz CLI': { data: Array.from(xzCompressed), size: xzCompressed.length },
109
- };
110
- // --- Try all 9 decompression combinations ---
111
- const producers = ['LZMA-JS', 'LZMA-WASM', 'xz CLI'];
112
- const matrix = {};
113
- for (const producer of producers) {
114
- matrix[producer] = {};
115
- const compData = compressed[producer].data;
116
- // Decompress with LZMA-JS
117
- try {
118
- const result = yield page.evaluate((data) => __awaiter(void 0, void 0, void 0, function* () {
119
- return yield window.lzmaJsDecompress(data);
120
- }), compData);
121
- const matches = result.length === refArray.length && result.every((v, i) => v === refArray[i]);
122
- matrix[producer]['LZMA-JS'] = { success: true, matchesOriginal: matches };
123
- }
124
- catch (e) {
125
- matrix[producer]['LZMA-JS'] = { success: false, error: e.message, matchesOriginal: false };
126
- }
127
- // Decompress with LZMA-WASM
128
- try {
129
- const result = yield page.evaluate((data) => {
130
- return window.lzmaWasmDecompress(data);
131
- }, compData);
132
- const matches = result.length === refArray.length && result.every((v, i) => v === refArray[i]);
133
- matrix[producer]['LZMA-WASM'] = { success: true, matchesOriginal: matches };
134
- }
135
- catch (e) {
136
- matrix[producer]['LZMA-WASM'] = { success: false, error: e.message, matchesOriginal: false };
137
- }
138
- // Decompress with xz CLI
139
- const xzResult = xzDecompress(Buffer.from(compData), 'auto');
140
- if (xzResult) {
141
- const matches = xzResult.length === refData.length && xzResult.equals(refData);
142
- matrix[producer]['xz CLI'] = { success: true, matchesOriginal: matches };
143
- }
144
- else {
145
- matrix[producer]['xz CLI'] = { success: false, error: 'xz exited with error', matchesOriginal: false };
146
- }
147
- }
148
- // --- Print the matrix ---
149
- const W = 90;
150
- console.log('\n' + '='.repeat(W));
151
- console.log('Compression Compatibility Matrix (32 KB reference file)');
152
- console.log('Rows = compressed by, Columns = decompressed by');
153
- console.log('='.repeat(W));
154
- // Header
155
- console.log(` ${'Compressed by'.padEnd(16)} | ${'LZMA-JS'.padEnd(20)} | ${'LZMA-WASM'.padEnd(20)} | ${'xz CLI'.padEnd(20)}`);
156
- console.log(' ' + '-'.repeat(W - 2));
157
- for (const producer of producers) {
158
- const cells = producers.map((decompressor) => {
159
- const cell = matrix[producer][decompressor];
160
- if (cell.success && cell.matchesOriginal)
161
- return 'OK';
162
- if (cell.success && !cell.matchesOriginal)
163
- return 'MISMATCH';
164
- return 'FAIL';
165
- });
166
- console.log(` ${producer.padEnd(16)} | ${cells[0].padEnd(20)} | ${cells[1].padEnd(20)} | ${cells[2].padEnd(20)}`);
167
- }
168
- console.log(' ' + '-'.repeat(W - 2));
169
- // Print compressed sizes
170
- console.log('\n Compressed sizes:');
171
- for (const producer of producers) {
172
- const c = compressed[producer];
173
- const ratio = ((c.size / REF_SIZE) * 100).toFixed(1);
174
- console.log(` ${producer.padEnd(16)}: ${c.size} bytes (${ratio}%)`);
175
- }
176
- console.log('\n' + '='.repeat(W));
177
- // --- Assertions: at minimum, each impl can decompress its own output ---
178
- for (const impl of producers) {
179
- (0, test_1.expect)(matrix[impl][impl].success).toBe(true);
180
- (0, test_1.expect)(matrix[impl][impl].matchesOriginal).toBe(true);
181
- }
182
- }
183
- finally {
184
- server.close();
185
- }
186
- }));
187
- //# sourceMappingURL=lzma-compat.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lzma-compat.spec.js","sourceRoot":"","sources":["../../../test/benchmarks/lzma-compat.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test'\nimport * as http from 'http'\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { execFileSync } from 'child_process'\n\nconst PROJECT_ROOT = path.resolve(__dirname, '..', '..')\nconst REF_SIZE = 32 * 1024\n\nconst MIME_TYPES: Record<string, string> = {\n '.html': 'text/html',\n '.js': 'application/javascript',\n '.wasm': 'application/wasm',\n}\n\nfunction startServer(): Promise<{ server: http.Server; port: number }> {\n return new Promise((resolve) => {\n const server = http.createServer((req, res) => {\n const urlPath = req.url?.split('?')[0] || '/'\n const filePath = path.join(PROJECT_ROOT, urlPath)\n\n if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) {\n res.writeHead(404)\n res.end('Not found')\n return\n }\n\n const ext = path.extname(filePath)\n res.writeHead(200, {\n 'Content-Type': MIME_TYPES[ext] || 'application/octet-stream',\n 'Cross-Origin-Opener-Policy': 'same-origin',\n 'Cross-Origin-Embedder-Policy': 'require-corp',\n })\n fs.createReadStream(filePath).pipe(res)\n })\n\n server.listen(0, () => {\n const addr = server.address()\n resolve({ server, port: typeof addr === 'object' && addr ? addr.port : 0 })\n })\n })\n}\n\nfunction generateReferenceData(): Buffer {\n const words = ['patient', 'contact', 'healthcare', 'delegation', 'encrypted', 'document', 'service', 'invoice']\n const lines: string[] = []\n let len = 0\n let i = 0\n while (len < REF_SIZE) {\n const line = `${i}: ${words[i % words.length]} id=${Math.random().toString(36).slice(2)} ts=${Date.now()} value=${Math.random()}\\n`\n lines.push(line)\n len += line.length\n i++\n }\n return Buffer.from(lines.join('').slice(0, REF_SIZE), 'utf-8')\n}\n\nfunction xzCompress(data: Buffer): Buffer {\n const tmpIn = path.join(require('os').tmpdir(), `lzma-compat-ref-${Date.now()}.bin`)\n fs.writeFileSync(tmpIn, data)\n try {\n return execFileSync('xz', ['--compress', '-6', '--stdout', tmpIn])\n } finally {\n fs.unlinkSync(tmpIn)\n }\n}\n\nfunction xzDecompress(data: Buffer, format: string = 'auto'): Buffer | null {\n const tmpIn = path.join(require('os').tmpdir(), `lzma-compat-dec-${Date.now()}.bin`)\n fs.writeFileSync(tmpIn, data)\n try {\n return execFileSync('xz', ['--decompress', `--format=${format}`, '--stdout', tmpIn])\n } catch {\n return null\n } finally {\n fs.unlinkSync(tmpIn)\n }\n}\n\ntype Producer = 'LZMA-JS' | 'LZMA-WASM' | 'xz CLI'\ntype MatrixCell = { success: boolean; error?: string; matchesOriginal: boolean }\ntype Matrix = Record<Producer, Record<Producer, MatrixCell>>\n\ntest('Compression compatibility matrix', async ({ page }) => {\n test.setTimeout(60_000)\n\n const { server, port } = await startServer()\n\n try {\n await page.goto(`http://localhost:${port}/test/benchmarks/lzma-compat.html`)\n await page.waitForFunction(() => (window as any).__ready === true, null, { timeout: 30_000 })\n\n // Generate reference data\n const refData = generateReferenceData()\n const refArray = Array.from(refData)\n\n // --- Compress with all three producers ---\n\n // LZMA-JS (LZMA1 .lzma format)\n const lzmaJsCompressed: number[] = await page.evaluate(async (data) => {\n return await (window as any).lzmaJsCompress(new Uint8Array(data))\n }, refArray)\n\n // LZMA-WASM (LZMA2 .xz format)\n const lzmaWasmCompressed: number[] = await page.evaluate((data) => {\n return (window as any).lzmaWasmCompress(data)\n }, refArray)\n\n // xz CLI (.xz format)\n const xzCompressed = xzCompress(refData)\n\n const compressed: Record<Producer, { data: number[]; size: number }> = {\n 'LZMA-JS': { data: lzmaJsCompressed, size: lzmaJsCompressed.length },\n 'LZMA-WASM': { data: lzmaWasmCompressed, size: lzmaWasmCompressed.length },\n 'xz CLI': { data: Array.from(xzCompressed), size: xzCompressed.length },\n }\n\n // --- Try all 9 decompression combinations ---\n\n const producers: Producer[] = ['LZMA-JS', 'LZMA-WASM', 'xz CLI']\n const matrix: Matrix = {} as Matrix\n\n for (const producer of producers) {\n matrix[producer] = {} as Record<Producer, MatrixCell>\n const compData = compressed[producer].data\n\n // Decompress with LZMA-JS\n try {\n const result: number[] = await page.evaluate(async (data) => {\n return await (window as any).lzmaJsDecompress(data)\n }, compData)\n const matches = result.length === refArray.length && result.every((v, i) => v === refArray[i])\n matrix[producer]['LZMA-JS'] = { success: true, matchesOriginal: matches }\n } catch (e: any) {\n matrix[producer]['LZMA-JS'] = { success: false, error: e.message, matchesOriginal: false }\n }\n\n // Decompress with LZMA-WASM\n try {\n const result: number[] = await page.evaluate((data) => {\n return (window as any).lzmaWasmDecompress(data)\n }, compData)\n const matches = result.length === refArray.length && result.every((v, i) => v === refArray[i])\n matrix[producer]['LZMA-WASM'] = { success: true, matchesOriginal: matches }\n } catch (e: any) {\n matrix[producer]['LZMA-WASM'] = { success: false, error: e.message, matchesOriginal: false }\n }\n\n // Decompress with xz CLI\n const xzResult = xzDecompress(Buffer.from(compData), 'auto')\n if (xzResult) {\n const matches = xzResult.length === refData.length && xzResult.equals(refData)\n matrix[producer]['xz CLI'] = { success: true, matchesOriginal: matches }\n } else {\n matrix[producer]['xz CLI'] = { success: false, error: 'xz exited with error', matchesOriginal: false }\n }\n }\n\n // --- Print the matrix ---\n const W = 90\n console.log('\\n' + '='.repeat(W))\n console.log('Compression Compatibility Matrix (32 KB reference file)')\n console.log('Rows = compressed by, Columns = decompressed by')\n console.log('='.repeat(W))\n\n // Header\n console.log(\n ` ${'Compressed by'.padEnd(16)} | ${'LZMA-JS'.padEnd(20)} | ${'LZMA-WASM'.padEnd(20)} | ${'xz CLI'.padEnd(20)}`\n )\n console.log(' ' + '-'.repeat(W - 2))\n\n for (const producer of producers) {\n const cells = producers.map((decompressor) => {\n const cell = matrix[producer][decompressor]\n if (cell.success && cell.matchesOriginal) return 'OK'\n if (cell.success && !cell.matchesOriginal) return 'MISMATCH'\n return 'FAIL'\n })\n console.log(\n ` ${producer.padEnd(16)} | ${cells[0].padEnd(20)} | ${cells[1].padEnd(20)} | ${cells[2].padEnd(20)}`\n )\n }\n\n console.log(' ' + '-'.repeat(W - 2))\n\n // Print compressed sizes\n console.log('\\n Compressed sizes:')\n for (const producer of producers) {\n const c = compressed[producer]\n const ratio = ((c.size / REF_SIZE) * 100).toFixed(1)\n console.log(` ${producer.padEnd(16)}: ${c.size} bytes (${ratio}%)`)\n }\n\n console.log('\\n' + '='.repeat(W))\n\n // --- Assertions: at minimum, each impl can decompress its own output ---\n for (const impl of producers) {\n expect(matrix[impl][impl].success).toBe(true)\n expect(matrix[impl][impl].matchesOriginal).toBe(true)\n }\n } finally {\n server.close()\n }\n})"]}
@@ -1,2 +0,0 @@
1
- declare const _default: import("@playwright/test").PlaywrightTestConfig<{}, {}>;
2
- export default _default;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const test_1 = require("@playwright/test");
4
- exports.default = (0, test_1.defineConfig)({
5
- testDir: '.',
6
- testMatch: '*.spec.ts',
7
- timeout: 300000,
8
- use: {
9
- headless: true,
10
- },
11
- projects: [
12
- {
13
- name: 'chromium',
14
- use: { browserName: 'chromium' },
15
- },
16
- ],
17
- });
18
- //# sourceMappingURL=playwright.config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playwright.config.js","sourceRoot":"","sources":["../../../test/benchmarks/playwright.config.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAE/C,kBAAe,IAAA,mBAAY,EAAC;IAC1B,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,MAAO;IAChB,GAAG,EAAE;QACH,QAAQ,EAAE,IAAI;KACf;IACD,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;SACjC;KACF;CACF,CAAC,CAAA","sourcesContent":["import { defineConfig } from '@playwright/test'\n\nexport default defineConfig({\n testDir: '.',\n testMatch: '*.spec.ts',\n timeout: 300_000,\n use: {\n headless: true,\n },\n projects: [\n {\n name: 'chromium',\n use: { browserName: 'chromium' },\n },\n ],\n})"]}
@@ -1 +0,0 @@
1
- import 'isomorphic-fetch';
@@ -1,64 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const crypto_1 = require("crypto");
13
- const test_utils_1 = require("../../utils/test_utils");
14
- require("isomorphic-fetch");
15
- var initMasterApi = test_utils_1.TestUtils.initMasterApi;
16
- const chai_1 = require("chai");
17
- const types_1 = require("@icure/test-setup/types");
18
- const Agenda_1 = require("../../../icc-api/model/Agenda");
19
- const mocha_1 = require("mocha");
20
- (0, test_utils_1.setLocalStorage)(fetch);
21
- let env;
22
- let agendaApi;
23
- const agendas = [];
24
- (0, mocha_1.describe)('IccAgendaApi', () => {
25
- before(function () {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- this.timeout(600000);
28
- const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
29
- env = yield initializer.execute((0, types_1.getEnvVariables)());
30
- agendaApi = (yield initMasterApi(env)).agendaApi;
31
- for (let i = 0; i < 10; i++) {
32
- const agenda = yield agendaApi.createAgenda(new Agenda_1.Agenda({
33
- id: (0, crypto_1.randomUUID)(),
34
- name: (0, crypto_1.randomUUID)(),
35
- }));
36
- agendas.push(agenda);
37
- }
38
- });
39
- });
40
- it('Should be able of getting the Agendas using the deprecated method', () => __awaiter(void 0, void 0, void 0, function* () {
41
- const page = yield agendaApi.getAgendas();
42
- page.forEach((it) => {
43
- const existingAgenda = agendas.find((a) => a.id === it.id);
44
- (0, chai_1.expect)(existingAgenda).not.to.be.undefined;
45
- (0, chai_1.expect)(it.rev).to.be.eq(existingAgenda.rev);
46
- });
47
- }));
48
- it('Should be able of getting the Agendas with pagination', () => __awaiter(void 0, void 0, void 0, function* () {
49
- var _a;
50
- const firstPage = yield agendaApi.getAgendasWithPagination(undefined, 6);
51
- (0, chai_1.expect)(firstPage.nextKeyPair).not.to.be.undefined;
52
- (0, chai_1.expect)(firstPage.rows).not.to.be.undefined;
53
- const secondPage = yield agendaApi.getAgendasWithPagination((_a = firstPage.nextKeyPair) === null || _a === void 0 ? void 0 : _a.startKeyDocId, 6);
54
- (0, chai_1.expect)(secondPage.nextKeyPair).to.be.undefined;
55
- (0, chai_1.expect)(secondPage.rows).not.to.be.undefined;
56
- const rows = firstPage.rows.concat(secondPage.rows);
57
- rows.forEach((it) => {
58
- const existingAgenda = agendas.find((a) => a.id === it.id);
59
- (0, chai_1.expect)(existingAgenda).not.to.be.undefined;
60
- (0, chai_1.expect)(it.rev).to.be.eq(existingAgenda.rev);
61
- });
62
- }));
63
- });
64
- //# sourceMappingURL=IccAgendaApi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IccAgendaApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccAgendaApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'crypto'\nimport { getEnvironmentInitializer, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport 'isomorphic-fetch'\nimport initMasterApi = TestUtils.initMasterApi\nimport { expect } from 'chai'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { IccAgendaApi } from '../../../icc-api'\nimport { Agenda } from '../../../icc-api/model/Agenda'\nimport { describe } from 'mocha'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\nlet agendaApi: IccAgendaApi\nconst agendas: Agenda[] = []\n\ndescribe('IccAgendaApi', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n agendaApi = (await initMasterApi(env)).agendaApi\n\n for (let i = 0; i < 10; i++) {\n const agenda = await agendaApi.createAgenda(\n new Agenda({\n id: randomUUID(),\n name: randomUUID(),\n })\n )\n agendas.push(agenda)\n }\n })\n\n it('Should be able of getting the Agendas using the deprecated method', async () => {\n const page = await agendaApi.getAgendas()\n page.forEach((it) => {\n const existingAgenda = agendas.find((a) => a.id === it.id)\n expect(existingAgenda).not.to.be.undefined\n expect(it.rev).to.be.eq(existingAgenda!!.rev!!)\n })\n })\n\n it('Should be able of getting the Agendas with pagination', async () => {\n const firstPage = await agendaApi.getAgendasWithPagination(undefined, 6)\n expect(firstPage.nextKeyPair).not.to.be.undefined\n expect(firstPage.rows).not.to.be.undefined\n\n const secondPage = await agendaApi.getAgendasWithPagination(firstPage.nextKeyPair?.startKeyDocId, 6)\n expect(secondPage.nextKeyPair).to.be.undefined\n expect(secondPage.rows).not.to.be.undefined\n\n const rows = firstPage.rows!!.concat(secondPage.rows!!)\n rows.forEach((it) => {\n const existingAgenda = agendas.find((a) => a.id === it.id)\n expect(existingAgenda).not.to.be.undefined\n expect(it.rev).to.be.eq(existingAgenda!!.rev!!)\n })\n })\n})\n"]}
@@ -1 +0,0 @@
1
- import 'isomorphic-fetch';
@@ -1,58 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const crypto_1 = require("crypto");
13
- const test_utils_1 = require("../../utils/test_utils");
14
- require("isomorphic-fetch");
15
- var initMasterApi = test_utils_1.TestUtils.initMasterApi;
16
- const chai_1 = require("chai");
17
- const types_1 = require("@icure/test-setup/types");
18
- const MedicalLocation_1 = require("../../../icc-api/model/MedicalLocation");
19
- (0, test_utils_1.setLocalStorage)(fetch);
20
- let env;
21
- (0, test_utils_1.describeNoLite)('Anonymous Access', () => {
22
- before(function () {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- this.timeout(600000);
25
- const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
26
- env = yield initializer.execute((0, types_1.getEnvVariables)());
27
- });
28
- });
29
- it('should be able to retrieve publicly available informations of medicalLocation', () => __awaiter(void 0, void 0, void 0, function* () {
30
- var _a, _b;
31
- const { medicalLocationApi, anonymousAccessApi } = yield initMasterApi(env);
32
- const createdMedicalLocation = yield medicalLocationApi.createMedicalLocation(new MedicalLocation_1.MedicalLocation({
33
- id: (0, crypto_1.randomUUID)(),
34
- name: 'private medicalLocation ' + (0, crypto_1.randomUUID)(),
35
- description: 'private medicalLocation description ' + (0, crypto_1.randomUUID)(),
36
- }));
37
- const createdMedicalLocationWithPublicInfo = yield medicalLocationApi.createMedicalLocation(new MedicalLocation_1.MedicalLocation({
38
- id: (0, crypto_1.randomUUID)(),
39
- name: 'public medicalLocation ' + (0, crypto_1.randomUUID)(),
40
- description: 'public medicalLocation description ' + (0, crypto_1.randomUUID)(),
41
- publicInformations: {
42
- address: 'public address',
43
- phone: '+32 2 555 55 55',
44
- },
45
- }));
46
- const groupId = env.testGroupId;
47
- const paginatedMedicalLocations = yield anonymousAccessApi.getPublicMedicalLocationsByGroupId(groupId);
48
- (0, chai_1.expect)((_a = paginatedMedicalLocations.rows) === null || _a === void 0 ? void 0 : _a.length).to.be.greaterThan(0);
49
- const publicMedicalLocationIds = (_b = paginatedMedicalLocations.rows) === null || _b === void 0 ? void 0 : _b.map((medicalLocation) => medicalLocation.id);
50
- (0, chai_1.expect)(publicMedicalLocationIds).to.include(createdMedicalLocationWithPublicInfo.id);
51
- (0, chai_1.expect)(publicMedicalLocationIds).not.to.include(createdMedicalLocation.id);
52
- const publicMedicalLocation = paginatedMedicalLocations.rows.find((medicalLocation) => medicalLocation.id === createdMedicalLocationWithPublicInfo.id);
53
- (0, chai_1.expect)(publicMedicalLocation).to.be.not.undefined;
54
- (0, chai_1.expect)(publicMedicalLocation === null || publicMedicalLocation === void 0 ? void 0 : publicMedicalLocation.name).to.be.undefined;
55
- (0, chai_1.expect)(publicMedicalLocation === null || publicMedicalLocation === void 0 ? void 0 : publicMedicalLocation.description).to.be.undefined;
56
- }));
57
- });
58
- //# sourceMappingURL=IccAnonymousAccessApi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IccAnonymousAccessApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccAnonymousAccessApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'crypto'\nimport { describeNoLite, getEnvironmentInitializer, isLiteTest, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport 'isomorphic-fetch'\nimport initMasterApi = TestUtils.initMasterApi\nimport { expect } from 'chai'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { MedicalLocation } from '../../../icc-api/model/MedicalLocation'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\n\ndescribeNoLite('Anonymous Access', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it('should be able to retrieve publicly available informations of medicalLocation', async () => {\n const { medicalLocationApi, anonymousAccessApi } = await initMasterApi(env)\n\n const createdMedicalLocation = await medicalLocationApi.createMedicalLocation(\n new MedicalLocation({\n id: randomUUID(),\n name: 'private medicalLocation ' + randomUUID(),\n description: 'private medicalLocation description ' + randomUUID(),\n })\n )\n\n const createdMedicalLocationWithPublicInfo = await medicalLocationApi.createMedicalLocation(\n new MedicalLocation({\n id: randomUUID(),\n name: 'public medicalLocation ' + randomUUID(),\n description: 'public medicalLocation description ' + randomUUID(),\n publicInformations: {\n address: 'public address',\n phone: '+32 2 555 55 55',\n },\n })\n )\n\n const groupId = env.testGroupId\n\n const paginatedMedicalLocations = await anonymousAccessApi.getPublicMedicalLocationsByGroupId(groupId)\n\n expect(paginatedMedicalLocations.rows?.length).to.be.greaterThan(0)\n\n const publicMedicalLocationIds = paginatedMedicalLocations.rows?.map((medicalLocation) => medicalLocation.id)\n expect(publicMedicalLocationIds).to.include(createdMedicalLocationWithPublicInfo.id)\n expect(publicMedicalLocationIds).not.to.include(createdMedicalLocation.id)\n\n const publicMedicalLocation: MedicalLocation = paginatedMedicalLocations.rows!.find(\n (medicalLocation) => medicalLocation.id === createdMedicalLocationWithPublicInfo.id\n )!\n expect(publicMedicalLocation).to.be.not.undefined\n expect(publicMedicalLocation?.name).to.be.undefined\n expect(publicMedicalLocation?.description).to.be.undefined\n })\n})\n"]}
@@ -1 +0,0 @@
1
- import 'isomorphic-fetch';