@ibgib/core-gib 0.0.4

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 (330) hide show
  1. package/.vscode/core-gib-snippets.code-snippets +189 -0
  2. package/.vscode/launch.json +24 -0
  3. package/.vscode/settings.json +56 -0
  4. package/.vscode/tasks.json +37 -0
  5. package/CHANGELOG.md +11 -0
  6. package/README.md +215 -0
  7. package/dist/common/aws-constants.d.mts +7 -0
  8. package/dist/common/aws-constants.d.mts.map +1 -0
  9. package/dist/common/aws-constants.mjs +7 -0
  10. package/dist/common/aws-constants.mjs.map +1 -0
  11. package/dist/common/bin/bin-types.d.mts +17 -0
  12. package/dist/common/bin/bin-types.d.mts.map +1 -0
  13. package/dist/common/bin/bin-types.mjs +3 -0
  14. package/dist/common/bin/bin-types.mjs.map +1 -0
  15. package/dist/common/cache/cache-types.d.mts +57 -0
  16. package/dist/common/cache/cache-types.d.mts.map +1 -0
  17. package/dist/common/cache/cache-types.mjs +2 -0
  18. package/dist/common/cache/cache-types.mjs.map +1 -0
  19. package/dist/common/comment/comment-constants.d.mts +11 -0
  20. package/dist/common/comment/comment-constants.d.mts.map +1 -0
  21. package/dist/common/comment/comment-constants.mjs +11 -0
  22. package/dist/common/comment/comment-constants.mjs.map +1 -0
  23. package/dist/common/comment/comment-helper.d.mts +59 -0
  24. package/dist/common/comment/comment-helper.d.mts.map +1 -0
  25. package/dist/common/comment/comment-helper.mjs +173 -0
  26. package/dist/common/comment/comment-helper.mjs.map +1 -0
  27. package/dist/common/comment/comment-types.d.mts +16 -0
  28. package/dist/common/comment/comment-types.d.mts.map +1 -0
  29. package/dist/common/comment/comment-types.mjs +2 -0
  30. package/dist/common/comment/comment-types.mjs.map +1 -0
  31. package/dist/common/display/display-helper.d.mts +19 -0
  32. package/dist/common/display/display-helper.d.mts.map +1 -0
  33. package/dist/common/display/display-helper.mjs +68 -0
  34. package/dist/common/display/display-helper.mjs.map +1 -0
  35. package/dist/common/display/display-types.d.mts +97 -0
  36. package/dist/common/display/display-types.d.mts.map +1 -0
  37. package/dist/common/display/display-types.mjs +37 -0
  38. package/dist/common/display/display-types.mjs.map +1 -0
  39. package/dist/common/encrypt/encrypt-constants.d.mts +27 -0
  40. package/dist/common/encrypt/encrypt-constants.d.mts.map +1 -0
  41. package/dist/common/encrypt/encrypt-constants.mjs +27 -0
  42. package/dist/common/encrypt/encrypt-constants.mjs.map +1 -0
  43. package/dist/common/encrypt/encrypt-types.d.mts +116 -0
  44. package/dist/common/encrypt/encrypt-types.d.mts.map +1 -0
  45. package/dist/common/encrypt/encrypt-types.mjs +9 -0
  46. package/dist/common/encrypt/encrypt-types.mjs.map +1 -0
  47. package/dist/common/error/error-constants.d.mts +9 -0
  48. package/dist/common/error/error-constants.d.mts.map +1 -0
  49. package/dist/common/error/error-constants.mjs +9 -0
  50. package/dist/common/error/error-constants.mjs.map +1 -0
  51. package/dist/common/error/error-helper.d.mts +43 -0
  52. package/dist/common/error/error-helper.d.mts.map +1 -0
  53. package/dist/common/error/error-helper.mjs +167 -0
  54. package/dist/common/error/error-helper.mjs.map +1 -0
  55. package/dist/common/error/error-types.d.mts +58 -0
  56. package/dist/common/error/error-types.d.mts.map +1 -0
  57. package/dist/common/error/error-types.mjs +2 -0
  58. package/dist/common/error/error-types.mjs.map +1 -0
  59. package/dist/common/form/form-helper.d.mts +97 -0
  60. package/dist/common/form/form-helper.d.mts.map +1 -0
  61. package/dist/common/form/form-helper.mjs +185 -0
  62. package/dist/common/form/form-helper.mjs.map +1 -0
  63. package/dist/common/form/form-items.d.mts +229 -0
  64. package/dist/common/form/form-items.d.mts.map +1 -0
  65. package/dist/common/form/form-items.mjs +63 -0
  66. package/dist/common/form/form-items.mjs.map +1 -0
  67. package/dist/common/import-export/import-export-types.d.mts +18 -0
  68. package/dist/common/import-export/import-export-types.d.mts.map +1 -0
  69. package/dist/common/import-export/import-export-types.mjs +2 -0
  70. package/dist/common/import-export/import-export-types.mjs.map +1 -0
  71. package/dist/common/legacy/legacy-types.d.mts +2 -0
  72. package/dist/common/legacy/legacy-types.d.mts.map +1 -0
  73. package/dist/common/legacy/legacy-types.mjs +2 -0
  74. package/dist/common/legacy/legacy-types.mjs.map +1 -0
  75. package/dist/common/link/link-constants.d.mts +2 -0
  76. package/dist/common/link/link-constants.d.mts.map +1 -0
  77. package/dist/common/link/link-constants.mjs +2 -0
  78. package/dist/common/link/link-constants.mjs.map +1 -0
  79. package/dist/common/link/link-helper.d.mts +37 -0
  80. package/dist/common/link/link-helper.d.mts.map +1 -0
  81. package/dist/common/link/link-helper.mjs +143 -0
  82. package/dist/common/link/link-helper.mjs.map +1 -0
  83. package/dist/common/link/link-types.d.mts +14 -0
  84. package/dist/common/link/link-types.d.mts.map +1 -0
  85. package/dist/common/link/link-types.mjs +2 -0
  86. package/dist/common/link/link-types.mjs.map +1 -0
  87. package/dist/common/other/graph-helper.d.mts +166 -0
  88. package/dist/common/other/graph-helper.d.mts.map +1 -0
  89. package/dist/common/other/graph-helper.mjs +710 -0
  90. package/dist/common/other/graph-helper.mjs.map +1 -0
  91. package/dist/common/other/ibgib-helper.d.mts +245 -0
  92. package/dist/common/other/ibgib-helper.d.mts.map +1 -0
  93. package/dist/common/other/ibgib-helper.mjs +641 -0
  94. package/dist/common/other/ibgib-helper.mjs.map +1 -0
  95. package/dist/common/other/other-constants.d.mts +53 -0
  96. package/dist/common/other/other-constants.d.mts.map +1 -0
  97. package/dist/common/other/other-constants.mjs +67 -0
  98. package/dist/common/other/other-constants.mjs.map +1 -0
  99. package/dist/common/other/other-types.d.mts +166 -0
  100. package/dist/common/other/other-types.d.mts.map +1 -0
  101. package/dist/common/other/other-types.mjs +30 -0
  102. package/dist/common/other/other-types.mjs.map +1 -0
  103. package/dist/common/other/svg-constants.d.mts +2 -0
  104. package/dist/common/other/svg-constants.d.mts.map +1 -0
  105. package/dist/common/other/svg-constants.mjs +2 -0
  106. package/dist/common/other/svg-constants.mjs.map +1 -0
  107. package/dist/common/other/svg-helper.d.mts +54 -0
  108. package/dist/common/other/svg-helper.d.mts.map +1 -0
  109. package/dist/common/other/svg-helper.mjs +170 -0
  110. package/dist/common/other/svg-helper.mjs.map +1 -0
  111. package/dist/common/pic/pic-constants.d.mts +13 -0
  112. package/dist/common/pic/pic-constants.d.mts.map +1 -0
  113. package/dist/common/pic/pic-constants.mjs +13 -0
  114. package/dist/common/pic/pic-constants.mjs.map +1 -0
  115. package/dist/common/pic/pic-helper.d.mts +70 -0
  116. package/dist/common/pic/pic-helper.d.mts.map +1 -0
  117. package/dist/common/pic/pic-helper.mjs +235 -0
  118. package/dist/common/pic/pic-helper.mjs.map +1 -0
  119. package/dist/common/pic/pic-types.d.mts +23 -0
  120. package/dist/common/pic/pic-types.d.mts.map +1 -0
  121. package/dist/common/pic/pic-types.mjs +2 -0
  122. package/dist/common/pic/pic-types.mjs.map +1 -0
  123. package/dist/common/root/root-constants.d.mts +40 -0
  124. package/dist/common/root/root-constants.d.mts.map +1 -0
  125. package/dist/common/root/root-constants.mjs +40 -0
  126. package/dist/common/root/root-constants.mjs.map +1 -0
  127. package/dist/common/root/root-types.d.mts +9 -0
  128. package/dist/common/root/root-types.d.mts.map +1 -0
  129. package/dist/common/root/root-types.mjs +2 -0
  130. package/dist/common/root/root-types.mjs.map +1 -0
  131. package/dist/common/tag/tag-constants.d.mts +21 -0
  132. package/dist/common/tag/tag-constants.d.mts.map +1 -0
  133. package/dist/common/tag/tag-constants.mjs +28 -0
  134. package/dist/common/tag/tag-constants.mjs.map +1 -0
  135. package/dist/common/tag/tag-types.d.mts +14 -0
  136. package/dist/common/tag/tag-types.d.mts.map +1 -0
  137. package/dist/common/tag/tag-types.mjs +2 -0
  138. package/dist/common/tag/tag-types.mjs.map +1 -0
  139. package/dist/core-constants.d.mts +89 -0
  140. package/dist/core-constants.d.mts.map +1 -0
  141. package/dist/core-constants.mjs +484 -0
  142. package/dist/core-constants.mjs.map +1 -0
  143. package/dist/core-helper.d.mts +6 -0
  144. package/dist/core-helper.d.mts.map +1 -0
  145. package/dist/core-helper.mjs +28 -0
  146. package/dist/core-helper.mjs.map +1 -0
  147. package/dist/core-types.d.mts +520 -0
  148. package/dist/core-types.d.mts.map +1 -0
  149. package/dist/core-types.mjs +2 -0
  150. package/dist/core-types.mjs.map +1 -0
  151. package/dist/index.d.mts +2 -0
  152. package/dist/index.d.mts.map +1 -0
  153. package/dist/index.mjs +3 -0
  154. package/dist/index.mjs.map +1 -0
  155. package/dist/witness/app/app-base-v1.d.mts +130 -0
  156. package/dist/witness/app/app-base-v1.d.mts.map +1 -0
  157. package/dist/witness/app/app-base-v1.mjs +462 -0
  158. package/dist/witness/app/app-base-v1.mjs.map +1 -0
  159. package/dist/witness/app/app-constants.d.mts +10 -0
  160. package/dist/witness/app/app-constants.d.mts.map +1 -0
  161. package/dist/witness/app/app-constants.mjs +13 -0
  162. package/dist/witness/app/app-constants.mjs.map +1 -0
  163. package/dist/witness/app/app-helper.d.mts +85 -0
  164. package/dist/witness/app/app-helper.d.mts.map +1 -0
  165. package/dist/witness/app/app-helper.mjs +258 -0
  166. package/dist/witness/app/app-helper.mjs.map +1 -0
  167. package/dist/witness/app/app-types.d.mts +211 -0
  168. package/dist/witness/app/app-types.d.mts.map +1 -0
  169. package/dist/witness/app/app-types.mjs +49 -0
  170. package/dist/witness/app/app-types.mjs.map +1 -0
  171. package/dist/witness/app/chat-app/chat-app-types.d.mts +18 -0
  172. package/dist/witness/app/chat-app/chat-app-types.d.mts.map +1 -0
  173. package/dist/witness/app/chat-app/chat-app-types.mjs +25 -0
  174. package/dist/witness/app/chat-app/chat-app-types.mjs.map +1 -0
  175. package/dist/witness/app/flash-app/flash-app-types.d.mts +16 -0
  176. package/dist/witness/app/flash-app/flash-app-types.d.mts.map +1 -0
  177. package/dist/witness/app/flash-app/flash-app-types.mjs +23 -0
  178. package/dist/witness/app/flash-app/flash-app-types.mjs.map +1 -0
  179. package/dist/witness/app/raw-app/raw-app-types.d.mts +18 -0
  180. package/dist/witness/app/raw-app/raw-app-types.d.mts.map +1 -0
  181. package/dist/witness/app/raw-app/raw-app-types.mjs +25 -0
  182. package/dist/witness/app/raw-app/raw-app-types.mjs.map +1 -0
  183. package/dist/witness/app/todo-app/todo-app-types.d.ts +33 -0
  184. package/dist/witness/app/todo-app/todo-app-types.d.ts.map +1 -0
  185. package/dist/witness/app/todo-app/todo-app-types.js +31 -0
  186. package/dist/witness/app/todo-app/todo-app-types.js.map +1 -0
  187. package/dist/witness/robbot/robbot-base-v1.d.ts +432 -0
  188. package/dist/witness/robbot/robbot-base-v1.d.ts.map +1 -0
  189. package/dist/witness/robbot/robbot-base-v1.js +1407 -0
  190. package/dist/witness/robbot/robbot-base-v1.js.map +1 -0
  191. package/dist/witness/robbot/robbot-constants.d.mts +24 -0
  192. package/dist/witness/robbot/robbot-constants.d.mts.map +1 -0
  193. package/dist/witness/robbot/robbot-constants.mjs +24 -0
  194. package/dist/witness/robbot/robbot-constants.mjs.map +1 -0
  195. package/dist/witness/robbot/robbot-helper.d.mts +152 -0
  196. package/dist/witness/robbot/robbot-helper.d.mts.map +1 -0
  197. package/dist/witness/robbot/robbot-helper.mjs +609 -0
  198. package/dist/witness/robbot/robbot-helper.mjs.map +1 -0
  199. package/dist/witness/robbot/robbot-types.d.mts +539 -0
  200. package/dist/witness/robbot/robbot-types.d.mts.map +1 -0
  201. package/dist/witness/robbot/robbot-types.mjs +294 -0
  202. package/dist/witness/robbot/robbot-types.mjs.map +1 -0
  203. package/dist/witness/space/bootstrap/bootstrap-constants.d.mts +14 -0
  204. package/dist/witness/space/bootstrap/bootstrap-constants.d.mts.map +1 -0
  205. package/dist/witness/space/bootstrap/bootstrap-constants.mjs +15 -0
  206. package/dist/witness/space/bootstrap/bootstrap-constants.mjs.map +1 -0
  207. package/dist/witness/space/inner-space-v1.d.ts +63 -0
  208. package/dist/witness/space/inner-space-v1.d.ts.map +1 -0
  209. package/dist/witness/space/inner-space-v1.js +356 -0
  210. package/dist/witness/space/inner-space-v1.js.map +1 -0
  211. package/dist/witness/space/outer-space/outer-space-constants.d.mts +2 -0
  212. package/dist/witness/space/outer-space/outer-space-constants.d.mts.map +1 -0
  213. package/dist/witness/space/outer-space/outer-space-constants.mjs +2 -0
  214. package/dist/witness/space/outer-space/outer-space-constants.mjs.map +1 -0
  215. package/dist/witness/space/outer-space/outer-space-helper.d.mts +28 -0
  216. package/dist/witness/space/outer-space/outer-space-helper.d.mts.map +1 -0
  217. package/dist/witness/space/outer-space/outer-space-helper.mjs +87 -0
  218. package/dist/witness/space/outer-space/outer-space-helper.mjs.map +1 -0
  219. package/dist/witness/space/outer-space/outer-space-types.d.mts +548 -0
  220. package/dist/witness/space/outer-space/outer-space-types.d.mts.map +1 -0
  221. package/dist/witness/space/outer-space/outer-space-types.mjs +118 -0
  222. package/dist/witness/space/outer-space/outer-space-types.mjs.map +1 -0
  223. package/dist/witness/space/space-base-v1.d.mts +147 -0
  224. package/dist/witness/space/space-base-v1.d.mts.map +1 -0
  225. package/dist/witness/space/space-base-v1.mjs +350 -0
  226. package/dist/witness/space/space-base-v1.mjs.map +1 -0
  227. package/dist/witness/space/space-constants.d.mts +181 -0
  228. package/dist/witness/space/space-constants.d.mts.map +1 -0
  229. package/dist/witness/space/space-constants.mjs +192 -0
  230. package/dist/witness/space/space-constants.mjs.map +1 -0
  231. package/dist/witness/space/space-helper.d.mts +666 -0
  232. package/dist/witness/space/space-helper.d.mts.map +1 -0
  233. package/dist/witness/space/space-helper.mjs +2830 -0
  234. package/dist/witness/space/space-helper.mjs.map +1 -0
  235. package/dist/witness/space/space-types.d.mts +422 -0
  236. package/dist/witness/space/space-types.d.mts.map +1 -0
  237. package/dist/witness/space/space-types.mjs +52 -0
  238. package/dist/witness/space/space-types.mjs.map +1 -0
  239. package/dist/witness/witness-base-v1.d.ts +144 -0
  240. package/dist/witness/witness-base-v1.d.ts.map +1 -0
  241. package/dist/witness/witness-base-v1.js +300 -0
  242. package/dist/witness/witness-base-v1.js.map +1 -0
  243. package/dist/witness/witness-constants.d.mts +3 -0
  244. package/dist/witness/witness-constants.d.mts.map +1 -0
  245. package/dist/witness/witness-constants.mjs +3 -0
  246. package/dist/witness/witness-constants.mjs.map +1 -0
  247. package/dist/witness/witness-form-builder.d.mts +45 -0
  248. package/dist/witness/witness-form-builder.d.mts.map +1 -0
  249. package/dist/witness/witness-form-builder.mjs +95 -0
  250. package/dist/witness/witness-form-builder.mjs.map +1 -0
  251. package/dist/witness/witness-helper.d.mts +89 -0
  252. package/dist/witness/witness-helper.d.mts.map +1 -0
  253. package/dist/witness/witness-helper.mjs +229 -0
  254. package/dist/witness/witness-helper.mjs.map +1 -0
  255. package/dist/witness/witness-types.d.mts +211 -0
  256. package/dist/witness/witness-types.d.mts.map +1 -0
  257. package/dist/witness/witness-types.mjs +2 -0
  258. package/dist/witness/witness-types.mjs.map +1 -0
  259. package/jasmine-browser.json +18 -0
  260. package/jasmine.json +6 -0
  261. package/package.json +67 -0
  262. package/src/assumptions.spec.mts +45 -0
  263. package/src/common/aws-constants.mts +5 -0
  264. package/src/common/bin/bin-types.mts +17 -0
  265. package/src/common/cache/cache-types.mts +53 -0
  266. package/src/common/comment/comment-constants.mts +10 -0
  267. package/src/common/comment/comment-helper.mts +211 -0
  268. package/src/common/comment/comment-types.mts +19 -0
  269. package/src/common/display/display-helper.mts +88 -0
  270. package/src/common/display/display-types.mts +108 -0
  271. package/src/common/encrypt/encrypt-constants.mts +28 -0
  272. package/src/common/encrypt/encrypt-types.mts +130 -0
  273. package/src/common/error/error-constants.mts +8 -0
  274. package/src/common/error/error-helper.mts +155 -0
  275. package/src/common/error/error-types.mts +62 -0
  276. package/src/common/form/form-helper.mts +253 -0
  277. package/src/common/form/form-items.mts +236 -0
  278. package/src/common/import-export/import-export-types.mts +18 -0
  279. package/src/common/legacy/about-legacy.md +0 -0
  280. package/src/common/legacy/legacy-types.mts +0 -0
  281. package/src/common/link/link-constants.mts +1 -0
  282. package/src/common/link/link-helper.mts +155 -0
  283. package/src/common/link/link-types.mts +16 -0
  284. package/src/common/other/graph-helper.mts +853 -0
  285. package/src/common/other/ibgib-helper.mts +671 -0
  286. package/src/common/other/other-constants.mts +76 -0
  287. package/src/common/other/other-types.mts +186 -0
  288. package/src/common/other/svg-constants.mts +1 -0
  289. package/src/common/other/svg-helper.mts +238 -0
  290. package/src/common/pic/pic-constants.mts +13 -0
  291. package/src/common/pic/pic-helper.mts +295 -0
  292. package/src/common/pic/pic-types.mts +29 -0
  293. package/src/common/root/root-constants.mts +41 -0
  294. package/src/common/root/root-types.mts +8 -0
  295. package/src/common/tag/tag-constants.mts +34 -0
  296. package/src/common/tag/tag-types.mts +19 -0
  297. package/src/core-constants.mts +506 -0
  298. package/src/core-helper.mts +33 -0
  299. package/src/core-types.mts +519 -0
  300. package/src/helper.spec.mts +64 -0
  301. package/src/index.mts +1 -0
  302. package/src/witness/app/app-base-v1.mts +584 -0
  303. package/src/witness/app/app-constants.mts +16 -0
  304. package/src/witness/app/app-helper.mts +322 -0
  305. package/src/witness/app/app-types.mts +252 -0
  306. package/src/witness/app/chat-app/chat-app-types.mts +40 -0
  307. package/src/witness/app/flash-app/flash-app-types.mts +38 -0
  308. package/src/witness/app/raw-app/raw-app-types.mts +40 -0
  309. package/src/witness/app/todo-app/todo-app-types.ts +59 -0
  310. package/src/witness/robbot/robbot-base-v1.ts +1531 -0
  311. package/src/witness/robbot/robbot-constants.mts +25 -0
  312. package/src/witness/robbot/robbot-helper.mts +676 -0
  313. package/src/witness/robbot/robbot-helper.spec.mts +135 -0
  314. package/src/witness/robbot/robbot-types.mts +797 -0
  315. package/src/witness/space/bootstrap/bootstrap-constants.mts +15 -0
  316. package/src/witness/space/inner-space-v1.ts +372 -0
  317. package/src/witness/space/outer-space/outer-space-constants.mts +1 -0
  318. package/src/witness/space/outer-space/outer-space-helper.mts +91 -0
  319. package/src/witness/space/outer-space/outer-space-types.mts +627 -0
  320. package/src/witness/space/space-base-v1.mts +414 -0
  321. package/src/witness/space/space-constants.mts +208 -0
  322. package/src/witness/space/space-helper.mts +3242 -0
  323. package/src/witness/space/space-types.mts +476 -0
  324. package/src/witness/witness-base-v1.ts +325 -0
  325. package/src/witness/witness-constants.mts +2 -0
  326. package/src/witness/witness-form-builder.mts +128 -0
  327. package/src/witness/witness-helper.mts +256 -0
  328. package/src/witness/witness-types.mts +249 -0
  329. package/tsconfig.json +15 -0
  330. package/tsconfig.test.json +10 -0
