repluggable-core 1.302.65 → 1.302.67

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 (303) hide show
  1. package/__tests__/spec-setup.js +3 -0
  2. package/dist/es/{API.d.ts → src/API.d.ts} +46 -8
  3. package/dist/es/src/API.d.ts.map +1 -0
  4. package/dist/es/src/API.js +3 -0
  5. package/dist/es/src/API.js.map +1 -0
  6. package/dist/es/src/IterableWeakMap.d.ts +20 -0
  7. package/dist/es/src/IterableWeakMap.d.ts.map +1 -0
  8. package/dist/es/src/IterableWeakMap.js +92 -0
  9. package/dist/es/src/IterableWeakMap.js.map +1 -0
  10. package/dist/es/src/__internal.d.ts.map +1 -0
  11. package/dist/es/src/__internal.js +5 -0
  12. package/dist/es/src/__internal.js.map +1 -0
  13. package/dist/es/src/appHost.d.ts +7 -0
  14. package/dist/es/src/appHost.d.ts.map +1 -0
  15. package/dist/es/src/appHost.js +898 -0
  16. package/dist/es/src/appHost.js.map +1 -0
  17. package/dist/es/src/appHostServices.d.ts +12 -0
  18. package/dist/es/src/appHostServices.d.ts.map +1 -0
  19. package/dist/es/src/appHostServices.js +25 -0
  20. package/dist/es/src/appHostServices.js.map +1 -0
  21. package/dist/es/src/appHostUtils.d.ts +4 -0
  22. package/dist/es/src/appHostUtils.d.ts.map +1 -0
  23. package/dist/es/src/appHostUtils.js +8 -0
  24. package/dist/es/src/appHostUtils.js.map +1 -0
  25. package/dist/es/src/extensionSlot.d.ts +8 -0
  26. package/dist/es/src/extensionSlot.d.ts.map +1 -0
  27. package/dist/es/src/extensionSlot.js +59 -0
  28. package/dist/es/src/extensionSlot.js.map +1 -0
  29. package/dist/es/src/hot.d.ts +14 -0
  30. package/dist/es/src/hot.d.ts.map +1 -0
  31. package/dist/es/src/hot.js +52 -0
  32. package/dist/es/src/hot.js.map +1 -0
  33. package/dist/es/src/index.d.ts +11 -0
  34. package/dist/es/src/index.d.ts.map +1 -0
  35. package/dist/es/src/index.js +10 -0
  36. package/dist/es/src/index.js.map +1 -0
  37. package/dist/es/src/installedShellsState.d.ts +19 -0
  38. package/dist/es/src/installedShellsState.d.ts.map +1 -0
  39. package/dist/es/src/installedShellsState.js +30 -0
  40. package/dist/es/src/installedShellsState.js.map +1 -0
  41. package/dist/es/src/interceptAnyObject.d.ts +7 -0
  42. package/dist/es/src/interceptAnyObject.d.ts.map +1 -0
  43. package/dist/es/src/interceptAnyObject.js +21 -0
  44. package/dist/es/src/interceptAnyObject.js.map +1 -0
  45. package/dist/es/src/invokeSlotCallbacks.d.ts +3 -0
  46. package/dist/es/src/invokeSlotCallbacks.d.ts.map +1 -0
  47. package/dist/es/src/invokeSlotCallbacks.js +20 -0
  48. package/dist/es/src/invokeSlotCallbacks.js.map +1 -0
  49. package/dist/es/src/loggers.d.ts +4 -0
  50. package/dist/es/src/loggers.d.ts.map +1 -0
  51. package/dist/es/src/loggers.js +100 -0
  52. package/dist/es/src/loggers.js.map +1 -0
  53. package/dist/es/src/monitorAPI.d.ts +3 -0
  54. package/dist/es/src/monitorAPI.d.ts.map +1 -0
  55. package/dist/es/src/monitorAPI.js +53 -0
  56. package/dist/es/src/monitorAPI.js.map +1 -0
  57. package/dist/es/src/repluggableAppDebug/index.d.ts +2 -0
  58. package/dist/es/src/repluggableAppDebug/index.d.ts.map +1 -0
  59. package/dist/es/src/repluggableAppDebug/index.js +2 -0
  60. package/dist/es/src/repluggableAppDebug/index.js.map +1 -0
  61. package/dist/es/src/repluggableAppDebug/performanceDebugInfo.d.ts +15 -0
  62. package/dist/es/src/repluggableAppDebug/performanceDebugInfo.d.ts.map +1 -0
  63. package/dist/es/src/repluggableAppDebug/performanceDebugInfo.js +94 -0
  64. package/dist/es/src/repluggableAppDebug/performanceDebugInfo.js.map +1 -0
  65. package/dist/es/src/repluggableAppDebug/repluggableAppDebug.d.ts +24 -0
  66. package/dist/es/src/repluggableAppDebug/repluggableAppDebug.d.ts.map +1 -0
  67. package/dist/es/src/repluggableAppDebug/repluggableAppDebug.js +132 -0
  68. package/dist/es/src/repluggableAppDebug/repluggableAppDebug.js.map +1 -0
  69. package/dist/es/src/tarjanGraph.d.ts +27 -0
  70. package/dist/es/src/tarjanGraph.d.ts.map +1 -0
  71. package/dist/es/src/tarjanGraph.js +94 -0
  72. package/dist/es/src/tarjanGraph.js.map +1 -0
  73. package/dist/es/src/throttledStore.d.ts +32 -0
  74. package/dist/es/src/throttledStore.d.ts.map +1 -0
  75. package/dist/es/src/throttledStore.js +240 -0
  76. package/dist/es/src/throttledStore.js.map +1 -0
  77. package/dist/es/test/IterableWeakMap.spec.d.ts +2 -0
  78. package/dist/es/test/IterableWeakMap.spec.d.ts.map +1 -0
  79. package/dist/es/test/IterableWeakMap.spec.js +218 -0
  80. package/dist/es/test/IterableWeakMap.spec.js.map +1 -0
  81. package/dist/es/test/appHost.mock.d.ts +4 -0
  82. package/dist/es/test/appHost.mock.d.ts.map +1 -0
  83. package/dist/es/test/appHost.mock.js +54 -0
  84. package/dist/es/test/appHost.mock.js.map +1 -0
  85. package/dist/es/test/appHost.spec.d.ts +2 -0
  86. package/dist/es/test/appHost.spec.d.ts.map +1 -0
  87. package/dist/es/test/appHost.spec.js +1451 -0
  88. package/dist/es/test/appHost.spec.js.map +1 -0
  89. package/dist/es/test/installedShellsState.spec.d.ts +2 -0
  90. package/dist/es/test/installedShellsState.spec.d.ts.map +1 -0
  91. package/dist/es/test/installedShellsState.spec.js +28 -0
  92. package/dist/es/test/installedShellsState.spec.js.map +1 -0
  93. package/dist/es/test/interceptAnyObject.spec.d.ts +2 -0
  94. package/dist/es/test/interceptAnyObject.spec.d.ts.map +1 -0
  95. package/dist/es/test/interceptAnyObject.spec.js +166 -0
  96. package/dist/es/test/interceptAnyObject.spec.js.map +1 -0
  97. package/dist/es/test/loggers.spec.d.ts +2 -0
  98. package/dist/es/test/loggers.spec.d.ts.map +1 -0
  99. package/dist/es/test/loggers.spec.js +218 -0
  100. package/dist/es/test/loggers.spec.js.map +1 -0
  101. package/dist/es/test/repluggableAppDebug.spec.d.ts +2 -0
  102. package/dist/es/test/repluggableAppDebug.spec.d.ts.map +1 -0
  103. package/dist/es/test/repluggableAppDebug.spec.js +107 -0
  104. package/dist/es/test/repluggableAppDebug.spec.js.map +1 -0
  105. package/dist/es/test/testKit.spec.d.ts +2 -0
  106. package/dist/es/test/testKit.spec.d.ts.map +1 -0
  107. package/dist/es/test/testKit.spec.js +129 -0
  108. package/dist/es/test/testKit.spec.js.map +1 -0
  109. package/dist/es/testKit/emptyLoggerOptions.d.ts +3 -0
  110. package/dist/es/testKit/emptyLoggerOptions.d.ts.map +1 -0
  111. package/dist/es/testKit/emptyLoggerOptions.js +15 -0
  112. package/dist/es/testKit/emptyLoggerOptions.js.map +1 -0
  113. package/dist/es/testKit/index.d.ts +27 -0
  114. package/dist/es/testKit/index.d.ts.map +1 -0
  115. package/dist/es/testKit/index.js +132 -0
  116. package/dist/es/testKit/index.js.map +1 -0
  117. package/dist/es/testKit/mockPackage.d.ts +23 -0
  118. package/dist/es/testKit/mockPackage.d.ts.map +1 -0
  119. package/dist/es/testKit/mockPackage.js +95 -0
  120. package/dist/es/testKit/mockPackage.js.map +1 -0
  121. package/dist/es/testKit/withConsoleErrors.d.ts +2 -0
  122. package/dist/es/testKit/withConsoleErrors.d.ts.map +1 -0
  123. package/dist/es/testKit/withConsoleErrors.js +12 -0
  124. package/dist/es/testKit/withConsoleErrors.js.map +1 -0
  125. package/dist/es/testKit/withThrowOnError.d.ts +3 -0
  126. package/dist/es/testKit/withThrowOnError.d.ts.map +1 -0
  127. package/dist/es/testKit/withThrowOnError.js +27 -0
  128. package/dist/es/testKit/withThrowOnError.js.map +1 -0
  129. package/dist/src/API.d.ts +46 -8
  130. package/dist/src/API.d.ts.map +1 -1
  131. package/dist/src/API.js +4 -0
  132. package/dist/src/API.js.map +1 -1
  133. package/dist/src/IterableWeakMap.d.ts +20 -0
  134. package/dist/src/IterableWeakMap.d.ts.map +1 -0
  135. package/dist/src/IterableWeakMap.js +96 -0
  136. package/dist/src/IterableWeakMap.js.map +1 -0
  137. package/dist/src/__internal.d.ts.map +1 -1
  138. package/dist/src/__internal.js +1 -1
  139. package/dist/src/__internal.js.map +1 -1
  140. package/dist/src/appHost.d.ts +7 -0
  141. package/dist/src/appHost.d.ts.map +1 -0
  142. package/dist/src/appHost.js +906 -0
  143. package/dist/src/appHost.js.map +1 -0
  144. package/dist/src/appHostServices.d.ts +12 -0
  145. package/dist/src/appHostServices.d.ts.map +1 -0
  146. package/dist/src/appHostServices.js +29 -0
  147. package/dist/src/appHostServices.js.map +1 -0
  148. package/dist/src/appHostUtils.d.ts +4 -0
  149. package/dist/src/appHostUtils.d.ts.map +1 -0
  150. package/dist/src/appHostUtils.js +16 -0
  151. package/dist/src/appHostUtils.js.map +1 -0
  152. package/dist/src/extensionSlot.d.ts +8 -0
  153. package/dist/src/extensionSlot.d.ts.map +1 -0
  154. package/dist/src/extensionSlot.js +67 -0
  155. package/dist/src/extensionSlot.js.map +1 -0
  156. package/dist/src/hot.d.ts +14 -0
  157. package/dist/src/hot.d.ts.map +1 -0
  158. package/dist/src/hot.js +56 -0
  159. package/dist/src/hot.js.map +1 -0
  160. package/dist/src/index.d.ts +10 -2
  161. package/dist/src/index.d.ts.map +1 -1
  162. package/dist/src/index.js +22 -15
  163. package/dist/src/index.js.map +1 -1
  164. package/dist/src/installedShellsState.d.ts +19 -0
  165. package/dist/src/installedShellsState.d.ts.map +1 -0
  166. package/dist/src/installedShellsState.js +38 -0
  167. package/dist/src/installedShellsState.js.map +1 -0
  168. package/dist/src/interceptAnyObject.d.ts +7 -0
  169. package/dist/src/interceptAnyObject.d.ts.map +1 -0
  170. package/dist/src/interceptAnyObject.js +28 -0
  171. package/dist/src/interceptAnyObject.js.map +1 -0
  172. package/dist/src/invokeSlotCallbacks.d.ts +3 -0
  173. package/dist/src/invokeSlotCallbacks.d.ts.map +1 -0
  174. package/dist/src/invokeSlotCallbacks.js +24 -0
  175. package/dist/src/invokeSlotCallbacks.js.map +1 -0
  176. package/dist/src/loggers.d.ts +4 -0
  177. package/dist/src/loggers.d.ts.map +1 -0
  178. package/dist/src/loggers.js +104 -0
  179. package/dist/src/loggers.js.map +1 -0
  180. package/dist/src/monitorAPI.d.ts +3 -0
  181. package/dist/src/monitorAPI.d.ts.map +1 -0
  182. package/dist/src/monitorAPI.js +57 -0
  183. package/dist/src/monitorAPI.js.map +1 -0
  184. package/dist/src/repluggableAppDebug/index.d.ts +2 -0
  185. package/dist/src/repluggableAppDebug/index.d.ts.map +1 -0
  186. package/dist/src/repluggableAppDebug/index.js +6 -0
  187. package/dist/src/repluggableAppDebug/index.js.map +1 -0
  188. package/dist/src/repluggableAppDebug/performanceDebugInfo.d.ts +15 -0
  189. package/dist/src/repluggableAppDebug/performanceDebugInfo.d.ts.map +1 -0
  190. package/dist/src/repluggableAppDebug/performanceDebugInfo.js +101 -0
  191. package/dist/src/repluggableAppDebug/performanceDebugInfo.js.map +1 -0
  192. package/dist/src/repluggableAppDebug/repluggableAppDebug.d.ts +24 -0
  193. package/dist/src/repluggableAppDebug/repluggableAppDebug.d.ts.map +1 -0
  194. package/dist/src/repluggableAppDebug/repluggableAppDebug.js +139 -0
  195. package/dist/src/repluggableAppDebug/repluggableAppDebug.js.map +1 -0
  196. package/dist/src/tarjanGraph.d.ts +27 -0
  197. package/dist/src/tarjanGraph.d.ts.map +1 -0
  198. package/dist/src/tarjanGraph.js +100 -0
  199. package/dist/src/tarjanGraph.js.map +1 -0
  200. package/dist/src/throttledStore.d.ts +32 -0
  201. package/dist/src/throttledStore.d.ts.map +1 -0
  202. package/dist/src/throttledStore.js +249 -0
  203. package/dist/src/throttledStore.js.map +1 -0
  204. package/dist/test/IterableWeakMap.spec.d.ts +2 -0
  205. package/dist/test/IterableWeakMap.spec.d.ts.map +1 -0
  206. package/dist/test/IterableWeakMap.spec.js +220 -0
  207. package/dist/test/IterableWeakMap.spec.js.map +1 -0
  208. package/dist/test/appHost.mock.d.ts +4 -0
  209. package/dist/test/appHost.mock.d.ts.map +1 -0
  210. package/dist/test/appHost.mock.js +59 -0
  211. package/dist/test/appHost.mock.js.map +1 -0
  212. package/dist/test/appHost.spec.d.ts +2 -0
  213. package/dist/test/appHost.spec.d.ts.map +1 -0
  214. package/dist/test/appHost.spec.js +1456 -0
  215. package/dist/test/appHost.spec.js.map +1 -0
  216. package/dist/test/installedShellsState.spec.d.ts +2 -0
  217. package/dist/test/installedShellsState.spec.d.ts.map +1 -0
  218. package/dist/test/installedShellsState.spec.js +30 -0
  219. package/dist/test/installedShellsState.spec.js.map +1 -0
  220. package/dist/test/interceptAnyObject.spec.d.ts +2 -0
  221. package/dist/test/interceptAnyObject.spec.d.ts.map +1 -0
  222. package/dist/test/interceptAnyObject.spec.js +171 -0
  223. package/dist/test/interceptAnyObject.spec.js.map +1 -0
  224. package/dist/test/loggers.spec.d.ts +2 -0
  225. package/dist/test/loggers.spec.d.ts.map +1 -0
  226. package/dist/test/loggers.spec.js +220 -0
  227. package/dist/test/loggers.spec.js.map +1 -0
  228. package/dist/test/repluggableAppDebug.spec.d.ts +2 -0
  229. package/dist/test/repluggableAppDebug.spec.d.ts.map +1 -0
  230. package/dist/test/repluggableAppDebug.spec.js +109 -0
  231. package/dist/test/repluggableAppDebug.spec.js.map +1 -0
  232. package/dist/test/testKit.spec.d.ts +2 -0
  233. package/dist/test/testKit.spec.d.ts.map +1 -0
  234. package/dist/test/testKit.spec.js +134 -0
  235. package/dist/test/testKit.spec.js.map +1 -0
  236. package/dist/testKit/emptyLoggerOptions.d.ts +3 -0
  237. package/dist/testKit/emptyLoggerOptions.d.ts.map +1 -0
  238. package/dist/testKit/emptyLoggerOptions.js +18 -0
  239. package/dist/testKit/emptyLoggerOptions.js.map +1 -0
  240. package/dist/testKit/index.d.ts +27 -0
  241. package/dist/testKit/index.d.ts.map +1 -0
  242. package/dist/testKit/index.js +160 -0
  243. package/dist/testKit/index.js.map +1 -0
  244. package/dist/testKit/mockPackage.d.ts +23 -0
  245. package/dist/testKit/mockPackage.d.ts.map +1 -0
  246. package/dist/testKit/mockPackage.js +101 -0
  247. package/dist/testKit/mockPackage.js.map +1 -0
  248. package/dist/testKit/withConsoleErrors.d.ts +2 -0
  249. package/dist/testKit/withConsoleErrors.d.ts.map +1 -0
  250. package/dist/testKit/withConsoleErrors.js +16 -0
  251. package/dist/testKit/withConsoleErrors.js.map +1 -0
  252. package/dist/testKit/withThrowOnError.d.ts +3 -0
  253. package/dist/testKit/withThrowOnError.d.ts.map +1 -0
  254. package/dist/testKit/withThrowOnError.js +31 -0
  255. package/dist/testKit/withThrowOnError.js.map +1 -0
  256. package/jest.config.js +16 -0
  257. package/package.json +21 -3
  258. package/src/API.ts +47 -9
  259. package/src/IterableWeakMap.ts +123 -0
  260. package/src/__internal.ts +1 -1
  261. package/src/appHost.ts +1222 -0
  262. package/src/appHostServices.ts +42 -0
  263. package/src/appHostUtils.ts +11 -0
  264. package/src/extensionSlot.ts +96 -0
  265. package/src/hot.ts +53 -0
  266. package/src/index.ts +42 -2
  267. package/src/installedShellsState.ts +54 -0
  268. package/src/interceptAnyObject.ts +39 -0
  269. package/src/invokeSlotCallbacks.ts +20 -0
  270. package/src/loggers.ts +112 -0
  271. package/src/monitorAPI.ts +71 -0
  272. package/src/repluggableAppDebug/debug.d.ts +37 -0
  273. package/src/repluggableAppDebug/index.ts +1 -0
  274. package/src/repluggableAppDebug/performanceDebugInfo.ts +96 -0
  275. package/src/repluggableAppDebug/repluggableAppDebug.ts +192 -0
  276. package/src/tarjanGraph.ts +96 -0
  277. package/src/throttledStore.ts +355 -0
  278. package/test/IterableWeakMap.spec.ts +280 -0
  279. package/test/appHost.mock.ts +58 -0
  280. package/test/appHost.spec.ts +1765 -0
  281. package/test/installedShellsState.spec.ts +39 -0
  282. package/test/interceptAnyObject.spec.ts +217 -0
  283. package/test/loggers.spec.ts +288 -0
  284. package/test/repluggableAppDebug.spec.ts +118 -0
  285. package/test/testKit.spec.tsx +153 -0
  286. package/testKit/emptyLoggerOptions.ts +16 -0
  287. package/testKit/index.ts +170 -0
  288. package/testKit/mockPackage.ts +110 -0
  289. package/testKit/package.json +3 -0
  290. package/testKit/withConsoleErrors.ts +12 -0
  291. package/testKit/withThrowOnError.ts +34 -0
  292. package/tsconfig.json +9 -2
  293. package/dist/es/API.d.ts.map +0 -1
  294. package/dist/es/API.js +0 -2
  295. package/dist/es/API.js.map +0 -1
  296. package/dist/es/__internal.d.ts.map +0 -1
  297. package/dist/es/__internal.js +0 -5
  298. package/dist/es/__internal.js.map +0 -1
  299. package/dist/es/index.d.ts +0 -3
  300. package/dist/es/index.d.ts.map +0 -1
  301. package/dist/es/index.js +0 -2
  302. package/dist/es/index.js.map +0 -1
  303. /package/dist/es/{__internal.d.ts → src/__internal.d.ts} +0 -0
