@vived/core 1.4.0 → 1.4.1

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 (177) hide show
  1. package/package.json +3 -6
  2. package/dist/cjs/AppObject/AppObject.js +0 -59
  3. package/dist/cjs/AppObject/AppObject.js.map +0 -1
  4. package/dist/cjs/AppObject/AppObject.test.js +0 -113
  5. package/dist/cjs/AppObject/AppObject.test.js.map +0 -1
  6. package/dist/cjs/AppObject/AppObjectComponent.js +0 -82
  7. package/dist/cjs/AppObject/AppObjectComponent.js.map +0 -1
  8. package/dist/cjs/AppObject/AppObjectComponent.test.js +0 -132
  9. package/dist/cjs/AppObject/AppObjectComponent.test.js.map +0 -1
  10. package/dist/cjs/AppObject/AppObjectController.js +0 -12
  11. package/dist/cjs/AppObject/AppObjectController.js.map +0 -1
  12. package/dist/cjs/AppObject/AppObjectEntity.js +0 -38
  13. package/dist/cjs/AppObject/AppObjectEntity.js.map +0 -1
  14. package/dist/cjs/AppObject/AppObjectEntity.test.js +0 -108
  15. package/dist/cjs/AppObject/AppObjectEntity.test.js.map +0 -1
  16. package/dist/cjs/AppObject/AppObjectEntityRepo.js +0 -56
  17. package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +0 -1
  18. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +0 -149
  19. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  20. package/dist/cjs/AppObject/AppObjectPM.js +0 -40
  21. package/dist/cjs/AppObject/AppObjectPM.js.map +0 -1
  22. package/dist/cjs/AppObject/AppObjectPM.test.js +0 -103
  23. package/dist/cjs/AppObject/AppObjectPM.test.js.map +0 -1
  24. package/dist/cjs/AppObject/AppObjectRepo.js +0 -133
  25. package/dist/cjs/AppObject/AppObjectRepo.js.map +0 -1
  26. package/dist/cjs/AppObject/AppObjectRepo.test.js +0 -213
  27. package/dist/cjs/AppObject/AppObjectRepo.test.js.map +0 -1
  28. package/dist/cjs/AppObject/AppObjectUC.js +0 -12
  29. package/dist/cjs/AppObject/AppObjectUC.js.map +0 -1
  30. package/dist/cjs/AppObject/AppObjectView.js +0 -12
  31. package/dist/cjs/AppObject/AppObjectView.js.map +0 -1
  32. package/dist/cjs/AppObject/getSingletonComponent.js +0 -7
  33. package/dist/cjs/AppObject/getSingletonComponent.js.map +0 -1
  34. package/dist/cjs/AppObject/getSingletonComponent.test.js +0 -13
  35. package/dist/cjs/AppObject/getSingletonComponent.test.js.map +0 -1
  36. package/dist/cjs/AppObject/index.js +0 -27
  37. package/dist/cjs/AppObject/index.js.map +0 -1
  38. package/dist/cjs/AppObject/printAppObjectDetails.js +0 -18
  39. package/dist/cjs/AppObject/printAppObjectDetails.js.map +0 -1
  40. package/dist/cjs/Entities/MemoizedAngle.js +0 -23
  41. package/dist/cjs/Entities/MemoizedAngle.js.map +0 -1
  42. package/dist/cjs/Entities/MemoizedAngle.test.js +0 -30
  43. package/dist/cjs/Entities/MemoizedAngle.test.js.map +0 -1
  44. package/dist/cjs/Entities/MemoizedBoolean.js +0 -23
  45. package/dist/cjs/Entities/MemoizedBoolean.js.map +0 -1
  46. package/dist/cjs/Entities/MemoizedBoolean.test.js +0 -34
  47. package/dist/cjs/Entities/MemoizedBoolean.test.js.map +0 -1
  48. package/dist/cjs/Entities/MemoizedColor.js +0 -24
  49. package/dist/cjs/Entities/MemoizedColor.js.map +0 -1
  50. package/dist/cjs/Entities/MemoizedColor.test.js +0 -32
  51. package/dist/cjs/Entities/MemoizedColor.test.js.map +0 -1
  52. package/dist/cjs/Entities/MemoizedNumber.js +0 -23
  53. package/dist/cjs/Entities/MemoizedNumber.js.map +0 -1
  54. package/dist/cjs/Entities/MemoizedNumber.test.js +0 -29
  55. package/dist/cjs/Entities/MemoizedNumber.test.js.map +0 -1
  56. package/dist/cjs/Entities/MemoizedQuaternion.js +0 -24
  57. package/dist/cjs/Entities/MemoizedQuaternion.js.map +0 -1
  58. package/dist/cjs/Entities/MemoizedQuaternion.test.js +0 -32
  59. package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +0 -1
  60. package/dist/cjs/Entities/MemoizedString.js +0 -23
  61. package/dist/cjs/Entities/MemoizedString.js.map +0 -1
  62. package/dist/cjs/Entities/MemoizedString.test.js +0 -29
  63. package/dist/cjs/Entities/MemoizedString.test.js.map +0 -1
  64. package/dist/cjs/Entities/MemoizedVector2.js +0 -24
  65. package/dist/cjs/Entities/MemoizedVector2.js.map +0 -1
  66. package/dist/cjs/Entities/MemoizedVector2.test.js +0 -32
  67. package/dist/cjs/Entities/MemoizedVector2.test.js.map +0 -1
  68. package/dist/cjs/Entities/MemoizedVector3.js +0 -24
  69. package/dist/cjs/Entities/MemoizedVector3.js.map +0 -1
  70. package/dist/cjs/Entities/MemoizedVector3.test.js +0 -32
  71. package/dist/cjs/Entities/MemoizedVector3.test.js.map +0 -1
  72. package/dist/cjs/Entities/ObservableEntity.js +0 -20
  73. package/dist/cjs/Entities/ObservableEntity.js.map +0 -1
  74. package/dist/cjs/Entities/ObservableEntity.test.js +0 -25
  75. package/dist/cjs/Entities/ObservableEntity.test.js.map +0 -1
  76. package/dist/cjs/Entities/ObserverList.js +0 -27
  77. package/dist/cjs/Entities/ObserverList.js.map +0 -1
  78. package/dist/cjs/Entities/ObserverList.test.js +0 -44
  79. package/dist/cjs/Entities/ObserverList.test.js.map +0 -1
  80. package/dist/cjs/Entities/RangedNumber.js +0 -36
  81. package/dist/cjs/Entities/RangedNumber.js.map +0 -1
  82. package/dist/cjs/Entities/RangedNumber.test.js +0 -96
  83. package/dist/cjs/Entities/RangedNumber.test.js.map +0 -1
  84. package/dist/cjs/Entities/index.js +0 -28
  85. package/dist/cjs/Entities/index.js.map +0 -1
  86. package/dist/cjs/Types/AppBoundary.js +0 -3
  87. package/dist/cjs/Types/AppBoundary.js.map +0 -1
  88. package/dist/cjs/Types/EaseFn.js +0 -3
  89. package/dist/cjs/Types/EaseFn.js.map +0 -1
  90. package/dist/cjs/Types/PmAdapter.js +0 -3
  91. package/dist/cjs/Types/PmAdapter.js.map +0 -1
  92. package/dist/cjs/Types/SingletonPmAdapter.js +0 -3
  93. package/dist/cjs/Types/SingletonPmAdapter.js.map +0 -1
  94. package/dist/cjs/Types/index.js +0 -21
  95. package/dist/cjs/Types/index.js.map +0 -1
  96. package/dist/cjs/Utilities/LengthConverters.js +0 -21
  97. package/dist/cjs/Utilities/LengthConverters.js.map +0 -1
  98. package/dist/cjs/Utilities/LengthConverters.test.js +0 -24
  99. package/dist/cjs/Utilities/LengthConverters.test.js.map +0 -1
  100. package/dist/cjs/Utilities/LerpNumber.js +0 -85
  101. package/dist/cjs/Utilities/LerpNumber.js.map +0 -1
  102. package/dist/cjs/Utilities/LerpNumber.test.js +0 -90
  103. package/dist/cjs/Utilities/LerpNumber.test.js.map +0 -1
  104. package/dist/cjs/Utilities/addAlphaToHex.js +0 -16
  105. package/dist/cjs/Utilities/addAlphaToHex.js.map +0 -1
  106. package/dist/cjs/Utilities/addAlphaToHex.test.js +0 -34
  107. package/dist/cjs/Utilities/addAlphaToHex.test.js.map +0 -1
  108. package/dist/cjs/Utilities/alphaToHex.js +0 -21
  109. package/dist/cjs/Utilities/alphaToHex.js.map +0 -1
  110. package/dist/cjs/Utilities/alphaToHex.test.js +0 -75
  111. package/dist/cjs/Utilities/alphaToHex.test.js.map +0 -1
  112. package/dist/cjs/Utilities/degreesToRadians.js +0 -7
  113. package/dist/cjs/Utilities/degreesToRadians.js.map +0 -1
  114. package/dist/cjs/Utilities/degreesToRadians.test.js +0 -9
  115. package/dist/cjs/Utilities/degreesToRadians.test.js.map +0 -1
  116. package/dist/cjs/Utilities/downloadFile.js +0 -14
  117. package/dist/cjs/Utilities/downloadFile.js.map +0 -1
  118. package/dist/cjs/Utilities/easeFunctions.js +0 -208
  119. package/dist/cjs/Utilities/easeFunctions.js.map +0 -1
  120. package/dist/cjs/Utilities/easeFunctions.test.js +0 -209
  121. package/dist/cjs/Utilities/easeFunctions.test.js.map +0 -1
  122. package/dist/cjs/Utilities/generateUniqueID.js +0 -8
  123. package/dist/cjs/Utilities/generateUniqueID.js.map +0 -1
  124. package/dist/cjs/Utilities/index.js +0 -25
  125. package/dist/cjs/Utilities/index.js.map +0 -1
  126. package/dist/cjs/Utilities/interpolateNumber.js +0 -18
  127. package/dist/cjs/Utilities/interpolateNumber.js.map +0 -1
  128. package/dist/cjs/Utilities/interpolateNumber.test.js +0 -26
  129. package/dist/cjs/Utilities/interpolateNumber.test.js.map +0 -1
  130. package/dist/cjs/ValueObjects/Angle.js +0 -47
  131. package/dist/cjs/ValueObjects/Angle.js.map +0 -1
  132. package/dist/cjs/ValueObjects/Angle.test.js +0 -28
  133. package/dist/cjs/ValueObjects/Angle.test.js.map +0 -1
  134. package/dist/cjs/ValueObjects/Color.js +0 -859
  135. package/dist/cjs/ValueObjects/Color.js.map +0 -1
  136. package/dist/cjs/ValueObjects/Color.test.js +0 -147
  137. package/dist/cjs/ValueObjects/Color.test.js.map +0 -1
  138. package/dist/cjs/ValueObjects/LineSegment2D.js +0 -72
  139. package/dist/cjs/ValueObjects/LineSegment2D.js.map +0 -1
  140. package/dist/cjs/ValueObjects/LineSegment2D.test.js +0 -102
  141. package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +0 -1
  142. package/dist/cjs/ValueObjects/Matrix.js +0 -466
  143. package/dist/cjs/ValueObjects/Matrix.js.map +0 -1
  144. package/dist/cjs/ValueObjects/Matrix.test.js +0 -385
  145. package/dist/cjs/ValueObjects/Matrix.test.js.map +0 -1
  146. package/dist/cjs/ValueObjects/ParametricLine.js +0 -77
  147. package/dist/cjs/ValueObjects/ParametricLine.js.map +0 -1
  148. package/dist/cjs/ValueObjects/ParametricLine.test.js +0 -126
  149. package/dist/cjs/ValueObjects/ParametricLine.test.js.map +0 -1
  150. package/dist/cjs/ValueObjects/ParametricPlane.js +0 -65
  151. package/dist/cjs/ValueObjects/ParametricPlane.js.map +0 -1
  152. package/dist/cjs/ValueObjects/ParametricPlane.test.js +0 -101
  153. package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +0 -1
  154. package/dist/cjs/ValueObjects/Quaternion.js +0 -290
  155. package/dist/cjs/ValueObjects/Quaternion.js.map +0 -1
  156. package/dist/cjs/ValueObjects/Quaternion.test.js +0 -240
  157. package/dist/cjs/ValueObjects/Quaternion.test.js.map +0 -1
  158. package/dist/cjs/ValueObjects/Rectangle.js +0 -24
  159. package/dist/cjs/ValueObjects/Rectangle.js.map +0 -1
  160. package/dist/cjs/ValueObjects/Rectangle.test.js +0 -32
  161. package/dist/cjs/ValueObjects/Rectangle.test.js.map +0 -1
  162. package/dist/cjs/ValueObjects/Vector2.js +0 -184
  163. package/dist/cjs/ValueObjects/Vector2.js.map +0 -1
  164. package/dist/cjs/ValueObjects/Vector2.test.js +0 -136
  165. package/dist/cjs/ValueObjects/Vector2.test.js.map +0 -1
  166. package/dist/cjs/ValueObjects/Vector3.js +0 -231
  167. package/dist/cjs/ValueObjects/Vector3.js.map +0 -1
  168. package/dist/cjs/ValueObjects/Vector3.test.js +0 -188
  169. package/dist/cjs/ValueObjects/Vector3.test.js.map +0 -1
  170. package/dist/cjs/ValueObjects/Version.js +0 -171
  171. package/dist/cjs/ValueObjects/Version.js.map +0 -1
  172. package/dist/cjs/ValueObjects/Version.test.js +0 -310
  173. package/dist/cjs/ValueObjects/Version.test.js.map +0 -1
  174. package/dist/cjs/ValueObjects/index.js +0 -28
  175. package/dist/cjs/ValueObjects/index.js.map +0 -1
  176. package/dist/cjs/index.js +0 -22
  177. package/dist/cjs/index.js.map +0 -1
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const AppObject_1 = require("./AppObject");
4
- const AppObjectComponent_1 = require("./AppObjectComponent");
5
- const AppObjectEntity_1 = require("./AppObjectEntity");
6
- const AppObjectRepo_1 = require("./AppObjectRepo");
7
- class MockEntity extends AppObjectEntity_1.AppObjectEntity {
8
- constructor(appObject) {
9
- super(appObject, MockEntity.type);
10
- }
11
- }
12
- MockEntity.type = "mockEntity";
13
- function makeTestRig() {
14
- const appObjectRepo = (0, AppObjectRepo_1.makeAppObjectRepo)();
15
- const appObj = (0, AppObject_1.makeAppObject)("appObj", appObjectRepo);
16
- const appObjectEntity = new MockEntity(appObj);
17
- const onChangeObserver = jest.fn();
18
- appObjectEntity.addChangeObserver(onChangeObserver);
19
- return { appObjectEntity, onChangeObserver, appObj, appObjectRepo };
20
- }
21
- describe("Abstract Observable Entity", () => {
22
- it("Sets the type", () => {
23
- const { appObjectEntity } = makeTestRig();
24
- expect(appObjectEntity.type).toEqual("mockEntity");
25
- });
26
- it("Notifies on change", () => {
27
- const { onChangeObserver, appObjectEntity } = makeTestRig();
28
- appObjectEntity.notifyOnChange();
29
- expect(onChangeObserver).toBeCalled();
30
- });
31
- it("Removes an on change onChangeObserver", () => {
32
- const { onChangeObserver, appObjectEntity } = makeTestRig();
33
- appObjectEntity.removeChangeObserver(onChangeObserver);
34
- appObjectEntity.notifyOnChange();
35
- expect(onChangeObserver).not.toBeCalled();
36
- });
37
- it("Notifies when disposed", () => {
38
- const { appObjectEntity } = makeTestRig();
39
- const disposeObserver = jest.fn();
40
- appObjectEntity.addOnDisposeObserver(disposeObserver);
41
- appObjectEntity.dispose();
42
- expect(disposeObserver).toBeCalled();
43
- });
44
- it("Removes a dispose onChangeObserver", () => {
45
- const { appObjectEntity } = makeTestRig();
46
- const disposeObserver = jest.fn();
47
- appObjectEntity.addOnDisposeObserver(disposeObserver);
48
- appObjectEntity.removeOnDisposeObserver(disposeObserver);
49
- appObjectEntity.dispose();
50
- expect(disposeObserver).not.toBeCalled();
51
- });
52
- it("Clears all observers when disposed", () => {
53
- const { onChangeObserver, appObjectEntity } = makeTestRig();
54
- const disposeObserver = jest.fn();
55
- appObjectEntity.addOnDisposeObserver(disposeObserver);
56
- appObjectEntity.dispose();
57
- disposeObserver.mockClear();
58
- onChangeObserver.mockClear();
59
- appObjectEntity.notifyOnChange();
60
- appObjectEntity.dispose();
61
- expect(onChangeObserver).not.toBeCalled();
62
- expect(disposeObserver).not.toBeCalled();
63
- });
64
- it("Stores the app object", () => {
65
- const { appObjectEntity, appObj } = makeTestRig();
66
- expect(appObjectEntity.appObject).toEqual(appObj);
67
- });
68
- it("Adds itself to the app object", () => {
69
- const { appObjectEntity, appObj } = makeTestRig();
70
- expect(appObj.hasComponent(appObjectEntity.type)).toEqual(true);
71
- });
72
- it("Removes itself from the app object when disposed", () => {
73
- const { appObjectEntity, appObj } = makeTestRig();
74
- appObjectEntity.dispose();
75
- expect(appObj.hasComponent(appObjectEntity.type)).toEqual(false);
76
- });
77
- it("Forwards notifications to the App Object observers", () => {
78
- const { appObjectEntity, appObj } = makeTestRig();
79
- const appObjObserver = jest.fn();
80
- appObj.addObserver(appObjObserver);
81
- appObjectEntity.notifyOnChange();
82
- expect(appObjObserver).toBeCalled();
83
- });
84
- it("Stops forwarding notifications to the App Object observers when disposed", () => {
85
- const { appObjectEntity, appObj } = makeTestRig();
86
- const appObjObserver = jest.fn();
87
- appObj.addObserver(appObjObserver);
88
- appObjectEntity.dispose();
89
- appObjObserver.mockClear();
90
- appObjectEntity.notifyOnChange();
91
- expect(appObjObserver).not.toBeCalled();
92
- });
93
- it("Returns the repo", () => {
94
- const { appObjectEntity, appObjectRepo } = makeTestRig();
95
- expect(appObjectEntity.appObjects).toEqual(appObjectRepo);
96
- });
97
- it("Forwards a warn to the App Object Repo warn", () => {
98
- const { appObjectEntity, appObjectRepo } = makeTestRig();
99
- appObjectRepo.submitWarning = jest.fn();
100
- appObjectEntity.warn("Some warning");
101
- expect(appObjectRepo.submitWarning).toBeCalledWith(`appObj/mockEntity`, "Some warning");
102
- });
103
- it("Sets Component type to Entity", () => {
104
- const { appObjectEntity } = makeTestRig();
105
- expect(appObjectEntity.componentType).toEqual(AppObjectComponent_1.AppObjectComponentType.ENTITY);
106
- });
107
- });
108
- //# sourceMappingURL=AppObjectEntity.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectEntity.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectComponentType } from \"./AppObjectComponent\";\r\nimport { AppObjectEntity } from \"./AppObjectEntity\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nclass MockEntity extends AppObjectEntity {\r\n static type = \"mockEntity\";\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockEntity.type);\r\n }\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjectRepo = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appObj\", appObjectRepo);\r\n const appObjectEntity = new MockEntity(appObj);\r\n\r\n const onChangeObserver = jest.fn();\r\n appObjectEntity.addChangeObserver(onChangeObserver);\r\n\r\n return { appObjectEntity, onChangeObserver, appObj, appObjectRepo };\r\n}\r\n\r\ndescribe(\"Abstract Observable Entity\", () => {\r\n it(\"Sets the type\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n expect(appObjectEntity.type).toEqual(\"mockEntity\");\r\n });\r\n\r\n it(\"Notifies on change\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(onChangeObserver).toBeCalled();\r\n });\r\n\r\n it(\"Removes an on change onChangeObserver\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n appObjectEntity.removeChangeObserver(onChangeObserver);\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(onChangeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Notifies when disposed\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n\r\n expect(disposeObserver).toBeCalled();\r\n });\r\n\r\n it(\"Removes a dispose onChangeObserver\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n appObjectEntity.removeOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n expect(disposeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Clears all observers when disposed\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n\r\n disposeObserver.mockClear();\r\n onChangeObserver.mockClear();\r\n\r\n appObjectEntity.notifyOnChange();\r\n appObjectEntity.dispose();\r\n\r\n expect(onChangeObserver).not.toBeCalled();\r\n expect(disposeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Stores the app object\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n expect(appObjectEntity.appObject).toEqual(appObj);\r\n });\r\n\r\n it(\"Adds itself to the app object\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(appObjectEntity.type)).toEqual(true);\r\n });\r\n\r\n it(\"Removes itself from the app object when disposed\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n appObjectEntity.dispose();\r\n\r\n expect(appObj.hasComponent(appObjectEntity.type)).toEqual(false);\r\n });\r\n\r\n it(\"Forwards notifications to the App Object observers\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n const appObjObserver = jest.fn();\r\n appObj.addObserver(appObjObserver);\r\n\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(appObjObserver).toBeCalled();\r\n });\r\n\r\n it(\"Stops forwarding notifications to the App Object observers when disposed\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n const appObjObserver = jest.fn();\r\n appObj.addObserver(appObjObserver);\r\n\r\n appObjectEntity.dispose();\r\n appObjObserver.mockClear();\r\n\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(appObjObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Returns the repo\", () => {\r\n const { appObjectEntity, appObjectRepo } = makeTestRig();\r\n expect(appObjectEntity.appObjects).toEqual(appObjectRepo);\r\n });\r\n\r\n it(\"Forwards a warn to the App Object Repo warn\", () => {\r\n const { appObjectEntity, appObjectRepo } = makeTestRig();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectEntity.warn(\"Some warning\");\r\n\r\n expect(appObjectRepo.submitWarning).toBeCalledWith(\r\n `appObj/mockEntity`,\r\n \"Some warning\"\r\n );\r\n });\r\n\r\n it(\"Sets Component type to Entity\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n\r\n expect(appObjectEntity.componentType).toEqual(\r\n AppObjectComponentType.ENTITY\r\n );\r\n });\r\n});\r\n"]}
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppObjectEntityRepo = void 0;
4
- const Entities_1 = require("../Entities");
5
- const AppObjectEntity_1 = require("./AppObjectEntity");
6
- class AppObjectEntityRepo extends AppObjectEntity_1.AppObjectEntity {
7
- constructor() {
8
- super(...arguments);
9
- this.entityLookup = new Map();
10
- this.onEntityAddedObservers = new Entities_1.ObserverList();
11
- this.addEntityAddedObserver = (observer) => {
12
- this.onEntityAddedObservers.add(observer);
13
- };
14
- this.removeEntityAddedObserver = (observer) => {
15
- this.onEntityAddedObservers.remove(observer);
16
- };
17
- this.onEntityRemovedObservers = new Entities_1.ObserverList();
18
- this.addEntityRemovedObserver = (observer) => {
19
- this.onEntityRemovedObservers.add(observer);
20
- };
21
- this.removeEntityRemovedObserver = (observer) => {
22
- this.onEntityRemovedObservers.remove(observer);
23
- };
24
- this.hasForAppObject = (appObjectID) => {
25
- return this.entityLookup.has(appObjectID);
26
- };
27
- this.removeForAppObject = (id) => {
28
- const existing = this.entityLookup.get(id);
29
- if (!existing)
30
- return;
31
- this.entityLookup.delete(id);
32
- existing.removeChangeObserver(this.notifyOnChange);
33
- this.notifyOnChange();
34
- this.onEntityRemovedObservers.notify(existing);
35
- };
36
- this.getForAppObject = (appObjectID) => {
37
- return this.entityLookup.get(appObjectID);
38
- };
39
- this.getAll = () => {
40
- return Array.from(this.entityLookup.values());
41
- };
42
- }
43
- add(entity) {
44
- const existing = this.entityLookup.get(entity.appObject.id);
45
- if (existing) {
46
- existing.removeChangeObserver(this.notifyOnChange);
47
- }
48
- this.entityLookup.set(entity.appObject.id, entity);
49
- entity.addChangeObserver(this.notifyOnChange);
50
- this.notifyOnChange();
51
- this.onEntityAddedObservers.notify(entity);
52
- }
53
- ;
54
- }
55
- exports.AppObjectEntityRepo = AppObjectEntityRepo;
56
- //# sourceMappingURL=AppObjectEntityRepo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectEntityRepo.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectEntityRepo.ts"],"names":[],"mappings":";;;AAAA,0CAA2C;AAC3C,uDAAoD;AAEpD,MAAa,mBAEX,SAAQ,iCAAe;IAFzB;;QAIU,iBAAY,GAAG,IAAI,GAAG,EAAa,CAAC;QAEpC,2BAAsB,GAAG,IAAI,uBAAY,EAAK,CAAC;QACvD,2BAAsB,GAAG,CAAC,QAAkC,EAAE,EAAE;YAC9D,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,8BAAyB,GAAG,CAAC,QAAkC,EAAQ,EAAE;YACvE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEM,6BAAwB,GAAG,IAAI,uBAAY,EAAK,CAAC;QACzD,6BAAwB,GAAG,CAAC,QAAoC,EAAE,EAAE;YAClE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC;QACF,gCAA2B,GAAG,CAC5B,QAAoC,EAC9B,EAAE;YACR,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,WAAmB,EAAW,EAAE;YACjD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC;QAcF,uBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,WAAmB,EAAiB,EAAE;YACvD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,WAAM,GAAG,GAAQ,EAAE;YACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC;IA7BC,GAAG,CAAC,MAAS;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAA,CAAC;CAmBH;AAzDD,kDAyDC","sourcesContent":["import { ObserverList } from \"../Entities\";\r\nimport { AppObjectEntity } from \"./AppObjectEntity\";\r\n\r\nexport class AppObjectEntityRepo<\r\n T extends AppObjectEntity\r\n> extends AppObjectEntity {\r\n\r\n private entityLookup = new Map<string, T>();\r\n\r\n private onEntityAddedObservers = new ObserverList<T>();\r\n addEntityAddedObserver = (observer: (addedEntity: T) => void) => {\r\n this.onEntityAddedObservers.add(observer);\r\n };\r\n removeEntityAddedObserver = (observer: (addedEntity: T) => void): void => {\r\n this.onEntityAddedObservers.remove(observer);\r\n };\r\n\r\n private onEntityRemovedObservers = new ObserverList<T>();\r\n addEntityRemovedObserver = (observer: (removedEntity: T) => void) => {\r\n this.onEntityRemovedObservers.add(observer);\r\n };\r\n removeEntityRemovedObserver = (\r\n observer: (removedEntity: T) => void\r\n ): void => {\r\n this.onEntityRemovedObservers.remove(observer);\r\n };\r\n\r\n hasForAppObject = (appObjectID: string): boolean => {\r\n return this.entityLookup.has(appObjectID);\r\n };\r\n\r\n add(entity: T) {\r\n const existing = this.entityLookup.get(entity.appObject.id);\r\n if (existing) {\r\n existing.removeChangeObserver(this.notifyOnChange);\r\n }\r\n\r\n this.entityLookup.set(entity.appObject.id, entity);\r\n entity.addChangeObserver(this.notifyOnChange);\r\n this.notifyOnChange();\r\n this.onEntityAddedObservers.notify(entity);\r\n };\r\n\r\n removeForAppObject = (id: string) => {\r\n const existing = this.entityLookup.get(id);\r\n if (!existing) return;\r\n\r\n this.entityLookup.delete(id);\r\n existing.removeChangeObserver(this.notifyOnChange);\r\n this.notifyOnChange();\r\n this.onEntityRemovedObservers.notify(existing);\r\n };\r\n\r\n getForAppObject = (appObjectID: string): T | undefined => {\r\n return this.entityLookup.get(appObjectID);\r\n };\r\n\r\n getAll = (): T[] => {\r\n return Array.from(this.entityLookup.values());\r\n };\r\n}\r\n"]}
@@ -1,149 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const AppObject_1 = require("./AppObject");
4
- const AppObjectEntity_1 = require("./AppObjectEntity");
5
- const AppObjectEntityRepo_1 = require("./AppObjectEntityRepo");
6
- const AppObjectRepo_1 = require("./AppObjectRepo");
7
- class MockAppEntity extends AppObjectEntity_1.AppObjectEntity {
8
- constructor(appObject) {
9
- super(appObject, MockAppEntity.type);
10
- }
11
- }
12
- MockAppEntity.type = "mockEntity";
13
- class MockEntityRepoImp extends AppObjectEntityRepo_1.AppObjectEntityRepo {
14
- makeEntity(appObj) {
15
- return new MockAppEntity(appObj);
16
- }
17
- constructor(appObject) {
18
- super(appObject, MockAppEntity.type);
19
- }
20
- }
21
- MockEntityRepoImp.type = "Mock Repo";
22
- function makeTestRig() {
23
- const appObjects = (0, AppObjectRepo_1.makeAppObjectRepo)();
24
- const repoAppObj = (0, AppObject_1.makeAppObject)("repo", appObjects);
25
- const repo = new MockEntityRepoImp(repoAppObj);
26
- const appObj = (0, AppObject_1.makeAppObject)("appObjID", appObjects);
27
- const observer = jest.fn();
28
- repo.addChangeObserver(observer);
29
- return { repo, observer, appObj };
30
- }
31
- describe("Observable Entity Repo", () => {
32
- it("Allows an entity to be added", () => {
33
- const { repo, appObj } = makeTestRig();
34
- const entity = new MockAppEntity(appObj);
35
- expect(repo.hasForAppObject("appObjID")).toEqual(false);
36
- repo.add(entity);
37
- expect(repo.hasForAppObject("appObjID")).toEqual(true);
38
- });
39
- it("Notifies when an entity is added", () => {
40
- const { repo, observer, appObj } = makeTestRig();
41
- const entity = new MockAppEntity(appObj);
42
- repo.add(entity);
43
- expect(observer).toBeCalled();
44
- });
45
- it("Forwards notification from an added entity", () => {
46
- const { repo, observer, appObj } = makeTestRig();
47
- const entity = new MockAppEntity(appObj);
48
- repo.add(entity);
49
- observer.mockClear();
50
- entity.notifyOnChange();
51
- expect(observer).toBeCalled();
52
- });
53
- it("Stops notifying if adding an entity replaces and exisitng entity", () => {
54
- const { repo, observer, appObj } = makeTestRig();
55
- console.warn = jest.fn(); // Replacing warns. This keeps the console clean
56
- const original = new MockAppEntity(appObj);
57
- repo.add(original);
58
- const replacement = new MockAppEntity(appObj);
59
- repo.add(replacement);
60
- observer.mockClear();
61
- original.notifyOnChange();
62
- expect(observer).not.toBeCalled();
63
- });
64
- it("Removes an entity", () => {
65
- const { repo, appObj } = makeTestRig();
66
- const entity = new MockAppEntity(appObj);
67
- repo.add(entity);
68
- expect(repo.hasForAppObject("appObjID")).toEqual(true);
69
- repo.removeForAppObject("appObjID");
70
- expect(repo.hasForAppObject("appObjID")).toEqual(false);
71
- });
72
- it("Notifies if an entity is removed", () => {
73
- const { repo, observer, appObj } = makeTestRig();
74
- const entity = new MockAppEntity(appObj);
75
- repo.add(entity);
76
- observer.mockClear();
77
- repo.removeForAppObject("appObjID");
78
- expect(observer).toBeCalled();
79
- });
80
- it("Does not notifyOnChange if the entity to be removed cannot be found", () => {
81
- const { repo, observer } = makeTestRig();
82
- repo.removeForAppObject("someId");
83
- repo.removeForAppObject("someId");
84
- repo.removeForAppObject("someId");
85
- expect(observer).not.toBeCalled();
86
- });
87
- it("Stops observing a removed entity", () => {
88
- const { repo, observer, appObj } = makeTestRig();
89
- const entity = new MockAppEntity(appObj);
90
- repo.add(entity);
91
- repo.removeForAppObject("appObjID");
92
- observer.mockClear();
93
- entity.notifyOnChange();
94
- expect(observer).not.toBeCalled();
95
- });
96
- it("Gets an entity", () => {
97
- const { repo, appObj } = makeTestRig();
98
- const entity = new MockAppEntity(appObj);
99
- repo.add(entity);
100
- expect(repo.getForAppObject("appObjID")).toEqual(entity);
101
- });
102
- it("Gets all entities", () => {
103
- const { repo, appObj } = makeTestRig();
104
- const entity = new MockAppEntity(appObj);
105
- repo.add(entity);
106
- expect(repo.getAll()).toEqual([entity]);
107
- });
108
- it("Returns undefined for an unknown entity", () => {
109
- const { repo } = makeTestRig();
110
- expect(repo.getForAppObject("unknownID")).toBeUndefined();
111
- });
112
- it("Supports notifying an observer when an entity is added", () => {
113
- const { repo, appObj } = makeTestRig();
114
- const addEntityObserver = jest.fn();
115
- repo.addEntityAddedObserver(addEntityObserver);
116
- const ent = new MockAppEntity(appObj);
117
- repo.add(ent);
118
- expect(addEntityObserver).toBeCalledWith(ent);
119
- });
120
- it("Add entity observer can be removed", () => {
121
- const { repo, appObj } = makeTestRig();
122
- const addEntityObserver = jest.fn();
123
- repo.addEntityAddedObserver(addEntityObserver);
124
- repo.removeEntityAddedObserver(addEntityObserver);
125
- const ent = new MockAppEntity(appObj);
126
- repo.add(ent);
127
- expect(addEntityObserver).not.toBeCalled();
128
- });
129
- it("Supports notifying an observer when an entity is removed", () => {
130
- const { repo, appObj } = makeTestRig();
131
- const removeEntityObserver = jest.fn();
132
- repo.addEntityRemovedObserver(removeEntityObserver);
133
- const ent = new MockAppEntity(appObj);
134
- repo.add(ent);
135
- repo.removeForAppObject("appObjID");
136
- expect(removeEntityObserver).toBeCalledWith(ent);
137
- });
138
- it("Remove entity observer can be removed", () => {
139
- const { repo, appObj } = makeTestRig();
140
- const removeEntityObserver = jest.fn();
141
- repo.addEntityRemovedObserver(removeEntityObserver);
142
- repo.removeEntityRemovedObserver(removeEntityObserver);
143
- const ent = new MockAppEntity(appObj);
144
- repo.add(ent);
145
- repo.removeForAppObject("appObjID");
146
- expect(removeEntityObserver).not.toBeCalled();
147
- });
148
- });
149
- //# sourceMappingURL=AppObjectEntityRepo.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectEntityRepo.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectEntityRepo.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectEntity } from \"./AppObjectEntity\";\r\nimport { AppObjectEntityRepo } from \"./AppObjectEntityRepo\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nclass MockAppEntity extends AppObjectEntity {\r\n static type: string = \"mockEntity\";\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockAppEntity.type)\r\n }\r\n}\r\n\r\nclass MockEntityRepoImp extends AppObjectEntityRepo<MockAppEntity> {\r\n static type: string = \"Mock Repo\";\r\n\r\n makeEntity(appObj: AppObject): MockAppEntity {\r\n return new MockAppEntity(appObj);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockAppEntity.type)\r\n }\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const repoAppObj = makeAppObject(\"repo\", appObjects);\r\n const repo = new MockEntityRepoImp(repoAppObj);\r\n \r\n const appObj = makeAppObject(\"appObjID\", appObjects);\r\n const observer = jest.fn();\r\n repo.addChangeObserver(observer);\r\n\r\n return { repo, observer, appObj };\r\n}\r\n\r\ndescribe(\"Observable Entity Repo\", () => {\r\n it(\"Allows an entity to be added\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity = new MockAppEntity(appObj);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(false);\r\n\r\n repo.add(entity);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(true);\r\n });\r\n\r\n it(\"Notifies when an entity is added\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Forwards notification from an added entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n observer.mockClear();\r\n\r\n entity.notifyOnChange();\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Stops notifying if adding an entity replaces and exisitng entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n\r\n console.warn = jest.fn(); // Replacing warns. This keeps the console clean\r\n\r\n const original =new MockAppEntity(appObj);\r\n repo.add(original);\r\n\r\n const replacement =new MockAppEntity(appObj);\r\n repo.add(replacement);\r\n observer.mockClear();\r\n\r\n original.notifyOnChange();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Removes an entity\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(true);\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(false);\r\n });\r\n\r\n it(\"Notifies if an entity is removed\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n observer.mockClear();\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Does not notifyOnChange if the entity to be removed cannot be found\", () => {\r\n const { repo, observer } = makeTestRig();\r\n\r\n repo.removeForAppObject(\"someId\");\r\n repo.removeForAppObject(\"someId\");\r\n repo.removeForAppObject(\"someId\");\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Stops observing a removed entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n observer.mockClear();\r\n\r\n entity.notifyOnChange();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Gets an entity\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(repo.getForAppObject(\"appObjID\")).toEqual(entity);\r\n });\r\n\r\n it(\"Gets all entities\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(repo.getAll()).toEqual([entity]);\r\n });\r\n\r\n it(\"Returns undefined for an unknown entity\", () => {\r\n const { repo } = makeTestRig();\r\n\r\n expect(repo.getForAppObject(\"unknownID\")).toBeUndefined();\r\n });\r\n\r\n\r\n it(\"Supports notifying an observer when an entity is added\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const addEntityObserver = jest.fn();\r\n repo.addEntityAddedObserver(addEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n expect(addEntityObserver).toBeCalledWith(ent);\r\n });\r\n\r\n it(\"Add entity observer can be removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const addEntityObserver = jest.fn();\r\n repo.addEntityAddedObserver(addEntityObserver);\r\n repo.removeEntityAddedObserver(addEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n expect(addEntityObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Supports notifying an observer when an entity is removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const removeEntityObserver = jest.fn();\r\n repo.addEntityRemovedObserver(removeEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(removeEntityObserver).toBeCalledWith(ent);\r\n });\r\n\r\n it(\"Remove entity observer can be removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const removeEntityObserver = jest.fn();\r\n repo.addEntityRemovedObserver(removeEntityObserver);\r\n repo.removeEntityRemovedObserver(removeEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(removeEntityObserver).not.toBeCalled();\r\n });\r\n});\r\n"]}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppObjectPM = void 0;
4
- const Entities_1 = require("../Entities");
5
- const AppObjectComponent_1 = require("./AppObjectComponent");
6
- class AppObjectPM extends AppObjectComponent_1.AppObjectComponent {
7
- constructor() {
8
- super(...arguments);
9
- this.componentType = AppObjectComponent_1.AppObjectComponentType.PM;
10
- this.observerList = new Entities_1.ObserverList();
11
- }
12
- get lastVM() {
13
- return this._lastVM;
14
- }
15
- addView(updateView) {
16
- this.observerList.add(updateView);
17
- if (this._lastVM !== undefined) {
18
- updateView(this._lastVM);
19
- }
20
- }
21
- removeView(updateView) {
22
- this.observerList.remove(updateView);
23
- }
24
- doUpdateView(vm) {
25
- if (this._lastVM && this.vmsAreEqual(this._lastVM, vm)) {
26
- return;
27
- }
28
- this._lastVM = vm;
29
- this.observerList.notify(vm);
30
- }
31
- dispose() {
32
- this.observerList.clear();
33
- if (this.appObject.getComponent(this.type) === this) {
34
- this.appObject.removeComponent(this.type);
35
- }
36
- super.dispose();
37
- }
38
- }
39
- exports.AppObjectPM = AppObjectPM;
40
- //# sourceMappingURL=AppObjectPM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectPM.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectPM.ts"],"names":[],"mappings":";;;AAAA,0CAA2C;AAC3C,6DAAkF;AAElF,MAAsB,WAAe,SAAQ,uCAAkB;IAA/D;;QACW,kBAAa,GAAG,2CAAsB,CAAC,EAAE,CAAC;QAQ3C,iBAAY,GAAG,IAAI,uBAAY,EAAK,CAAC;IA8B/C,CAAC;IAlCC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAID,OAAO,CAAC,UAA2B;QACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAA2B;QACpC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,CAAC,EAAK;QAChB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAvCD,kCAuCC","sourcesContent":["import { ObserverList } from \"../Entities\";\r\nimport { AppObjectComponent, AppObjectComponentType } from \"./AppObjectComponent\";\r\n\r\nexport abstract class AppObjectPM<T> extends AppObjectComponent {\r\n readonly componentType = AppObjectComponentType.PM;\r\n abstract vmsAreEqual(a: T, b: T): boolean;\r\n\r\n private _lastVM?: T;\r\n get lastVM(): T | undefined {\r\n return this._lastVM;\r\n }\r\n\r\n private observerList = new ObserverList<T>();\r\n\r\n addView(updateView: (vm: T) => void): void {\r\n this.observerList.add(updateView);\r\n\r\n if (this._lastVM !== undefined) {\r\n updateView(this._lastVM);\r\n }\r\n }\r\n\r\n removeView(updateView: (vm: T) => void): void {\r\n this.observerList.remove(updateView);\r\n }\r\n\r\n doUpdateView(vm: T) {\r\n if (this._lastVM && this.vmsAreEqual(this._lastVM, vm)) {\r\n return;\r\n }\r\n\r\n this._lastVM = vm;\r\n this.observerList.notify(vm);\r\n }\r\n\r\n dispose() {\r\n this.observerList.clear();\r\n if (this.appObject.getComponent(this.type) === this) {\r\n this.appObject.removeComponent(this.type);\r\n }\r\n super.dispose();\r\n }\r\n}\r\n"]}
@@ -1,103 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const AppObjectComponent_1 = require("./AppObjectComponent");
4
- const AppObjectPM_1 = require("./AppObjectPM");
5
- const AppObjectRepo_1 = require("./AppObjectRepo");
6
- class MockPM extends AppObjectPM_1.AppObjectPM {
7
- get currentVM() {
8
- return { val: 5 };
9
- }
10
- vmsAreEqual(a, b) {
11
- return a.val === b.val;
12
- }
13
- constructor(appObj) {
14
- super(appObj, MockPM.type);
15
- this.defaultVM = { val: 0 };
16
- }
17
- }
18
- MockPM.type = "MockPM";
19
- function makeTestRig() {
20
- const appObjects = (0, AppObjectRepo_1.makeAppObjectRepo)();
21
- const appObj = appObjects.getOrCreate("appObj");
22
- return { appObj, appObjects };
23
- }
24
- describe("App Object PM", () => {
25
- it("Initializes with the last VM if it has been set", () => {
26
- const { appObj } = makeTestRig();
27
- const pm = new MockPM(appObj);
28
- const view = jest.fn();
29
- pm.doUpdateView({ val: 6 });
30
- pm.addView(view);
31
- expect(view).toBeCalledWith({ val: 6 });
32
- });
33
- it("Adds a view but does not call it if no VM has been set", () => {
34
- const { appObj } = makeTestRig();
35
- const pm = new MockPM(appObj);
36
- const view = jest.fn();
37
- pm.addView(view);
38
- expect(view).not.toBeCalled();
39
- });
40
- it("Doesn't notify if the vms are equal", () => {
41
- const { appObj } = makeTestRig();
42
- const pm = new MockPM(appObj);
43
- const view = jest.fn();
44
- pm.doUpdateView({ val: 6 });
45
- pm.addView(view);
46
- view.mockClear();
47
- pm.doUpdateView({ val: 6 });
48
- pm.doUpdateView({ val: 6 });
49
- pm.doUpdateView({ val: 6 });
50
- expect(view).not.toBeCalled();
51
- });
52
- it("Removes a view", () => {
53
- const { appObj } = makeTestRig();
54
- const pm = new MockPM(appObj);
55
- const view = jest.fn();
56
- pm.addView(view);
57
- view.mockClear();
58
- pm.removeView(view);
59
- pm.doUpdateView({ val: 10 });
60
- expect(view).not.toBeCalled();
61
- });
62
- it("Can be disposed", () => {
63
- const { appObj } = makeTestRig();
64
- const pm = new MockPM(appObj);
65
- const view = jest.fn();
66
- pm.addView(view);
67
- view.mockClear();
68
- pm.dispose();
69
- pm.doUpdateView({ val: 10 });
70
- expect(view).not.toBeCalled();
71
- });
72
- it("Adds itself to the App Object", () => {
73
- const { appObj } = makeTestRig();
74
- expect(appObj.hasComponent(MockPM.type)).toEqual(false);
75
- const pm = new MockPM(appObj);
76
- expect(appObj.hasComponent(MockPM.type)).toEqual(true);
77
- });
78
- it("Removes itself from the App Object when disposed", () => {
79
- const { appObj } = makeTestRig();
80
- const pm = new MockPM(appObj);
81
- expect(appObj.hasComponent(MockPM.type)).toEqual(true);
82
- pm.dispose();
83
- expect(appObj.hasComponent(MockPM.type)).toEqual(false);
84
- });
85
- it("Returns the repo", () => {
86
- const { appObj, appObjects } = makeTestRig();
87
- const pm = new MockPM(appObj);
88
- expect(pm.appObjects).toEqual(appObjects);
89
- });
90
- it("Forwards a warn to the App Object Repo warn", () => {
91
- const { appObj, appObjects } = makeTestRig();
92
- appObjects.submitWarning = jest.fn();
93
- const pm = new MockPM(appObj);
94
- pm.warn("Some warning");
95
- expect(appObjects.submitWarning).toBeCalledWith(`appObj/MockPM`, "Some warning");
96
- });
97
- it("Sets Component type to PM", () => {
98
- const { appObj } = makeTestRig();
99
- const pm = new MockPM(appObj);
100
- expect(pm.componentType).toEqual(AppObjectComponent_1.AppObjectComponentType.PM);
101
- });
102
- });
103
- //# sourceMappingURL=AppObjectPM.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectPM.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectPM.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject } from \"./AppObject\";\r\nimport { AppObjectComponentType } from \"./AppObjectComponent\";\r\nimport { AppObjectPM } from \"./AppObjectPM\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\ninterface MockVM {\r\n val: number;\r\n}\r\n\r\nclass MockPM extends AppObjectPM<MockVM> {\r\n static readonly type = \"MockPM\";\r\n\r\n readonly defaultVM = { val: 0 };\r\n get currentVM(): MockVM {\r\n return { val: 5 };\r\n }\r\n\r\n vmsAreEqual(a: MockVM, b: MockVM): boolean {\r\n return a.val === b.val;\r\n }\r\n\r\n constructor(appObj: AppObject) {\r\n super(appObj, MockPM.type);\r\n }\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = appObjects.getOrCreate(\"appObj\");\r\n\r\n return { appObj, appObjects };\r\n}\r\n\r\ndescribe(\"App Object PM\", () => {\r\n it(\"Initializes with the last VM if it has been set\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.doUpdateView({ val: 6 });\r\n\r\n pm.addView(view);\r\n\r\n expect(view).toBeCalledWith({ val: 6 });\r\n });\r\n\r\n it(\"Adds a view but does not call it if no VM has been set\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.addView(view);\r\n\r\n expect(view).not.toBeCalled();\r\n });\r\n\r\n it(\"Doesn't notify if the vms are equal\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.doUpdateView({ val: 6 });\r\n pm.addView(view);\r\n\r\n view.mockClear();\r\n\r\n pm.doUpdateView({ val: 6 });\r\n pm.doUpdateView({ val: 6 });\r\n pm.doUpdateView({ val: 6 });\r\n\r\n expect(view).not.toBeCalled();\r\n });\r\n\r\n it(\"Removes a view\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.addView(view);\r\n\r\n view.mockClear();\r\n\r\n pm.removeView(view);\r\n\r\n pm.doUpdateView({ val: 10 });\r\n\r\n expect(view).not.toBeCalled();\r\n });\r\n\r\n it(\"Can be disposed\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.addView(view);\r\n view.mockClear();\r\n\r\n pm.dispose();\r\n\r\n pm.doUpdateView({ val: 10 });\r\n\r\n expect(view).not.toBeCalled();\r\n });\r\n\r\n it(\"Adds itself to the App Object\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(MockPM.type)).toEqual(false);\r\n\r\n const pm = new MockPM(appObj);\r\n\r\n expect(appObj.hasComponent(MockPM.type)).toEqual(true);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n\r\n expect(appObj.hasComponent(MockPM.type)).toEqual(true);\r\n\r\n pm.dispose();\r\n\r\n expect(appObj.hasComponent(MockPM.type)).toEqual(false);\r\n });\r\n\r\n it(\"Returns the repo\", () => {\r\n const { appObj, appObjects } = makeTestRig();\r\n\r\n const pm = new MockPM(appObj);\r\n expect(pm.appObjects).toEqual(appObjects);\r\n });\r\n\r\n it(\"Forwards a warn to the App Object Repo warn\", () => {\r\n const { appObj, appObjects } = makeTestRig();\r\n appObjects.submitWarning = jest.fn();\r\n\r\n const pm = new MockPM(appObj);\r\n pm.warn(\"Some warning\");\r\n\r\n expect(appObjects.submitWarning).toBeCalledWith(\r\n `appObj/MockPM`,\r\n \"Some warning\"\r\n );\r\n });\r\n\r\n it(\"Sets Component type to PM\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n\r\n expect(pm.componentType).toEqual(AppObjectComponentType.PM);\r\n });\r\n});\r\n"]}