@@ -0,0 +1,15 @@
1
+ import { GIB } from '@ibgib/ts-gib/dist/V1/index.mjs';
2
+
3
+ /**
4
+ * See {@link BootstrapIbGib}
5
+ */
6
+ export const BOOTSTRAP_IBGIB_ADDR = `bootstrap^${GIB}`;
7
+ /**
8
+ * {@see BootstrapData}
9
+ */
10
+ export const BOOTSTRAP_DATA_DEFAULT_SPACE_ID_KEY = `defaultSpaceId`;
11
+ /**
12
+ * Key for index tracking known spaceIds in a bootstrap ibgib.
13
+ * {@see BootstrapData}
14
+ */
15
+ export const BOOTSTRAP_DATA_KNOWN_SPACE_IDS_KEY = `spaceIds`;
@@ -0,0 +1,372 @@
1
+ import { getIbGibAddr, IbGibAddr } from '@ibgib/ts-gib';
2
+ import {
3
+ IbGib_V1, IbGibRel8ns_V1, IbGibData_V1, sha256v1, Factory_V1, ROOT,
4
+ } from '@ibgib/ts-gib/dist/V1/index.mjs';
5
+
6
+
7
+ import { SpaceBase_V1 } from './space-base-v1.mjs';
8
+ import {
9
+ IbGibSpaceData, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns,
10
+ IbGibSpaceOptionsIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns,
11
+ IbGibSpaceResultIbGib
12
+ } from './space-types.mjs';
13
+ import { getSpaceIb } from './space-helper.mjs';
14
+ import { validateIbGibIntrinsically } from '@ibgib/ts-gib/dist/V1/validate-helper.mjs';
15
+ import { GLOBAL_LOG_A_LOT } from '../../core-constants.mjs';
16
+
17
+ const logalot = GLOBAL_LOG_A_LOT || false;
18
+
19
+ export interface InnerSpace_V1_Data extends IbGibSpaceData {
20
+ // /**
21
+ // * If true, then this will include this space's ibGib's addrs (i.e. index)
22
+ // * in its {@link data} property.
23
+ // */
24
+ // trackAddrs: boolean;
25
+ }
26
+
27
+ /**
28
+ * Base class convenience for a "local" space
29
+ * (i.e. analogous to residing on the same computer as the app).
30
+ *
31
+ * Base implementation defaults to a naive in-memory internal object that
32
+ * tracks ibgibs.
33
+ */
34
+ export class InnerSpace_V1<
35
+ TIbGib extends IbGib_V1 = IbGib_V1,
36
+ TData extends InnerSpace_V1_Data = InnerSpace_V1_Data,
37
+ TRel8ns extends IbGibRel8ns_V1 = IbGibRel8ns_V1
38
+ > extends SpaceBase_V1<
39
+ TIbGib,
40
+ IbGibSpaceOptionsData,
41
+ IbGibSpaceOptionsRel8ns,
42
+ IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>,
43
+ IbGibSpaceResultData,
44
+ IbGibSpaceResultRel8ns,
45
+ IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>,
46
+ TData,
47
+ TRel8ns
48
+ > {
49
+
50
+ /**
51
+ * Log context for convenience with logging. (Ignore if you don't want to use this.)
52
+ */
53
+ protected lc: string = `[${InnerSpace_V1.name}]`;
54
+
55
+ /**
56
+ * In-memory store of ibgibs stored in this inner space object.
57
+ *
58
+ * @see {@link rel8ns} in {@link WitnessBase_V1} base class.
59
+ */
60
+ ibGibs: { [key: string]: TIbGib } = {};
61
+
62
+
63
+
64
+ constructor(
65
+ // I have this following commented out. I copied over some of this behavior from the keystone lib
66
+ // and I'm not sure what I'm keeping here.
67
+ // NOTE: (I refactored the name "repo" to "space" because it seemed to fit better.)
68
+ // /**
69
+ // * Default predicate value when putting an unknown ibGib.
70
+ // *
71
+ // * ## notes
72
+ // *
73
+ // * So when a repo witnesses another ibGib, it either defaults to
74
+ // * storing that ibGib or not storing that ibGib. This is what that
75
+ // * is referring to. If it's optimistic, then it stores any ibGib by
76
+ // * default and it passes its put predicate.
77
+ // */
78
+ // public optimisticPut: boolean = true,
79
+ initialData: TData,
80
+ initialRel8ns: TRel8ns,
81
+ ) {
82
+ super(initialData, initialRel8ns);
83
+
84
+ const lc = `${this.lc}[ctor]`;
85
+ try {
86
+ if (logalot) { console.log(`${lc} starting...`); }
87
+ this.initialize();
88
+ } catch (error) {
89
+ console.error(`${lc} ${error.message}`);
90
+ throw error;
91
+ } finally {
92
+ if (logalot) { console.log(`${lc} complete.`); }
93
+ }
94
+ this.ib = `witness space ${InnerSpace_V1.name}`;
95
+ this.ib = getSpaceIb({ space: this, classname: InnerSpace_V1.name });
96
+ }
97
+
98
+ /**
99
+ * Initializes to default space values.
100
+ */
101
+ protected initialize(): void {
102
+ const lc = `${this.lc}[${this.initialize.name}]`;
103
+ try {
104
+ if (logalot) { console.log(`${lc} starting...`); }
105
+ // if (!this.data) { this.data = h.clone(DEFAULT_IONIC_SPACE_DATA_V1); }
106
+ // if (!this.data.baseDir) { this.data.baseDir = IBGIB_BASE_DIR; }
107
+
108
+ this.ib = getSpaceIb({ space: this, classname: InnerSpace_V1.name });
109
+ } catch (error) {
110
+ console.error(`${lc} ${error.message}`);
111
+ } finally {
112
+ if (logalot) { console.log(`${lc} complete.`); }
113
+ }
114
+ }
115
+
116
+ protected async getImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
117
+ Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
118
+ const lc = `${this.lc}[${this.get.name}]`;
119
+ const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
120
+ try {
121
+ const { ibGibAddrs } = arg.data!;
122
+ if (!ibGibAddrs) { throw new Error(`(UNEXPECTED) arg.data.ibGibAddrs falsy? (E: 33dcc212788221c601bf2258eb1cd523)`); }
123
+ const resultIbGibs: TIbGib[] = [];
124
+ let notFoundIbGibAddrs: IbGibAddr[] | undefined = undefined;
125
+ for (let i = 0; i < ibGibAddrs.length; i++) {
126
+ const addr = ibGibAddrs[i];
127
+ if (Object.keys(this.ibGibs).includes(addr)) {
128
+ resultIbGibs.push(this.ibGibs[addr]);
129
+ } else {
130
+ if (!notFoundIbGibAddrs) { notFoundIbGibAddrs = []; }
131
+ notFoundIbGibAddrs.push(addr);
132
+ }
133
+ }
134
+ if (notFoundIbGibAddrs && notFoundIbGibAddrs.length > 0) {
135
+ resultData.addrsNotFound = notFoundIbGibAddrs;
136
+ resultData.success = false;
137
+ }
138
+ } catch (error) {
139
+ console.error(`${lc} error: ${error.message}`);
140
+ resultData.errors = [error.message];
141
+ }
142
+ const result = await this.resulty({ resultData });
143
+ return result;
144
+ }
145
+ protected async putImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
146
+ Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
147
+ const lc = `${this.lc}[${this.put.name}]`;
148
+ const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
149
+ try {
150
+ const ibGibs = arg.ibGibs || [];
151
+ const addrsAlreadyHave: IbGibAddr[] = [];
152
+
153
+ await this.putIbGibsImpl({ ibGibs, addrsAlreadyHave });
154
+
155
+ if (addrsAlreadyHave.length > 0) {
156
+ resultData.addrsAlreadyHave = addrsAlreadyHave;
157
+ resultData.warnings = (resultData.warnings || []).concat([`${lc} already had addr(s).`]);
158
+ }
159
+ resultData.success = true;
160
+ } catch (error) {
161
+ console.error(`${lc} error: ${error.message}`);
162
+ resultData.errors = [error.message];
163
+ resultData.success = false;
164
+ }
165
+ const result = await this.resulty({ resultData });
166
+ return result;
167
+ }
168
+ protected async putIbGibsImpl({
169
+ ibGibs,
170
+ addrsAlreadyHave,
171
+ }: {
172
+ ibGibs: TIbGib[],
173
+ addrsAlreadyHave: IbGibAddr[],
174
+ }): Promise<void> {
175
+ const lc = `${this.lc}[${this.putIbGibsImpl.name}]`;
176
+ try {
177
+ if (logalot) { console.log(`${lc} starting...`); }
178
+ if (!ibGibs) { throw new Error(`ibGibs required. (E: cd479b15097d45a5bf0c8ca13c9f3487)`); }
179
+ if (!addrsAlreadyHave) { throw new Error(`addrsAlreadyHave required. (E: 18b2c8eef27bc267c55755e272367e22)`); }
180
+
181
+ for (let i = 0; i < ibGibs?.length; i++) {
182
+ const ibGib = ibGibs[i];
183
+ const addr = getIbGibAddr({ ibGib });
184
+ if (!Object.keys(this.ibGibs).includes(addr)) {
185
+ this.ibGibs[addr] = ibGib;
186
+ } else {
187
+ addrsAlreadyHave.push(addr);
188
+ }
189
+ }
190
+ } catch (error) {
191
+ console.error(`${lc} ${error.message}`);
192
+ throw error;
193
+ } finally {
194
+ if (logalot) { console.log(`${lc} complete.`); }
195
+ }
196
+
197
+ }
198
+
199
+ protected async deleteImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
200
+ Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
201
+ const lc = `${this.lc}[${this.delete.name}]`;
202
+ const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
203
+ try {
204
+ const addrsNotFound: IbGibAddr[] = [];
205
+ const addrsDeleted: IbGibAddr[] = [];
206
+ const ibGibAddrs = arg.data!.ibGibAddrs || [];
207
+ for (let i = 0; i < ibGibAddrs.length; i++) {
208
+ const addr = ibGibAddrs[i];
209
+ if (Object.keys(this.ibGibs).includes(addr)) {
210
+ delete this.ibGibs[addr];
211
+ addrsDeleted.push(addr);
212
+ } else {
213
+ addrsNotFound.push(addr);
214
+ }
215
+ }
216
+ if (addrsNotFound.length > 0) {
217
+ resultData.addrsNotFound = addrsNotFound.concat();
218
+ const warningMsg = `${lc} some addrs (${addrsNotFound.length}) not found: ${addrsNotFound}`;
219
+ resultData.warnings = (resultData.warnings || []).concat([warningMsg]);
220
+ }
221
+ resultData.success = true;
222
+ resultData.addrs = addrsDeleted.concat();
223
+ } catch (error) {
224
+ console.error(`${lc} error: ${error.message}`);
225
+ resultData.errors = [error.message];
226
+ resultData.success = false;
227
+ }
228
+ try {
229
+ const result = await this.resulty({ resultData });
230
+ return result;
231
+ } catch (error) {
232
+ console.error(`${lc} error forming result ibGib. error: ${error.message}`);
233
+ throw error;
234
+ }
235
+ }
236
+ protected async getAddrsImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
237
+ Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
238
+ const lc = `${this.lc}[${this.getAddrs.name}]`;
239
+ const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
240
+ try {
241
+ resultData.addrs = Object.keys(this.ibGibs).concat();
242
+ resultData.success = true;
243
+ } catch (error) {
244
+ console.error(`${lc} error: ${error.message}`);
245
+ resultData.errors = [error.message];
246
+ resultData.success = false;
247
+ }
248
+ const result = await this.resulty({ resultData });
249
+ return result;
250
+ }
251
+ /**
252
+ * Performs a naive `exists: boolean` or `includes: boolean` analog.
253
+ *
254
+ * If all of the addresses are found, will result in `success` and `can` being `true`.
255
+ *
256
+ * Else, `can` will be falsy, and `addrsNotFound` will be populated with all/some of
257
+ * the queried addresses.
258
+ *
259
+ * ## notes
260
+ *
261
+ * This does not take authorization into account in any way. it's a simple, naive in-memory
262
+ * storage ibGib witness.
263
+ *
264
+ * @returns result ibGib whose primary value is `can`
265
+ */
266
+ protected async canGetImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
267
+ Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
268
+ const lc = `${this.lc}[${this.canGet.name}]`;
269
+ const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
270
+ try {
271
+ const { ibGibAddrs } = arg.data!;
272
+ if (!ibGibAddrs) { throw new Error(`(UNEXPECTED) arg.data.ibGibAddrs falsy? (E: d94c64744037ca443589fca71e121123)`); }
273
+ let notFoundIbGibAddrs: IbGibAddr[] | undefined = undefined;
274
+ for (let i = 0; i < ibGibAddrs.length; i++) {
275
+ const addr = ibGibAddrs[i];
276
+ if (!Object.keys(this.ibGibs).includes(addr)) {
277
+ if (!notFoundIbGibAddrs) { notFoundIbGibAddrs = []; }
278
+ notFoundIbGibAddrs.push(addr);
279
+ }
280
+ }
281
+ resultData.success = true;
282
+ if (notFoundIbGibAddrs && notFoundIbGibAddrs.length > 0) {
283
+ resultData.addrsNotFound = notFoundIbGibAddrs;
284
+ resultData.can = false;
285
+ } else {
286
+ resultData.can = true;
287
+ }
288
+ } catch (error) {
289
+ console.error(`${lc} error: ${error.message}`);
290
+ resultData.errors = [error.message];
291
+ }
292
+ const result = await this.resulty({ resultData });
293
+ return result;
294
+ }
295
+ protected async canPutImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
296
+ Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
297
+ const lc = `${this.lc}[${this.canPut.name}]`;
298
+ const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
299
+ try {
300
+ const ibGibs = arg.ibGibs || [];
301
+ const addrsAlreadyHave: IbGibAddr[] = [];
302
+ for (let i = 0; i < ibGibs?.length; i++) {
303
+ const ibGib = ibGibs[i];
304
+ const addr = getIbGibAddr({ ibGib });
305
+ if (Object.keys(this.ibGibs).includes(addr)) {
306
+ addrsAlreadyHave.push(addr);
307
+ }
308
+ }
309
+ resultData.success = true;
310
+ if (addrsAlreadyHave.length > 0) {
311
+ resultData.addrsAlreadyHave = addrsAlreadyHave;
312
+ resultData.warnings = (resultData.warnings || []).concat([`${lc} already have addr(s).`]);
313
+ }
314
+ resultData.can = ibGibs.length > addrsAlreadyHave.length;
315
+ } catch (error) {
316
+ console.error(`${lc} error: ${error.message}`);
317
+ resultData.errors = [error.message];
318
+ }
319
+ const result = await this.resulty({ resultData });
320
+ return result;
321
+ }
322
+
323
+ protected async canDeleteImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
324
+ Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
325
+ const lc = `${this.lc}[${this.canDeleteImpl.name}]`;
326
+ const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
327
+ try {
328
+ throw new Error('not implemented');
329
+ } catch (error) {
330
+ console.error(`${lc} error: ${error.message}`);
331
+ resultData.errors = [error.message];
332
+ resultData.success = false;
333
+ }
334
+ try {
335
+ const result = await this.resulty({ resultData });
336
+ return result;
337
+ } catch (error) {
338
+ console.error(`${lc} error forming result ibGib. error: ${error.message}`);
339
+ throw error;
340
+ }
341
+ }
342
+ protected async persistOptsAndResultIbGibs({
343
+ arg,
344
+ result
345
+ }: {
346
+ arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>,
347
+ result: IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>,
348
+ }): Promise<void> {
349
+ const lc = `${this.lc}[${this.persistOptsAndResultIbGibs.name}]`;
350
+ try {
351
+ if (logalot || this.data?.trace) { console.log(`${lc} starting...`); }
352
+ if (logalot || this.data?.trace) {
353
+ console.log(`${lc} doing arg?.data?.cmd: ${arg?.data?.cmd}, result?.data?.success: ${result?.data?.success}`);
354
+ }
355
+ let argValidationErrors = await validateIbGibIntrinsically({ ibGib: arg });
356
+ if (argValidationErrors && argValidationErrors.length > 0) { throw new Error(`invalid arg. cannot persist. (E: 015d38de71a3407f9d77fc4ed3404bf0)`); }
357
+ let resultValidationErrors = result ?
358
+ await validateIbGibIntrinsically({ ibGib: result }) :
359
+ null;
360
+ if (resultValidationErrors && resultValidationErrors.length > 0) { throw new Error(`invalid arg. cannot persist. (E: 015d38de71a3407f9d77fc4ed3404bf0)`); }
361
+
362
+ const ibGibs = [arg, result ?? ROOT];
363
+ await this.putIbGibsImpl({ ibGibs: <any[]>ibGibs, addrsAlreadyHave: [] });
364
+ } catch (error) {
365
+ console.error(`${lc} ${error.message}`);
366
+ // this is a best effort storage, so we do not rethrow
367
+ // throw error;
368
+ } finally {
369
+ if (logalot || this.data?.trace) { console.log(`${lc} complete.`); }
370
+ }
371
+ }
372
+ }
@@ -0,0 +1 @@
1
+ export const OUTER_SPACE_DEFAULT_IB_DELIMITER = ' ';
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @module outer-space
3
+ * Outer spaces are spaces connecting local inner spaces.
4
+ * ATOW there is just sync spaces, but definitely just the beginning.
5
+ *
6
+ * ## on future implementations, CRDT-like behavior
7
+ *
8
+ * I just realized that when merging, I can actually create a meta transform
9
+ * ibgib to maintain the order of transforms.
10
+ */
11
+
12
+ import { Ib, } from '@ibgib/ts-gib';
13
+
14
+ import {
15
+ OuterSpaceSubtype, OuterSpaceType,
16
+ StatusCode, StatusIbInfo,
17
+ VALID_OUTER_SPACE_SUBTYPES, VALID_OUTER_SPACE_TYPES,
18
+ } from './outer-space-types.mjs';
19
+ import { OUTER_SPACE_DEFAULT_IB_DELIMITER } from './outer-space-constants.mjs';
20
+
21
+
22
+ /**
23
+ * Composes ib with given params info.
24
+ *
25
+ * @returns ib string with given info encoded
26
+ */
27
+ export function getStatusIb({
28
+ sagaId,
29
+ statusCode,
30
+ spaceType,
31
+ spaceSubtype,
32
+ delimiter,
33
+ }: StatusIbInfo): string {
34
+ const lc = `[${getStatusIb.name}]`;
35
+ try {
36
+ if (!sagaId) { throw new Error(`sagaId required. (E: cfc923bb29ee4aa788e947b6416740e6)`); }
37
+ if (statusCode === null || statusCode === undefined) { throw new Error(`status code required. (E: 4e0d232a9955496695012623c2e17ca2)`); }
38
+ if (!Object.values(StatusCode).includes(statusCode)) { throw new Error(`invalid status code (${statusCode}) (E: 91d7655424c44d9680fff099ee2b54d2)`); }
39
+ if (!spaceType) { throw new Error(`spaceType required. (E: 86e98694a56a4f599e98e50abf0eed43)`); }
40
+ if (!spaceSubtype) { throw new Error(`spaceSubtype required. (E: 4857d4677ee34e95aeb2251dd633909e)`); }
41
+
42
+ delimiter = delimiter || OUTER_SPACE_DEFAULT_IB_DELIMITER;
43
+
44
+ return `status ${sagaId} ${statusCode} ${spaceType} ${spaceSubtype}`;
45
+ } catch (error) {
46
+ console.error(`${lc} ${error.message}`);
47
+ throw error;
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Parses the given `statusIb` and returns the info object.
53
+ *
54
+ * @returns info from parsing the status ib
55
+ */
56
+ export function getStatusIbInfo({
57
+ statusIb,
58
+ delimiter,
59
+ }: {
60
+ statusIb: Ib,
61
+ delimiter?: string,
62
+ }): StatusIbInfo {
63
+ const lc = `[${getStatusIb.name}]`;
64
+ try {
65
+ if (!statusIb) { throw new Error(`statusIb required. (E: 09e23e8622cf456cadb0c3d0aadc3be9)`); }
66
+
67
+ delimiter = delimiter || OUTER_SPACE_DEFAULT_IB_DELIMITER;
68
+
69
+ // atow `status ${sagaId} ${statusCode} ${spaceType} ${spaceSubtype}`;
70
+ const pieces = statusIb.split(delimiter);
71
+
72
+ const sagaId = pieces[1];
73
+ if (sagaId === null || sagaId === undefined) { throw new Error(`sagaId is null/undefined. (E: 5de2861a6afb48e1a1c89d0402a4ea63)`); }
74
+
75
+ const statusCode = pieces[2] as StatusCode; // tenatively cast as StatusCode
76
+ if (!Object.values(StatusCode).includes(statusCode)) { throw new Error(`invalid/unknown status code (${statusCode}) (E: 7580860df7b344b3992148552e80a85e)`); }
77
+
78
+ const spaceType = pieces[3] as OuterSpaceType;
79
+ if (spaceType === null || spaceType === undefined) { throw new Error(`spaceType is null/undefined. (E: 12473d35e77b451bb59bb05c03cb8b64)`); }
80
+ if (!VALID_OUTER_SPACE_TYPES.includes(spaceType)) { throw new Error(`invalid/unknown spaceType (${spaceType}) (E: d3ba9add427f49dda34f265f3225d9db)`); }
81
+
82
+ const spaceSubtype = pieces[4] as OuterSpaceSubtype;
83
+ if (spaceSubtype === null || spaceSubtype === undefined) { throw new Error(`spaceSubtype is null/undefined. (E: 6da7ae919d0b4a22b4ee685520b6c946)`); }
84
+ if (!VALID_OUTER_SPACE_SUBTYPES.includes(spaceSubtype)) { throw new Error(`invalid/unknown spaceSubtype (${spaceSubtype}) (E: 703ed1aee44447a294b3e1cf0984baba)`); }
85
+
86
+ return { statusCode, spaceType, spaceSubtype, sagaId, delimiter };
87
+ } catch (error) {
88
+ console.error(`${lc} ${error.message}`);
89
+ throw error;
90
+ }
91
+ }