@vived/core 1.0.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 (341) hide show
  1. package/README.md +29 -0
  2. package/babel.config.js +12 -0
  3. package/dist/AppObject/AppObject.d.ts +15 -0
  4. package/dist/AppObject/AppObject.d.ts.map +1 -0
  5. package/dist/AppObject/AppObject.js +54 -0
  6. package/dist/AppObject/AppObject.js.map +1 -0
  7. package/dist/AppObject/AppObject.test.d.ts +7 -0
  8. package/dist/AppObject/AppObject.test.d.ts.map +1 -0
  9. package/dist/AppObject/AppObject.test.js +110 -0
  10. package/dist/AppObject/AppObject.test.js.map +1 -0
  11. package/dist/AppObject/AppObjectComponent.d.ts +26 -0
  12. package/dist/AppObject/AppObjectComponent.d.ts.map +1 -0
  13. package/dist/AppObject/AppObjectComponent.js +78 -0
  14. package/dist/AppObject/AppObjectComponent.js.map +1 -0
  15. package/dist/AppObject/AppObjectComponent.test.d.ts +2 -0
  16. package/dist/AppObject/AppObjectComponent.test.d.ts.map +1 -0
  17. package/dist/AppObject/AppObjectComponent.test.js +130 -0
  18. package/dist/AppObject/AppObjectComponent.test.js.map +1 -0
  19. package/dist/AppObject/AppObjectController.d.ts +5 -0
  20. package/dist/AppObject/AppObjectController.d.ts.map +1 -0
  21. package/dist/AppObject/AppObjectController.js +8 -0
  22. package/dist/AppObject/AppObjectController.js.map +1 -0
  23. package/dist/AppObject/AppObjectEntity.d.ts +16 -0
  24. package/dist/AppObject/AppObjectEntity.d.ts.map +1 -0
  25. package/dist/AppObject/AppObjectEntity.js +34 -0
  26. package/dist/AppObject/AppObjectEntity.js.map +1 -0
  27. package/dist/AppObject/AppObjectEntity.test.d.ts +2 -0
  28. package/dist/AppObject/AppObjectEntity.test.d.ts.map +1 -0
  29. package/dist/AppObject/AppObjectEntity.test.js +106 -0
  30. package/dist/AppObject/AppObjectEntity.test.js.map +1 -0
  31. package/dist/AppObject/AppObjectEntityRepo.d.ts +16 -0
  32. package/dist/AppObject/AppObjectEntityRepo.d.ts.map +1 -0
  33. package/dist/AppObject/AppObjectEntityRepo.js +52 -0
  34. package/dist/AppObject/AppObjectEntityRepo.js.map +1 -0
  35. package/dist/AppObject/AppObjectEntityRepo.test.d.ts +2 -0
  36. package/dist/AppObject/AppObjectEntityRepo.test.d.ts.map +1 -0
  37. package/dist/AppObject/AppObjectEntityRepo.test.js +147 -0
  38. package/dist/AppObject/AppObjectEntityRepo.test.js.map +1 -0
  39. package/dist/AppObject/AppObjectPM.d.ts +13 -0
  40. package/dist/AppObject/AppObjectPM.d.ts.map +1 -0
  41. package/dist/AppObject/AppObjectPM.js +36 -0
  42. package/dist/AppObject/AppObjectPM.js.map +1 -0
  43. package/dist/AppObject/AppObjectPM.test.d.ts +2 -0
  44. package/dist/AppObject/AppObjectPM.test.d.ts.map +1 -0
  45. package/dist/AppObject/AppObjectPM.test.js +101 -0
  46. package/dist/AppObject/AppObjectPM.test.js.map +1 -0
  47. package/dist/AppObject/AppObjectRepo.d.ts +26 -0
  48. package/dist/AppObject/AppObjectRepo.d.ts.map +1 -0
  49. package/dist/AppObject/AppObjectRepo.js +128 -0
  50. package/dist/AppObject/AppObjectRepo.js.map +1 -0
  51. package/dist/AppObject/AppObjectRepo.test.d.ts +2 -0
  52. package/dist/AppObject/AppObjectRepo.test.d.ts.map +1 -0
  53. package/dist/AppObject/AppObjectRepo.test.js +211 -0
  54. package/dist/AppObject/AppObjectRepo.test.js.map +1 -0
  55. package/dist/AppObject/AppObjectUC.d.ts +5 -0
  56. package/dist/AppObject/AppObjectUC.d.ts.map +1 -0
  57. package/dist/AppObject/AppObjectUC.js +8 -0
  58. package/dist/AppObject/AppObjectUC.js.map +1 -0
  59. package/dist/AppObject/AppObjectView.d.ts +5 -0
  60. package/dist/AppObject/AppObjectView.d.ts.map +1 -0
  61. package/dist/AppObject/AppObjectView.js +8 -0
  62. package/dist/AppObject/AppObjectView.js.map +1 -0
  63. package/dist/AppObject/getSingletonComponent.d.ts +4 -0
  64. package/dist/AppObject/getSingletonComponent.d.ts.map +1 -0
  65. package/dist/AppObject/getSingletonComponent.js +4 -0
  66. package/dist/AppObject/getSingletonComponent.js.map +1 -0
  67. package/dist/AppObject/getSingletonComponent.test.d.ts +2 -0
  68. package/dist/AppObject/getSingletonComponent.test.d.ts.map +1 -0
  69. package/dist/AppObject/getSingletonComponent.test.js +11 -0
  70. package/dist/AppObject/getSingletonComponent.test.js.map +1 -0
  71. package/dist/AppObject/index.d.ts +11 -0
  72. package/dist/AppObject/index.d.ts.map +1 -0
  73. package/dist/AppObject/index.js +11 -0
  74. package/dist/AppObject/index.js.map +1 -0
  75. package/dist/AppObject/printAppObjectDetails.d.ts +3 -0
  76. package/dist/AppObject/printAppObjectDetails.d.ts.map +1 -0
  77. package/dist/AppObject/printAppObjectDetails.js +15 -0
  78. package/dist/AppObject/printAppObjectDetails.js.map +1 -0
  79. package/dist/Entities/MemoizedAngle.d.ts +10 -0
  80. package/dist/Entities/MemoizedAngle.d.ts.map +1 -0
  81. package/dist/Entities/MemoizedAngle.js +19 -0
  82. package/dist/Entities/MemoizedAngle.js.map +1 -0
  83. package/dist/Entities/MemoizedAngle.test.d.ts +2 -0
  84. package/dist/Entities/MemoizedAngle.test.d.ts.map +1 -0
  85. package/dist/Entities/MemoizedAngle.test.js +28 -0
  86. package/dist/Entities/MemoizedAngle.test.js.map +1 -0
  87. package/dist/Entities/MemoizedBoolean.d.ts +9 -0
  88. package/dist/Entities/MemoizedBoolean.d.ts.map +1 -0
  89. package/dist/Entities/MemoizedBoolean.js +19 -0
  90. package/dist/Entities/MemoizedBoolean.js.map +1 -0
  91. package/dist/Entities/MemoizedBoolean.test.d.ts +2 -0
  92. package/dist/Entities/MemoizedBoolean.test.d.ts.map +1 -0
  93. package/dist/Entities/MemoizedBoolean.test.js +32 -0
  94. package/dist/Entities/MemoizedBoolean.test.js.map +1 -0
  95. package/dist/Entities/MemoizedColor.d.ts +10 -0
  96. package/dist/Entities/MemoizedColor.d.ts.map +1 -0
  97. package/dist/Entities/MemoizedColor.js +20 -0
  98. package/dist/Entities/MemoizedColor.js.map +1 -0
  99. package/dist/Entities/MemoizedColor.test.d.ts +2 -0
  100. package/dist/Entities/MemoizedColor.test.d.ts.map +1 -0
  101. package/dist/Entities/MemoizedColor.test.js +30 -0
  102. package/dist/Entities/MemoizedColor.test.js.map +1 -0
  103. package/dist/Entities/MemoizedNumber.d.ts +9 -0
  104. package/dist/Entities/MemoizedNumber.d.ts.map +1 -0
  105. package/dist/Entities/MemoizedNumber.js +19 -0
  106. package/dist/Entities/MemoizedNumber.js.map +1 -0
  107. package/dist/Entities/MemoizedNumber.test.d.ts +2 -0
  108. package/dist/Entities/MemoizedNumber.test.d.ts.map +1 -0
  109. package/dist/Entities/MemoizedNumber.test.js +27 -0
  110. package/dist/Entities/MemoizedNumber.test.js.map +1 -0
  111. package/dist/Entities/MemoizedQuaternion.d.ts +10 -0
  112. package/dist/Entities/MemoizedQuaternion.d.ts.map +1 -0
  113. package/dist/Entities/MemoizedQuaternion.js +20 -0
  114. package/dist/Entities/MemoizedQuaternion.js.map +1 -0
  115. package/dist/Entities/MemoizedQuaternion.test.d.ts +2 -0
  116. package/dist/Entities/MemoizedQuaternion.test.d.ts.map +1 -0
  117. package/dist/Entities/MemoizedQuaternion.test.js +30 -0
  118. package/dist/Entities/MemoizedQuaternion.test.js.map +1 -0
  119. package/dist/Entities/MemoizedString.d.ts +9 -0
  120. package/dist/Entities/MemoizedString.d.ts.map +1 -0
  121. package/dist/Entities/MemoizedString.js +19 -0
  122. package/dist/Entities/MemoizedString.js.map +1 -0
  123. package/dist/Entities/MemoizedString.test.d.ts +2 -0
  124. package/dist/Entities/MemoizedString.test.d.ts.map +1 -0
  125. package/dist/Entities/MemoizedString.test.js +27 -0
  126. package/dist/Entities/MemoizedString.test.js.map +1 -0
  127. package/dist/Entities/MemoizedVector2.d.ts +10 -0
  128. package/dist/Entities/MemoizedVector2.d.ts.map +1 -0
  129. package/dist/Entities/MemoizedVector2.js +20 -0
  130. package/dist/Entities/MemoizedVector2.js.map +1 -0
  131. package/dist/Entities/MemoizedVector2.test.d.ts +2 -0
  132. package/dist/Entities/MemoizedVector2.test.d.ts.map +1 -0
  133. package/dist/Entities/MemoizedVector2.test.js +30 -0
  134. package/dist/Entities/MemoizedVector2.test.js.map +1 -0
  135. package/dist/Entities/MemoizedVector3.d.ts +10 -0
  136. package/dist/Entities/MemoizedVector3.d.ts.map +1 -0
  137. package/dist/Entities/MemoizedVector3.js +20 -0
  138. package/dist/Entities/MemoizedVector3.js.map +1 -0
  139. package/dist/Entities/MemoizedVector3.test.d.ts +2 -0
  140. package/dist/Entities/MemoizedVector3.test.d.ts.map +1 -0
  141. package/dist/Entities/MemoizedVector3.test.js +30 -0
  142. package/dist/Entities/MemoizedVector3.test.js.map +1 -0
  143. package/dist/Entities/ObservableEntity.d.ts +8 -0
  144. package/dist/Entities/ObservableEntity.d.ts.map +1 -0
  145. package/dist/Entities/ObservableEntity.js +16 -0
  146. package/dist/Entities/ObservableEntity.js.map +1 -0
  147. package/dist/Entities/ObservableEntity.test.d.ts +2 -0
  148. package/dist/Entities/ObservableEntity.test.d.ts.map +1 -0
  149. package/dist/Entities/ObservableEntity.test.js +23 -0
  150. package/dist/Entities/ObservableEntity.test.js.map +1 -0
  151. package/dist/Entities/ObserverList.d.ts +8 -0
  152. package/dist/Entities/ObserverList.d.ts.map +1 -0
  153. package/dist/Entities/ObserverList.js +23 -0
  154. package/dist/Entities/ObserverList.js.map +1 -0
  155. package/dist/Entities/ObserverList.test.d.ts +2 -0
  156. package/dist/Entities/ObserverList.test.d.ts.map +1 -0
  157. package/dist/Entities/ObserverList.test.js +42 -0
  158. package/dist/Entities/ObserverList.test.js.map +1 -0
  159. package/dist/Entities/index.d.ts +11 -0
  160. package/dist/Entities/index.d.ts.map +1 -0
  161. package/dist/Entities/index.js +11 -0
  162. package/dist/Entities/index.js.map +1 -0
  163. package/dist/Types/AppBoundary.d.ts +11 -0
  164. package/dist/Types/AppBoundary.d.ts.map +1 -0
  165. package/dist/Types/AppBoundary.js +2 -0
  166. package/dist/Types/AppBoundary.js.map +1 -0
  167. package/dist/Types/EaseFn.d.ts +2 -0
  168. package/dist/Types/EaseFn.d.ts.map +1 -0
  169. package/dist/Types/EaseFn.js +2 -0
  170. package/dist/Types/EaseFn.js.map +1 -0
  171. package/dist/Types/PmAdapter.d.ts +7 -0
  172. package/dist/Types/PmAdapter.d.ts.map +1 -0
  173. package/dist/Types/PmAdapter.js +2 -0
  174. package/dist/Types/PmAdapter.js.map +1 -0
  175. package/dist/Types/SingletonPmAdapter.d.ts +7 -0
  176. package/dist/Types/SingletonPmAdapter.d.ts.map +1 -0
  177. package/dist/Types/SingletonPmAdapter.js +2 -0
  178. package/dist/Types/SingletonPmAdapter.js.map +1 -0
  179. package/dist/Types/index.d.ts +5 -0
  180. package/dist/Types/index.d.ts.map +1 -0
  181. package/dist/Types/index.js +5 -0
  182. package/dist/Types/index.js.map +1 -0
  183. package/dist/ValueObjects/Angle.d.ts +27 -0
  184. package/dist/ValueObjects/Angle.d.ts.map +1 -0
  185. package/dist/ValueObjects/Angle.js +43 -0
  186. package/dist/ValueObjects/Angle.js.map +1 -0
  187. package/dist/ValueObjects/Angle.test.d.ts +2 -0
  188. package/dist/ValueObjects/Angle.test.d.ts.map +1 -0
  189. package/dist/ValueObjects/Angle.test.js +26 -0
  190. package/dist/ValueObjects/Angle.test.js.map +1 -0
  191. package/dist/ValueObjects/Color.d.ts +83 -0
  192. package/dist/ValueObjects/Color.d.ts.map +1 -0
  193. package/dist/ValueObjects/Color.js +855 -0
  194. package/dist/ValueObjects/Color.js.map +1 -0
  195. package/dist/ValueObjects/Color.test.d.ts +2 -0
  196. package/dist/ValueObjects/Color.test.d.ts.map +1 -0
  197. package/dist/ValueObjects/Color.test.js +145 -0
  198. package/dist/ValueObjects/Color.test.js.map +1 -0
  199. package/dist/ValueObjects/LineSegment2D.d.ts +12 -0
  200. package/dist/ValueObjects/LineSegment2D.d.ts.map +1 -0
  201. package/dist/ValueObjects/LineSegment2D.js +68 -0
  202. package/dist/ValueObjects/LineSegment2D.js.map +1 -0
  203. package/dist/ValueObjects/LineSegment2D.test.d.ts +2 -0
  204. package/dist/ValueObjects/LineSegment2D.test.d.ts.map +1 -0
  205. package/dist/ValueObjects/LineSegment2D.test.js +100 -0
  206. package/dist/ValueObjects/LineSegment2D.test.js.map +1 -0
  207. package/dist/ValueObjects/Matrix.d.ts +124 -0
  208. package/dist/ValueObjects/Matrix.d.ts.map +1 -0
  209. package/dist/ValueObjects/Matrix.js +462 -0
  210. package/dist/ValueObjects/Matrix.js.map +1 -0
  211. package/dist/ValueObjects/Matrix.test.d.ts +2 -0
  212. package/dist/ValueObjects/Matrix.test.d.ts.map +1 -0
  213. package/dist/ValueObjects/Matrix.test.js +383 -0
  214. package/dist/ValueObjects/Matrix.test.js.map +1 -0
  215. package/dist/ValueObjects/ParametricLine.d.ts +31 -0
  216. package/dist/ValueObjects/ParametricLine.d.ts.map +1 -0
  217. package/dist/ValueObjects/ParametricLine.js +73 -0
  218. package/dist/ValueObjects/ParametricLine.js.map +1 -0
  219. package/dist/ValueObjects/ParametricLine.test.d.ts +2 -0
  220. package/dist/ValueObjects/ParametricLine.test.d.ts.map +1 -0
  221. package/dist/ValueObjects/ParametricLine.test.js +124 -0
  222. package/dist/ValueObjects/ParametricLine.test.js.map +1 -0
  223. package/dist/ValueObjects/ParametricPlane.d.ts +21 -0
  224. package/dist/ValueObjects/ParametricPlane.d.ts.map +1 -0
  225. package/dist/ValueObjects/ParametricPlane.js +61 -0
  226. package/dist/ValueObjects/ParametricPlane.js.map +1 -0
  227. package/dist/ValueObjects/ParametricPlane.test.d.ts +2 -0
  228. package/dist/ValueObjects/ParametricPlane.test.d.ts.map +1 -0
  229. package/dist/ValueObjects/ParametricPlane.test.js +99 -0
  230. package/dist/ValueObjects/ParametricPlane.test.js.map +1 -0
  231. package/dist/ValueObjects/Quaternion.d.ts +113 -0
  232. package/dist/ValueObjects/Quaternion.d.ts.map +1 -0
  233. package/dist/ValueObjects/Quaternion.js +286 -0
  234. package/dist/ValueObjects/Quaternion.js.map +1 -0
  235. package/dist/ValueObjects/Quaternion.test.d.ts +2 -0
  236. package/dist/ValueObjects/Quaternion.test.d.ts.map +1 -0
  237. package/dist/ValueObjects/Quaternion.test.js +238 -0
  238. package/dist/ValueObjects/Quaternion.test.js.map +1 -0
  239. package/dist/ValueObjects/Rectangle.d.ts +16 -0
  240. package/dist/ValueObjects/Rectangle.d.ts.map +1 -0
  241. package/dist/ValueObjects/Rectangle.js +20 -0
  242. package/dist/ValueObjects/Rectangle.js.map +1 -0
  243. package/dist/ValueObjects/Rectangle.test.d.ts +2 -0
  244. package/dist/ValueObjects/Rectangle.test.d.ts.map +1 -0
  245. package/dist/ValueObjects/Rectangle.test.js +30 -0
  246. package/dist/ValueObjects/Rectangle.test.js.map +1 -0
  247. package/dist/ValueObjects/Vector2.d.ts +121 -0
  248. package/dist/ValueObjects/Vector2.d.ts.map +1 -0
  249. package/dist/ValueObjects/Vector2.js +180 -0
  250. package/dist/ValueObjects/Vector2.js.map +1 -0
  251. package/dist/ValueObjects/Vector2.test.d.ts +2 -0
  252. package/dist/ValueObjects/Vector2.test.d.ts.map +1 -0
  253. package/dist/ValueObjects/Vector2.test.js +134 -0
  254. package/dist/ValueObjects/Vector2.test.js.map +1 -0
  255. package/dist/ValueObjects/Vector3.d.ts +150 -0
  256. package/dist/ValueObjects/Vector3.d.ts.map +1 -0
  257. package/dist/ValueObjects/Vector3.js +227 -0
  258. package/dist/ValueObjects/Vector3.js.map +1 -0
  259. package/dist/ValueObjects/Vector3.test.d.ts +2 -0
  260. package/dist/ValueObjects/Vector3.test.d.ts.map +1 -0
  261. package/dist/ValueObjects/Vector3.test.js +186 -0
  262. package/dist/ValueObjects/Vector3.test.js.map +1 -0
  263. package/dist/ValueObjects/index.d.ts +11 -0
  264. package/dist/ValueObjects/index.d.ts.map +1 -0
  265. package/dist/ValueObjects/index.js +11 -0
  266. package/dist/ValueObjects/index.js.map +1 -0
  267. package/dist/index.d.ts +5 -0
  268. package/dist/index.d.ts.map +1 -0
  269. package/dist/index.js +5 -0
  270. package/dist/index.js.map +1 -0
  271. package/jestconfig.json +10 -0
  272. package/package.json +41 -0
  273. package/src/AppObject/AppObject.test.ts +158 -0
  274. package/src/AppObject/AppObject.ts +83 -0
  275. package/src/AppObject/AppObjectComponent.test.ts +219 -0
  276. package/src/AppObject/AppObjectComponent.ts +100 -0
  277. package/src/AppObject/AppObjectController.ts +8 -0
  278. package/src/AppObject/AppObjectEntity.test.ts +151 -0
  279. package/src/AppObject/AppObjectEntity.ts +45 -0
  280. package/src/AppObject/AppObjectEntityRepo.test.ts +211 -0
  281. package/src/AppObject/AppObjectEntityRepo.ts +61 -0
  282. package/src/AppObject/AppObjectPM.test.ts +152 -0
  283. package/src/AppObject/AppObjectPM.ts +43 -0
  284. package/src/AppObject/AppObjectRepo.test.ts +317 -0
  285. package/src/AppObject/AppObjectRepo.ts +203 -0
  286. package/src/AppObject/AppObjectUC.ts +5 -0
  287. package/src/AppObject/AppObjectView.ts +5 -0
  288. package/src/AppObject/getSingletonComponent.test.ts +17 -0
  289. package/src/AppObject/getSingletonComponent.ts +9 -0
  290. package/src/AppObject/index.ts +10 -0
  291. package/src/AppObject/printAppObjectDetails.ts +17 -0
  292. package/src/Entities/MemoizedAngle.test.ts +38 -0
  293. package/src/Entities/MemoizedAngle.ts +25 -0
  294. package/src/Entities/MemoizedBoolean.test.ts +45 -0
  295. package/src/Entities/MemoizedBoolean.ts +23 -0
  296. package/src/Entities/MemoizedColor.test.ts +39 -0
  297. package/src/Entities/MemoizedColor.ts +27 -0
  298. package/src/Entities/MemoizedNumber.test.ts +37 -0
  299. package/src/Entities/MemoizedNumber.ts +23 -0
  300. package/src/Entities/MemoizedQuaternion.test.ts +39 -0
  301. package/src/Entities/MemoizedQuaternion.ts +27 -0
  302. package/src/Entities/MemoizedString.test.ts +37 -0
  303. package/src/Entities/MemoizedString.ts +23 -0
  304. package/src/Entities/MemoizedVector2.test.ts +39 -0
  305. package/src/Entities/MemoizedVector2.ts +27 -0
  306. package/src/Entities/MemoizedVector3.test.ts +39 -0
  307. package/src/Entities/MemoizedVector3.ts +27 -0
  308. package/src/Entities/ObservableEntity.test.ts +28 -0
  309. package/src/Entities/ObservableEntity.ts +17 -0
  310. package/src/Entities/ObserverList.test.ts +61 -0
  311. package/src/Entities/ObserverList.ts +24 -0
  312. package/src/Entities/index.ts +10 -0
  313. package/src/Types/AppBoundary.ts +13 -0
  314. package/src/Types/EaseFn.ts +1 -0
  315. package/src/Types/PmAdapter.ts +15 -0
  316. package/src/Types/SingletonPmAdapter.ts +7 -0
  317. package/src/Types/index.ts +4 -0
  318. package/src/ValueObjects/Angle.test.ts +30 -0
  319. package/src/ValueObjects/Angle.ts +47 -0
  320. package/src/ValueObjects/Color.test.ts +181 -0
  321. package/src/ValueObjects/Color.ts +891 -0
  322. package/src/ValueObjects/LineSegment2D.test.ts +144 -0
  323. package/src/ValueObjects/LineSegment2D.ts +93 -0
  324. package/src/ValueObjects/Matrix.test.ts +498 -0
  325. package/src/ValueObjects/Matrix.ts +567 -0
  326. package/src/ValueObjects/ParametricLine.test.ts +155 -0
  327. package/src/ValueObjects/ParametricLine.ts +114 -0
  328. package/src/ValueObjects/ParametricPlane.test.ts +122 -0
  329. package/src/ValueObjects/ParametricPlane.ts +82 -0
  330. package/src/ValueObjects/Quaternion.test.ts +356 -0
  331. package/src/ValueObjects/Quaternion.ts +353 -0
  332. package/src/ValueObjects/Rectangle.test.ts +32 -0
  333. package/src/ValueObjects/Rectangle.ts +33 -0
  334. package/src/ValueObjects/Vector2.test.ts +167 -0
  335. package/src/ValueObjects/Vector2.ts +209 -0
  336. package/src/ValueObjects/Vector3.test.ts +228 -0
  337. package/src/ValueObjects/Vector3.ts +269 -0
  338. package/src/ValueObjects/index.ts +14 -0
  339. package/src/index.ts +4 -0
  340. package/tsconfig.json +18 -0
  341. package/tslint.json +11 -0