@@ -0,0 +1,280 @@
1
+ import { IterableWeakMap } from '../src/IterableWeakMap'
2
+
3
+ describe('IterableWeakMap', () => {
4
+ function runCommonTests() {
5
+ describe('#constructor', () => {
6
+ it('should add initial values to Map', function () {
7
+ const ref = {}
8
+ const value = {}
9
+ const iwm = new IterableWeakMap([[ref, value]])
10
+
11
+ const entries = Array.from(iwm.entries())
12
+ expect(entries).toEqual([[ref, value]])
13
+ })
14
+ })
15
+
16
+ describe('#set', () => {
17
+ it('should add new value', function () {
18
+ const iwm = new IterableWeakMap()
19
+ const ref = {}
20
+ const value = {}
21
+
22
+ iwm.set(ref, value)
23
+
24
+ const entries = Array.from(iwm.entries())
25
+ expect(entries).toEqual([[ref, value]])
26
+ })
27
+ })
28
+
29
+ describe('#get', () => {
30
+ it('should return value if ref exists in Map', function () {
31
+ const iwm = new IterableWeakMap()
32
+ const ref = {}
33
+ const value = {}
34
+
35
+ iwm.set(ref, value)
36
+
37
+ const getValue = iwm.get(ref)
38
+ expect(getValue).toEqual(value)
39
+ })
40
+
41
+ it("should return undefined if ref doesn't exist in Map", function () {
42
+ const iwm = new IterableWeakMap()
43
+ const ref = {}
44
+ const value = {}
45
+ const ref2 = {}
46
+
47
+ iwm.set(ref, value)
48
+
49
+ const getValue = iwm.get(ref2)
50
+ expect(getValue).toBeUndefined()
51
+ })
52
+ })
53
+
54
+ describe('#delete', () => {
55
+ it('should delete value from Map and return true', function () {
56
+ const iwm = new IterableWeakMap()
57
+ const ref = {}
58
+ const value = {}
59
+
60
+ iwm.set(ref, value)
61
+
62
+ const res = iwm.delete(ref)
63
+
64
+ expect(iwm.size).toBe(0)
65
+ expect(res).toBeTruthy()
66
+ })
67
+
68
+ it('should return false if there is no ref in Map', function () {
69
+ const iwm = new IterableWeakMap()
70
+ const ref = {}
71
+ const value = {}
72
+ const refToDelete = {}
73
+
74
+ iwm.set(ref, value)
75
+
76
+ const res = iwm.delete(refToDelete)
77
+
78
+ expect(iwm.size).toBe(1)
79
+ expect(res).toBeFalsy()
80
+ })
81
+ })
82
+
83
+ describe('#size', () => {
84
+ it('should return size of Map', function () {
85
+ const iwm = new IterableWeakMap()
86
+ const ref = {}
87
+ const value = {}
88
+ const ref2 = {}
89
+ const value2 = {}
90
+
91
+ iwm.set(ref, value)
92
+ iwm.set(ref2, value2)
93
+
94
+ expect(iwm.size).toBe(2)
95
+ })
96
+ })
97
+
98
+ describe('#has', () => {
99
+ it('should return true if map has ref', function () {
100
+ const iwm = new IterableWeakMap()
101
+ const ref = {}
102
+ const value = {}
103
+
104
+ iwm.set(ref, value)
105
+
106
+ expect(iwm.has(ref)).toBe(true)
107
+ })
108
+
109
+ it("should return false if map doesn't have ref", function () {
110
+ const iwm = new IterableWeakMap()
111
+ const ref = {}
112
+ const value = {}
113
+ const ref2 = {}
114
+
115
+ iwm.set(ref, value)
116
+
117
+ expect(iwm.has(ref2)).toBe(false)
118
+ })
119
+ })
120
+
121
+ describe('#clear', () => {
122
+ it('should delete all refs from Map', function () {
123
+ const iwm = new IterableWeakMap()
124
+ const ref = {}
125
+ const value = {}
126
+ const ref2 = {}
127
+ const value2 = {}
128
+
129
+ iwm.set(ref, value)
130
+ iwm.set(ref2, value2)
131
+
132
+ expect(iwm.size).toBe(2)
133
+
134
+ iwm.clear()
135
+
136
+ expect(iwm.size).toBe(0)
137
+ })
138
+ })
139
+
140
+ describe('#forEach', () => {
141
+ it('should iterate over all entries in Map', function () {
142
+ const iwm = new IterableWeakMap()
143
+ const ref = {}
144
+ const value = {}
145
+ const ref2 = {}
146
+ const value2 = {}
147
+
148
+ iwm.set(ref, value)
149
+ iwm.set(ref2, value2)
150
+
151
+ const res: [object, object, IterableWeakMap<any, any>][] = []
152
+
153
+ iwm.forEach((v, k, map) => {
154
+ res.push([v, k, map])
155
+ })
156
+
157
+ expect(res).toEqual([
158
+ [ref, value, iwm],
159
+ [ref2, value2, iwm]
160
+ ])
161
+ })
162
+ })
163
+
164
+ describe('#keys', () => {
165
+ it('should return all keys in Map', function () {
166
+ const iwm = new IterableWeakMap()
167
+ const ref = {}
168
+ const value = {}
169
+ const ref2 = {}
170
+ const value2 = {}
171
+
172
+ iwm.set(ref, value)
173
+ iwm.set(ref2, value2)
174
+
175
+ const res = Array.from(iwm.keys())
176
+
177
+ expect(res).toEqual([ref, ref2])
178
+ })
179
+ })
180
+
181
+ describe('#valeus', () => {
182
+ it('should return all values in Map', function () {
183
+ const iwm = new IterableWeakMap()
184
+ const ref = {}
185
+ const value = {}
186
+ const ref2 = {}
187
+ const value2 = {}
188
+
189
+ iwm.set(ref, value)
190
+ iwm.set(ref2, value2)
191
+
192
+ const res = Array.from(iwm.values())
193
+
194
+ expect(res).toEqual([value, value2])
195
+ })
196
+ })
197
+ }
198
+
199
+ describe('environment supports WeakRef and FinalizationRegistry', () => {
200
+ runCommonTests()
201
+
202
+ describe('memory', () => {
203
+ let originalFinalizationRegistry: FinalizationRegistry<any>
204
+ let cleanupMemory = (ref: any) => {}
205
+
206
+ beforeEach(() => {
207
+ originalFinalizationRegistry = FinalizationRegistry as any
208
+ globalThis.FinalizationRegistry = function (cleanupCb: (heldValue: any) => void) {
209
+ const heldValueSet = new Map()
210
+
211
+ cleanupMemory = ref => {
212
+ const heldValue = heldValueSet.get(ref)
213
+
214
+ cleanupCb(heldValue)
215
+ }
216
+
217
+ return {
218
+ register(target: object, heldValue: any, unregisterToken?: object) {
219
+ heldValueSet.set(target, heldValue)
220
+ },
221
+ unregister() {}
222
+ } as unknown as FinalizationRegistry<any>
223
+ } as any
224
+ })
225
+
226
+ afterEach(() => {
227
+ globalThis.FinalizationRegistry = originalFinalizationRegistry as any
228
+ })
229
+
230
+ it('should be auto cleaned when ref in Map is freeing in program', function () {
231
+ const iwm = new IterableWeakMap()
232
+ const ref = {}
233
+ const value = {}
234
+ const ref2 = {}
235
+ const value2 = {}
236
+
237
+ iwm.set(ref, value)
238
+ iwm.set(ref2, value2)
239
+
240
+ expect(iwm.size).toBe(2)
241
+ expect(Array.from(iwm.entries())).toEqual([
242
+ [ref, value],
243
+ [ref2, value2]
244
+ ])
245
+
246
+ // emulate freeing "ref" in memory
247
+ cleanupMemory(ref)
248
+
249
+ expect(iwm.size).toBe(1)
250
+ expect(Array.from(iwm.entries())).toEqual([[ref2, value2]])
251
+ })
252
+ })
253
+ })
254
+
255
+ describe("environment doesn't support WeakRef and FinalizationRegistry", () => {
256
+ let originalWeakRef: WeakRefConstructor | undefined
257
+ let originalFinalizationRegistry: FinalizationRegistryConstructor | undefined
258
+
259
+ beforeAll(() => {
260
+ originalWeakRef = global.WeakRef
261
+ // @ts-ignore
262
+ delete global.WeakRef
263
+ originalFinalizationRegistry = global.FinalizationRegistry
264
+ // @ts-ignore
265
+ delete global.FinalizationRegistry
266
+ })
267
+
268
+ afterAll(() => {
269
+ if (originalWeakRef && originalFinalizationRegistry) {
270
+ global.WeakRef = originalWeakRef
271
+ originalWeakRef = undefined
272
+
273
+ global.FinalizationRegistry = originalFinalizationRegistry
274
+ originalFinalizationRegistry = undefined
275
+ }
276
+ })
277
+
278
+ runCommonTests()
279
+ })
280
+ })
@@ -0,0 +1,58 @@
1
+ import { EntryPoint, SlotKey } from '../src/API'
2
+
3
+ export const createCircularEntryPoints = (usePublicAPIKeys: boolean = false): EntryPoint[] => {
4
+ const MockAPI1: SlotKey<{}> = { name: 'Mock-API-1', public: usePublicAPIKeys }
5
+ const MockAPI2: SlotKey<{}> = { name: 'Mock-API-2', public: usePublicAPIKeys }
6
+ const MockAPI3: SlotKey<{}> = { name: 'Mock-API-3', public: usePublicAPIKeys }
7
+ const MockAPI4: SlotKey<{}> = { name: 'Mock-API-4', public: usePublicAPIKeys }
8
+
9
+ const ep1Deps = usePublicAPIKeys
10
+ ? [
11
+ { name: 'Mock-API-2', public: true },
12
+ { name: 'Mock-API-3', public: true }
13
+ ]
14
+ : [MockAPI2, MockAPI3]
15
+ const ep2Deps = usePublicAPIKeys ? [{ name: 'Mock-API-4', public: true }] : [MockAPI4]
16
+ const ep3Deps = usePublicAPIKeys ? [{ name: 'Mock-API-4', public: true }] : [MockAPI4]
17
+ const ep4Deps = usePublicAPIKeys ? [{ name: 'Mock-API-1', public: true }] : [MockAPI1]
18
+
19
+ return [
20
+ {
21
+ name: 'MOCK_ENTRY_POINT_1',
22
+ getDependencyAPIs: () => ep1Deps,
23
+ declareAPIs: () => [MockAPI1]
24
+ },
25
+ {
26
+ name: 'MOCK_ENTRY_POINT_2',
27
+ getDependencyAPIs: () => ep2Deps,
28
+ declareAPIs: () => [MockAPI2]
29
+ },
30
+ {
31
+ name: 'MOCK_ENTRY_POINT_3',
32
+ getDependencyAPIs: () => ep3Deps,
33
+ declareAPIs: () => [MockAPI3]
34
+ },
35
+ {
36
+ name: 'MOCK_ENTRY_POINT_4',
37
+ getDependencyAPIs: () => ep4Deps,
38
+ declareAPIs: () => [MockAPI4]
39
+ }
40
+ ]
41
+ }
42
+
43
+ export const createDirectCircularEntryPoints = (usePublicAPIKeys: boolean = false): EntryPoint[] => {
44
+ const MockAPI1: SlotKey<{}> = { name: 'Mock-API-1', public: usePublicAPIKeys }
45
+ const MockAPI2: SlotKey<{}> = { name: 'Mock-API-2', public: usePublicAPIKeys }
46
+ return [
47
+ {
48
+ name: 'MOCK_ENTRY_POINT_1',
49
+ getDependencyAPIs: () => [usePublicAPIKeys ? { name: 'Mock-API-2', public: true } : MockAPI2],
50
+ declareAPIs: () => [MockAPI1]
51
+ },
52
+ {
53
+ name: 'MOCK_ENTRY_POINT_2',
54
+ getDependencyAPIs: () => [usePublicAPIKeys ? { name: 'Mock-API-1', public: true } : MockAPI1],
55
+ declareAPIs: () => [MockAPI2]
56
+ }
57
+ ]
58
+ }