@@ -0,0 +1,23 @@
1
+ export class MemoizedBoolean {
2
+ private _val: boolean;
3
+ get val(): boolean {
4
+ return this._val;
5
+ }
6
+ set val(b: boolean) {
7
+ if (this._val === b) return;
8
+
9
+ this._val = b;
10
+ this.onChangeCallback();
11
+ }
12
+
13
+ public setValQuietly(val: boolean) {
14
+ this._val = val;
15
+ }
16
+
17
+ private onChangeCallback: () => void;
18
+
19
+ constructor(initialValue: boolean, onChangeCallback: () => void) {
20
+ this._val = initialValue;
21
+ this.onChangeCallback = onChangeCallback;
22
+ }
23
+ }
@@ -0,0 +1,39 @@
1
+ import { Color } from "../ValueObjects";
2
+ import { MemoizedColor } from "./MemoizedColor";
3
+
4
+ test("Initial value is stored", () => {
5
+ const initialColor = Color.RGBA(5, 6, 7, 8);
6
+ const memoizedVector = new MemoizedColor(initialColor, jest.fn());
7
+ expect(memoizedVector.val).toEqual(Color.RGBA(5, 6, 7, 8));
8
+ });
9
+
10
+ test("Callback is called when the val changes", () => {
11
+ const cb = jest.fn();
12
+ const initialColor = Color.RGBA(5, 6, 7, 8);
13
+ const memoizedQuat = new MemoizedColor(initialColor, cb);
14
+
15
+ memoizedQuat.val = Color.RGBA(8, 9, 10, 11);
16
+
17
+ expect(cb).toBeCalled();
18
+ });
19
+
20
+ test("Callback is called only when the val changes", () => {
21
+ const cb = jest.fn();
22
+ const initialColor = Color.RGBA(5, 6, 7, 8);
23
+ const memoizedQuat = new MemoizedColor(initialColor, cb);
24
+
25
+ memoizedQuat.val = Color.RGBA(5, 6, 7, 8);
26
+ memoizedQuat.val = Color.RGBA(5, 6, 7, 8);
27
+ memoizedQuat.val = Color.RGBA(5, 6, 7, 8);
28
+
29
+ expect(cb).not.toBeCalled();
30
+ });
31
+
32
+ test("Setting the value quietly should not notify", () => {
33
+ const cb = jest.fn();
34
+ const memoizedQuat = new MemoizedColor(Color.RGBA(5, 6, 7, 8), cb);
35
+
36
+ memoizedQuat.setValQuietly(Color.RGBA(0, 0, 0, 0));
37
+
38
+ expect(cb).not.toBeCalled();
39
+ });
@@ -0,0 +1,27 @@
1
+ import { Color } from "../ValueObjects";
2
+
3
+ export class MemoizedColor {
4
+ private _val: Color;
5
+
6
+ get val(): Color {
7
+ return this._val;
8
+ }
9
+
10
+ set val(v: Color) {
11
+ if (Color.Equal(v, this._val)) return;
12
+
13
+ this._val = v;
14
+ this.onChangeCallback();
15
+ }
16
+
17
+ public setValQuietly(val: Color) {
18
+ this._val = val;
19
+ }
20
+
21
+ private onChangeCallback: () => void;
22
+
23
+ constructor(initialValue: Color, onChangeCallback: () => void) {
24
+ this._val = initialValue;
25
+ this.onChangeCallback = onChangeCallback;
26
+ }
27
+ }
@@ -0,0 +1,37 @@
1
+ import { MemoizedNumber } from "./MemoizedNumber";
2
+
3
+ test("Initial value is stored", ()=>{
4
+ const memoizedNumber = new MemoizedNumber(33, jest.fn());
5
+ expect(memoizedNumber.val).toEqual(33);
6
+ })
7
+
8
+ test("Callback is called when something changes", ()=>{
9
+ const cb = jest.fn();
10
+ const memoizedNumber = new MemoizedNumber(33, cb);
11
+
12
+ expect(cb).not.toBeCalled();
13
+
14
+ memoizedNumber.val = 55;
15
+
16
+ expect(cb).toBeCalled();
17
+ })
18
+
19
+ test("CB is only called when something has changed", ()=>{
20
+ const cb = jest.fn();
21
+ const memoizedNumber = new MemoizedNumber(33, cb);
22
+
23
+ memoizedNumber.val = 33;
24
+ memoizedNumber.val = 33;
25
+ memoizedNumber.val = 33;
26
+
27
+ expect(cb).not.toBeCalled();
28
+ })
29
+
30
+ test("Setting the value quietly should not notify", ()=>{
31
+ const cb = jest.fn();
32
+ const memoizedBoolean = new MemoizedNumber(2, cb);
33
+
34
+ memoizedBoolean.setValQuietly(3);
35
+
36
+ expect(cb).not.toBeCalled();
37
+ })
@@ -0,0 +1,23 @@
1
+ export class MemoizedNumber {
2
+ private _val: number;
3
+ get val(): number {
4
+ return this._val;
5
+ }
6
+ set val(b: number) {
7
+ if (this._val === b) return;
8
+
9
+ this._val = b;
10
+ this.onChangeCallback();
11
+ }
12
+
13
+ public setValQuietly(val: number) {
14
+ this._val = val;
15
+ }
16
+
17
+ private onChangeCallback: () => void;
18
+
19
+ constructor(initialValue: number, onChangeCallback: () => void) {
20
+ this._val = initialValue;
21
+ this.onChangeCallback = onChangeCallback;
22
+ }
23
+ }
@@ -0,0 +1,39 @@
1
+ import { Quaternion } from "../ValueObjects";
2
+ import { MemoizedQuaternion } from "./MemoizedQuaternion";
3
+
4
+ test("Initial value is stored", () => {
5
+ const initialQuat = new Quaternion(5, 6, 7, 8);
6
+ const memoizedVector = new MemoizedQuaternion(initialQuat, jest.fn());
7
+ expect(memoizedVector.val).toEqual(new Quaternion(5, 6, 7, 8));
8
+ });
9
+
10
+ test("Callback is called when the val changes", () => {
11
+ const cb = jest.fn();
12
+ const initialQuat = new Quaternion(5, 6, 7, 8);
13
+ const memoizedQuat = new MemoizedQuaternion(initialQuat, cb);
14
+
15
+ memoizedQuat.val = new Quaternion(8, 9, 10, 11);
16
+
17
+ expect(cb).toBeCalled();
18
+ });
19
+
20
+ test("Callback is called only when the val changes", () => {
21
+ const cb = jest.fn();
22
+ const initialQuat = new Quaternion(5, 6, 7, 8);
23
+ const memoizedQuat = new MemoizedQuaternion(initialQuat, cb);
24
+
25
+ memoizedQuat.val = new Quaternion(5, 6, 7, 8);
26
+ memoizedQuat.val = new Quaternion(5, 6, 7, 8);
27
+ memoizedQuat.val = new Quaternion(5, 6, 7, 8);
28
+
29
+ expect(cb).not.toBeCalled();
30
+ });
31
+
32
+ test("Setting the value quietly should not notify", () => {
33
+ const cb = jest.fn();
34
+ const memoizedQuat = new MemoizedQuaternion(Quaternion.Identity(), cb);
35
+
36
+ memoizedQuat.setValQuietly(Quaternion.Identity());
37
+
38
+ expect(cb).not.toBeCalled();
39
+ });
@@ -0,0 +1,27 @@
1
+ import { Quaternion } from "../ValueObjects";
2
+
3
+ export class MemoizedQuaternion {
4
+ private _val: Quaternion;
5
+
6
+ get val(): Quaternion {
7
+ return this._val;
8
+ }
9
+
10
+ set val(v: Quaternion) {
11
+ if (Quaternion.Equal(v, this._val)) return;
12
+
13
+ this._val = v;
14
+ this.onChangeCallback();
15
+ }
16
+
17
+ public setValQuietly(val: Quaternion) {
18
+ this._val = val;
19
+ }
20
+
21
+ private onChangeCallback: () => void;
22
+
23
+ constructor(initialValue: Quaternion, onChangeCallback: () => void) {
24
+ this._val = initialValue;
25
+ this.onChangeCallback = onChangeCallback;
26
+ }
27
+ }
@@ -0,0 +1,37 @@
1
+ import { MemoizedString } from "./MemoizedString";
2
+
3
+ test("Initial value is stored", ()=>{
4
+ const memoizedNumber = new MemoizedString("string1", jest.fn());
5
+ expect(memoizedNumber.val).toEqual("string1");
6
+ })
7
+
8
+ test("Callback is called when something changes", ()=>{
9
+ const cb = jest.fn();
10
+ const memoizedNumber = new MemoizedString("string1", cb);
11
+
12
+ expect(cb).not.toBeCalled();
13
+
14
+ memoizedNumber.val = "string2";
15
+
16
+ expect(cb).toBeCalled();
17
+ })
18
+
19
+ test("CB is only called when something has changed", ()=>{
20
+ const cb = jest.fn();
21
+ const memoizedNumber = new MemoizedString("string1", cb);
22
+
23
+ memoizedNumber.val = "string1";
24
+ memoizedNumber.val = "string1";
25
+ memoizedNumber.val = "string1";
26
+
27
+ expect(cb).not.toBeCalled();
28
+ })
29
+
30
+ test("Setting the value quietly should not notify", ()=>{
31
+ const cb = jest.fn();
32
+ const memoizedBoolean = new MemoizedString("string1", cb);
33
+
34
+ memoizedBoolean.setValQuietly("string2");
35
+
36
+ expect(cb).not.toBeCalled();
37
+ })
@@ -0,0 +1,23 @@
1
+ export class MemoizedString {
2
+ private _val: string;
3
+ get val(): string {
4
+ return this._val;
5
+ }
6
+ set val(b: string) {
7
+ if (this._val === b) return;
8
+
9
+ this._val = b;
10
+ this.onChangeCallback();
11
+ }
12
+
13
+ public setValQuietly(val: string) {
14
+ this._val = val;
15
+ }
16
+
17
+ private onChangeCallback: () => void;
18
+
19
+ constructor(initialValue: string, onChangeCallback: () => void) {
20
+ this._val = initialValue;
21
+ this.onChangeCallback = onChangeCallback;
22
+ }
23
+ }
@@ -0,0 +1,39 @@
1
+ import { Vector2 } from "../ValueObjects";
2
+ import { MemoizedVector2 } from "./MemoizedVector2";
3
+
4
+ test("Initial value is stored", () => {
5
+ const initialVec = new Vector2(5, 6);
6
+ const memoizedVector = new MemoizedVector2(initialVec, jest.fn());
7
+ expect(memoizedVector.val).toEqual(new Vector2(5, 6));
8
+ });
9
+
10
+ test("Callback is called when the val changes", () => {
11
+ const cb = jest.fn();
12
+ const initialVec = new Vector2(5, 6);
13
+ const memoizedVector = new MemoizedVector2(initialVec, cb);
14
+
15
+ memoizedVector.val = new Vector2(8, 9);
16
+
17
+ expect(cb).toBeCalled();
18
+ });
19
+
20
+ test("Callback is called only when the val changes", () => {
21
+ const cb = jest.fn();
22
+ const initialVec = new Vector2(5, 6);
23
+ const memoizedVector = new MemoizedVector2(initialVec, cb);
24
+
25
+ memoizedVector.val = new Vector2(5, 6);
26
+ memoizedVector.val = new Vector2(5, 6);
27
+ memoizedVector.val = new Vector2(5, 6);
28
+
29
+ expect(cb).not.toBeCalled();
30
+ });
31
+
32
+ test("Setting the value quietly should not notify", () => {
33
+ const cb = jest.fn();
34
+ const memoizedBoolean = new MemoizedVector2(Vector2.One(), cb);
35
+
36
+ memoizedBoolean.setValQuietly(Vector2.Zero());
37
+
38
+ expect(cb).not.toBeCalled();
39
+ });
@@ -0,0 +1,27 @@
1
+ import { Vector2 } from "../ValueObjects";
2
+
3
+ export class MemoizedVector2 {
4
+ private _val: Vector2;
5
+
6
+ get val(): Vector2 {
7
+ return this._val;
8
+ }
9
+
10
+ set val(v: Vector2) {
11
+ if (Vector2.Equal(v, this._val)) return;
12
+
13
+ this._val = v;
14
+ this.onChangeCallback();
15
+ }
16
+
17
+ public setValQuietly(val: Vector2) {
18
+ this._val = val;
19
+ }
20
+
21
+ private onChangeCallback: () => void;
22
+
23
+ constructor(initialValue: Vector2, onChangeCallback: () => void) {
24
+ this._val = initialValue;
25
+ this.onChangeCallback = onChangeCallback;
26
+ }
27
+ }
@@ -0,0 +1,39 @@
1
+ import { Vector3 } from "../ValueObjects";
2
+ import { MemoizedVector3 } from "./MemoizedVector3";
3
+
4
+ test("Initial value is stored", () => {
5
+ const initialVec = new Vector3(5, 6, 7);
6
+ const memoizedVector = new MemoizedVector3(initialVec, jest.fn());
7
+ expect(memoizedVector.val).toEqual(new Vector3(5, 6, 7));
8
+ });
9
+
10
+ test("Callback is called when the val changes", () => {
11
+ const cb = jest.fn();
12
+ const initialVec = new Vector3(5, 6, 7);
13
+ const memoizedVector = new MemoizedVector3(initialVec, cb);
14
+
15
+ memoizedVector.val = new Vector3(8, 9, 10);
16
+
17
+ expect(cb).toBeCalled();
18
+ });
19
+
20
+ test("Callback is called only when the val changes", () => {
21
+ const cb = jest.fn();
22
+ const initialVec = new Vector3(5, 6, 7);
23
+ const memoizedVector = new MemoizedVector3(initialVec, cb);
24
+
25
+ memoizedVector.val = new Vector3(5, 6, 7);
26
+ memoizedVector.val = new Vector3(5, 6, 7);
27
+ memoizedVector.val = new Vector3(5, 6, 7);
28
+
29
+ expect(cb).not.toBeCalled();
30
+ });
31
+
32
+ test("Setting the value quietly should not notify", () => {
33
+ const cb = jest.fn();
34
+ const memoizedBoolean = new MemoizedVector3(Vector3.One(), cb);
35
+
36
+ memoizedBoolean.setValQuietly(Vector3.Zero());
37
+
38
+ expect(cb).not.toBeCalled();
39
+ });
@@ -0,0 +1,27 @@
1
+ import { Vector3 } from "../ValueObjects";
2
+
3
+ export class MemoizedVector3 {
4
+ private _val: Vector3;
5
+
6
+ get val(): Vector3 {
7
+ return this._val;
8
+ }
9
+
10
+ set val(v: Vector3) {
11
+ if (Vector3.Equal(v, this._val)) return;
12
+
13
+ this._val = v;
14
+ this.onChangeCallback();
15
+ }
16
+
17
+ public setValQuietly(val: Vector3) {
18
+ this._val = val;
19
+ }
20
+
21
+ private onChangeCallback: () => void;
22
+
23
+ constructor(initialValue: Vector3, onChangeCallback: () => void) {
24
+ this._val = initialValue;
25
+ this.onChangeCallback = onChangeCallback;
26
+ }
27
+ }
@@ -0,0 +1,28 @@
1
+ import { ObservableEntity } from "./ObservableEntity";
2
+
3
+ class ObservableEntityImp extends ObservableEntity {}
4
+
5
+ function makeTestRig() {
6
+ const observableEntity = new ObservableEntityImp();
7
+ const observer = jest.fn();
8
+ observableEntity.addObserver(observer);
9
+
10
+ return { observableEntity, observer };
11
+ }
12
+
13
+ describe("Abstract Observable Entity", () => {
14
+ it("Notifies", () => {
15
+ const { observer, observableEntity } = makeTestRig();
16
+ observableEntity.notify();
17
+
18
+ expect(observer).toBeCalled();
19
+ });
20
+
21
+ it("Removes an observer", () => {
22
+ const { observer, observableEntity } = makeTestRig();
23
+ observableEntity.removeObserver(observer);
24
+ observableEntity.notify();
25
+
26
+ expect(observer).not.toBeCalled();
27
+ });
28
+ });
@@ -0,0 +1,17 @@
1
+ import { ObserverList } from "./ObserverList";
2
+
3
+ export type EntityObserver = () => void;
4
+
5
+ export abstract class ObservableEntity {
6
+ private observerList = new ObserverList<void>();
7
+
8
+ addObserver = (observer: EntityObserver): void => {
9
+ this.observerList.add(observer);
10
+ };
11
+ removeObserver = (observer: EntityObserver): void => {
12
+ this.observerList.remove(observer);
13
+ };
14
+ notify = () => {
15
+ this.observerList.notify();
16
+ };
17
+ }
@@ -0,0 +1,61 @@
1
+ import { ObserverList } from "./ObserverList";
2
+
3
+ test("An observer that recieves nothing", () => {
4
+ const observers = new ObserverList<void>();
5
+ const obs = jest.fn();
6
+
7
+ observers.add(obs);
8
+ observers.notify();
9
+
10
+ expect(obs).toBeCalled();
11
+ });
12
+
13
+ test("An observer that recieves a string", () => {
14
+ const observers = new ObserverList<string>();
15
+ const obs = jest.fn();
16
+
17
+ observers.add(obs);
18
+ observers.notify("!yolo");
19
+
20
+ expect(obs).toBeCalledWith("!yolo");
21
+ });
22
+
23
+ test("An observer that recieves a number", () => {
24
+ const observers = new ObserverList<number>();
25
+ const obs = jest.fn();
26
+
27
+ observers.add(obs);
28
+
29
+ observers.notify(55);
30
+
31
+ expect(obs).toBeCalledWith(55);
32
+ });
33
+
34
+ test("Observer can be removed", () => {
35
+ const observers = new ObserverList<void>();
36
+ const obs = jest.fn();
37
+
38
+ observers.add(obs);
39
+ observers.notify();
40
+
41
+ expect(obs).toBeCalled();
42
+
43
+ obs.mockClear();
44
+ observers.remove(obs);
45
+ observers.notify();
46
+
47
+ expect(obs).not.toBeCalled();
48
+ });
49
+
50
+ test("Clearing the oberver list", ()=>{
51
+ const observers = new ObserverList<void>();
52
+ const obs = jest.fn();
53
+
54
+ observers.add(obs);
55
+
56
+ observers.clear();
57
+
58
+ observers.notify();
59
+
60
+ expect(obs).not.toBeCalled();
61
+ })
@@ -0,0 +1,24 @@
1
+ export class ObserverList<T> {
2
+ private observers: ((msg: T) => void)[] = [];
3
+
4
+ public notify = (msg: T) => {
5
+ this.observers.forEach((obs) => {
6
+ obs(msg);
7
+ });
8
+ }
9
+
10
+ public add = (obs: (msg: T) => void) => {
11
+ this.observers.push(obs);
12
+ }
13
+
14
+ public remove = (obs: (msg: T) => void) => {
15
+ const index = this.observers.indexOf(obs);
16
+ if (index >= 0) {
17
+ this.observers.splice(index, 1);
18
+ }
19
+ }
20
+
21
+ public clear = () => {
22
+ this.observers = [];
23
+ }
24
+ }
@@ -0,0 +1,10 @@
1
+ export * from "./ObservableEntity";
2
+ export * from "./ObserverList";
3
+ export * from "./MemoizedAngle";
4
+ export * from "./MemoizedBoolean";
5
+ export * from "./MemoizedColor";
6
+ export * from "./MemoizedNumber";
7
+ export * from "./MemoizedQuaternion";
8
+ export * from "./MemoizedString";
9
+ export * from "./MemoizedVector2";
10
+ export * from "./MemoizedVector3";
@@ -0,0 +1,13 @@
1
+ export type Handler = (request: Request) => void;
2
+
3
+ export interface Request {
4
+ type: string;
5
+ version: number;
6
+ payload?: unknown;
7
+ }
8
+
9
+ // tslint:disable-next-line: class-name
10
+ export interface VIVEDApp_3 {
11
+ mount(hostRequestHandler: Handler): Handler;
12
+ mountDev(container: HTMLElement): void;
13
+ }
@@ -0,0 +1 @@
1
+ export type EaseFn = (p: number) => number;
@@ -0,0 +1,15 @@
1
+ import { AppObjectRepo } from "../AppObject";
2
+
3
+ export interface PmAdapter<VM> {
4
+ defaultVM: VM;
5
+ subscribe(
6
+ id: string,
7
+ appObjects: AppObjectRepo,
8
+ setVM: (vm: VM) => void
9
+ ): void;
10
+ unsubscribe(
11
+ id: string,
12
+ appObjects: AppObjectRepo,
13
+ setVM: (vm: VM) => void
14
+ ): void;
15
+ }
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "../AppObject";
2
+
3
+ export interface SingletonPmAdapter<VM> {
4
+ defaultVM: VM;
5
+ subscribe(appObjects: AppObjectRepo, setVM: (vm: VM) => void): void;
6
+ unsubscribe(appObjects: AppObjectRepo, setVM: (vm: VM) => void): void;
7
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./AppBoundary";
2
+ export * from "./EaseFn";
3
+ export * from "./PmAdapter";
4
+ export * from "./SingletonPmAdapter";
@@ -0,0 +1,30 @@
1
+ import { Angle } from "./Angle";
2
+ describe("Angle Value Object", () => {
3
+ it("Creates an angle from degrees", () => {
4
+ const ang = Angle.FromDegrees(125);
5
+ expect(ang.degrees).toEqual(125);
6
+ });
7
+
8
+ it("Creates an angle from degrees", () => {
9
+ const ang = Angle.FromRadians(1.25);
10
+ expect(ang.radians).toEqual(1.25);
11
+ });
12
+
13
+ it("Converts from degrees and radians", () => {
14
+ const ang = Angle.FromDegrees(125);
15
+ expect(ang.radians).toBeCloseTo(2.18166);
16
+ });
17
+
18
+ it("Converts from radians to degrees", () => {
19
+ const ang = Angle.FromRadians(1.25);
20
+ expect(ang.degrees).toBeCloseTo(71.61972);
21
+ });
22
+
23
+ it("Checks for closeness", ()=>{
24
+ const ang1 = Angle.FromDegrees(1.555);
25
+ const ang2 = Angle.FromDegrees(1.556);
26
+
27
+ expect(Angle.Close(ang1, ang2, 0.0011)).toEqual(true);
28
+ expect(Angle.Close(ang1, ang2, 0.001)).toEqual(false);
29
+ })
30
+ });