@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,641 @@
1
+ import * as h from '@ibgib/helper-gib';
2
+ import { groupBy } from '@ibgib/helper-gib';
3
+ import * as cTsGib from '@ibgib/ts-gib/dist/V1/constants.mjs';
4
+ import { getIbAndGib, getIbGibAddr, } from '@ibgib/ts-gib';
5
+ import { GIB, Factory_V1 as factory, } from '@ibgib/ts-gib/dist/V1/index.mjs';
6
+ import { validateIb } from '@ibgib/ts-gib/dist/V1/validate-helper.mjs';
7
+ import { getGib, getGibInfo } from '@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs';
8
+ import { GLOBAL_LOG_A_LOT, IB_REGEXP_DEFAULT } from '../../core-constants.mjs';
9
+ import { SpecialIbGibType } from './other-types.mjs';
10
+ const logalot = GLOBAL_LOG_A_LOT || false;
11
+ /**
12
+ * Utility function to generate hard-coded ibgibs to use at runtime "on-chain" but
13
+ * written at compile-time in (for now) "off-chain" source code.
14
+ *
15
+ * Because this is supposed to create and re-create deterministically the equivalent
16
+ * of a non-primitive ibgib "constant", this function creates a single ibgib with...
17
+ * * one ancestor
18
+ * * no past, dna, or tjp rel8ns
19
+ * * no tjp timestamp or uuid
20
+ * * no nCounter
21
+ *
22
+ * ## validation
23
+ *
24
+ * * validates the given `ib` against `ibRegExpPattern` or default regexp.
25
+ * * validates that rel8ns doesn't include default forbidden rel8n names or
26
+ * atow `'tjp'`.
27
+ *
28
+ * ## intent
29
+ *
30
+ * I want to be able to create deterministic ibGibs that I can reference at
31
+ * runtime, similar to an ibgib primitive (e.g. "root^gib"), but with the
32
+ * integrity of the `gib` hash. This way, I can reference a deterministic ibgib
33
+ * from code at compile time, and at runtime this will have a corresponding
34
+ * ibgib datum with gib-hashed integrity.
35
+ *
36
+ * ## example
37
+ *
38
+ * I want to create a "hard-coded" schema ibgib that I rel8 to some protocol
39
+ * ibgib. So I'll create the data here, which lives in source control in a text file,
40
+ * and then I'll render that as an ibgib that verifies integrity. If I as a coder change
41
+ * it at all, then the `gib` of course will be different.
42
+ *
43
+ * @param param0
44
+ */
45
+ export async function constantIbGib({ parentPrimitiveIb, ib, ibRegExpPattern, data, rel8ns, }) {
46
+ const lc = `[${constantIbGib.name}]`;
47
+ try {
48
+ // validation
49
+ // parentPrimitiveIb
50
+ if (!parentPrimitiveIb) {
51
+ throw new Error(`parentPrimitiveIb required. (E: 88ddf188cc5a4340b597abefba1481e2)`);
52
+ }
53
+ if (validateIb({ ib: parentPrimitiveIb }) !== null) {
54
+ throw new Error(`Invalid parentPrimitiveIb: ${parentPrimitiveIb}. (E:5aec0320956d492ebeeaca41eb1fe1c6)`);
55
+ }
56
+ // ib
57
+ if (!ib) {
58
+ throw new Error(`ib required. (E: 7bbc88f4f2e842d6b00126e55b1783e4)`);
59
+ }
60
+ const regExp = ibRegExpPattern ? new RegExp(ibRegExpPattern) : IB_REGEXP_DEFAULT;
61
+ if (!ib.match(regExp)) {
62
+ throw new Error(`invalid ib. does not match regexp (${regExp})`);
63
+ }
64
+ // rel8ns
65
+ const incomingRel8nNames = Object.keys(rel8ns ?? {});
66
+ const forbiddenRel8nNames = [...cTsGib.FORBIDDEN_ADD_RENAME_REMOVE_REL8N_NAMES, 'tjp'];
67
+ const rel8nsIsInvalid = incomingRel8nNames.some(x => {
68
+ // we don't want constants trying to look like they have/are descendants/tjps/etc.
69
+ return forbiddenRel8nNames.includes(x);
70
+ });
71
+ if (rel8nsIsInvalid) {
72
+ throw new Error(`Invalid rel8ns. forbiddenRel8nNames: ${forbiddenRel8nNames}. rel8ns keys: ${Object.keys(rel8ns ?? {})}. (E: 837a993c265c4362b6aa0b1a234ea5f8)`);
73
+ }
74
+ // create the constant
75
+ const resFirstGen = await factory.firstGen({
76
+ ib,
77
+ parentIbGib: factory.primitive({ ib: parentPrimitiveIb }),
78
+ data,
79
+ rel8ns,
80
+ dna: false,
81
+ noTimestamp: true,
82
+ nCounter: false,
83
+ });
84
+ const constantIbGib = resFirstGen.newIbGib;
85
+ // remove any extraneous stuff
86
+ if (constantIbGib?.rel8ns?.past) {
87
+ delete constantIbGib.rel8ns.past;
88
+ }
89
+ if (constantIbGib?.rel8ns?.tjp) {
90
+ delete constantIbGib.rel8ns.tjp;
91
+ }
92
+ if (constantIbGib?.rel8ns?.identity) {
93
+ delete constantIbGib.rel8ns.identity;
94
+ }
95
+ // recalculate the gib hash
96
+ // constantIbGib.gib = await sha256v1({
97
+ constantIbGib.gib = await getGib({
98
+ ibGib: {
99
+ ib: constantIbGib.ib,
100
+ data: constantIbGib.data,
101
+ rel8ns: constantIbGib.rel8ns,
102
+ },
103
+ hasTjp: false,
104
+ });
105
+ return constantIbGib;
106
+ }
107
+ catch (error) {
108
+ console.error(`${lc} ${error.message}`);
109
+ throw error;
110
+ }
111
+ }
112
+ /**
113
+ * Binaries require special handling, since they do not conform to the
114
+ * "normal" IbGib_V1 data structure per se. This stems from wanting to
115
+ * be able to have binaries (jpgs, gifs, etc. especially) able to
116
+ * sit on a server and be served as regular files.
117
+ *
118
+ * @returns string in expected template for binaries in this app.
119
+ */
120
+ export function getBinIb({ binHash, binExt }) {
121
+ return binExt ? `bin ${binHash} ${binExt}` : `bin ${binHash}`;
122
+ }
123
+ export function getBinHashAndExt({ addr }) {
124
+ const lc = `[${getBinHashAndExt.name}]`;
125
+ try {
126
+ if (!isBinary({ addr })) {
127
+ throw new Error(`not a bin address (E: df0804d129bc4888bd6939cb76c5e0f6)`);
128
+ }
129
+ const { ib } = getIbAndGib({ ibGibAddr: addr });
130
+ const ibPieces = ib.split(' ');
131
+ const binHash = ibPieces[1];
132
+ const binExt = ibPieces[2];
133
+ return { binHash, binExt };
134
+ }
135
+ catch (error) {
136
+ console.error(`${lc} ${error.message}`);
137
+ throw error;
138
+ }
139
+ }
140
+ export function isBinary({ ibGib, addr, }) {
141
+ const lc = `[${isBinary.name}]`;
142
+ try {
143
+ // probably overkill here, but...
144
+ if (!ibGib && !addr) {
145
+ throw new Error(`either ibGib or addr required. (E: c935b51e773f41a2a547c556e9dc16c6)`);
146
+ }
147
+ addr = addr || getIbGibAddr({ ibGib });
148
+ const { ib, gib } = getIbAndGib({ ibGibAddr: addr });
149
+ if (!ib) {
150
+ return false;
151
+ }
152
+ if (!gib) {
153
+ return false;
154
+ }
155
+ if (!ib.startsWith('bin ')) {
156
+ return false;
157
+ }
158
+ if (gib.length !== 64) {
159
+ console.warn(`${lc} gib length is not 64, so return false. But this may not be true if using another hash algorithm.`);
160
+ return false;
161
+ }
162
+ const ibPieces = ib.split(' ');
163
+ if (ibPieces.length !== 3) {
164
+ return false;
165
+ }
166
+ if (ibPieces[1] === "") {
167
+ return false;
168
+ }
169
+ return true;
170
+ }
171
+ catch (error) {
172
+ console.error(`${lc} ${error.message}`);
173
+ throw error;
174
+ }
175
+ }
176
+ export async function hash16816({ s, algorithm, }) {
177
+ const lc = `[${hash16816.name}]`;
178
+ try {
179
+ let hashed = '';
180
+ for (let i = 0; i < 168; i++) {
181
+ hashed = await h.hash({ s, algorithm });
182
+ }
183
+ return hashed.slice(0, 16);
184
+ }
185
+ catch (error) {
186
+ console.error(`${lc} ${error.message}`);
187
+ throw error;
188
+ }
189
+ }
190
+ export function getSpecialIbGibIb({ type }) {
191
+ return `meta special ${type}`;
192
+ }
193
+ export function getSpecialTypeFromIb({ ib }) {
194
+ const lc = `[${getSpecialTypeFromIb.name}]`;
195
+ try {
196
+ if (logalot) {
197
+ console.log(`${lc} starting... (I: c82ba222bd345ee6b695df4d63a23322)`);
198
+ }
199
+ if (!ib) {
200
+ throw new Error(`ib required (E: 08897145f7138e644fe01c4a59353322)`);
201
+ }
202
+ if (!isSpecial({ ib })) {
203
+ throw new Error(`ib is not special (E: 174aff63b992adff3ac2394643735922)`);
204
+ }
205
+ const pieces = ib.split(' ');
206
+ if (pieces.length < 3) {
207
+ throw new Error(`invalid ib. should be space-delimited in form of "meta special [type]" (E: ffd89e2cbe63427f98634ab897aab222)`);
208
+ }
209
+ const specialType = pieces[2];
210
+ if (!Object.values(SpecialIbGibType).some(x => x === specialType)) {
211
+ console.warn(`unknown special type (${specialType}). This may be expected, but atow I am adding special types to the SpecialIbGibType enum-like. (W: f4e26c3ebb57fe49d69014a4ba32a922)`);
212
+ }
213
+ return specialType;
214
+ }
215
+ catch (error) {
216
+ console.error(`${lc} ${error.message}`);
217
+ throw error;
218
+ }
219
+ finally {
220
+ if (logalot) {
221
+ console.log(`${lc} complete.`);
222
+ }
223
+ }
224
+ }
225
+ export function getSpecialIbGibAddr({ type }) {
226
+ const ib = getSpecialIbGibIb({ type });
227
+ return `${ib}^${GIB}`;
228
+ }
229
+ export function getSpecialConfigKey({ type }) {
230
+ return `config_key ${getSpecialIbGibAddr({ type })}`;
231
+ }
232
+ export function isSpecial({ ib, ibGib }) {
233
+ if (!ib && !ibGib?.ib) {
234
+ throw new Error(`either ib or ibGib.ib required (E: b4cf539638d7966c2e351987f55e1a23)`);
235
+ }
236
+ return (ib ?? ibGib?.ib)?.startsWith('meta special');
237
+ }
238
+ /**
239
+ * returns ib for a given root. ATOW this is simply "root {text}"
240
+ *
241
+ * @returns ib for the given rootText
242
+ */
243
+ export function getRootIb(rootText) {
244
+ const lc = `[${getRootIb.name}]`;
245
+ if (!rootText) {
246
+ throw new Error(`${lc} text required.`);
247
+ }
248
+ return `root ${rootText}`;
249
+ }
250
+ /**
251
+ * Tags for this app have the form: tag [tagText]
252
+ *
253
+ * @param tagText e.g. "Favorites"
254
+ *
255
+ * @example
256
+ * For the Favorites tag, the ib would be "tag Favorites"
257
+ */
258
+ export function tagTextToIb(tagText) {
259
+ const lc = `[${tagTextToIb.name}]`;
260
+ if (!tagText) {
261
+ throw new Error(`${lc} tag required.`);
262
+ }
263
+ return `tag ${tagText}`;
264
+ }
265
+ /**
266
+ * Living: has tjp and dna.
267
+ * Stones: does not have Dna, maybe has tjp.
268
+ *
269
+ * Splits the given `ibGibs` into two maps, one that includes the ibgibs that
270
+ * have a tjp (temporal junction point) AND dna ("living") and those that do not
271
+ * have both tjp AND dna ("stones").
272
+ *
273
+ * ## notes
274
+ *
275
+ * Having dna implies having a tjp, but the reverse is not necessarily true.
276
+ * Sometimes you want an ibgib that has a tjp so you can, e.g., reference the
277
+ * entire timeline easily. But at the same time you don't want to keep track of
278
+ * the transforms, perhaps this is because you don't want to be able to merge
279
+ * timelines.
280
+ */
281
+ export function splitPerTjpAndOrDna({ ibGibs, filterPrimitives, }) {
282
+ const lc = `[${splitPerTjpAndOrDna.name}]`;
283
+ try {
284
+ const mapWithTjp_YesDna = {};
285
+ const mapWithTjp_NoDna = {};
286
+ const mapWithoutTjps = {};
287
+ // const mapLivingIbGibs: { [gib: string]: IbGib_V1 } = {};
288
+ // const mapStoneIbGibs: { [gib: string]: IbGib_V1 } = {};
289
+ const ibGibsTodo = filterPrimitives ?
290
+ ibGibs.filter(ibGib => ibGib.gib ?? ibGib.gib !== GIB) :
291
+ ibGibs;
292
+ ibGibsTodo.forEach(ibGib => {
293
+ if (hasTjp({ ibGib })) {
294
+ if ((ibGib.rel8ns?.dna ?? []).length > 0) {
295
+ mapWithTjp_YesDna[ibGib.gib] = ibGib;
296
+ }
297
+ else {
298
+ mapWithTjp_NoDna[ibGib.gib] = ibGib;
299
+ }
300
+ }
301
+ else {
302
+ mapWithoutTjps[ibGib.gib] = ibGib;
303
+ }
304
+ });
305
+ return { mapWithTjp_YesDna, mapWithTjp_NoDna, mapWithoutTjps };
306
+ }
307
+ catch (error) {
308
+ console.error(`${lc} ${error.message}`);
309
+ throw error;
310
+ }
311
+ }
312
+ /**
313
+ * Takes incoming `ibGibs`, filters out those that do
314
+ * not have tjps( i.e. non-timelines), and groups
315
+ * the timeline ibgibs by tjp in ascending order.
316
+ *
317
+ * This means that each map entry will be in the form:
318
+ * `[tjpAddr] => [ibgib0 (tjp), ibgib1, ibgib2, ..., ibgibN (latest)]`
319
+ *
320
+ * ## notes
321
+ *
322
+ * * sorts by `ibgib.data.n`. If this is undefined, will not sort in ascending
323
+ * order properly.
324
+ *
325
+ * @returns filtered, sorted map of incoming `ibGibs` [tjpAddr] => timeline [ibgib0 (tjp), ibgib1, ibgib2, ..., ibgibN (latest)]
326
+ */
327
+ export function getTimelinesGroupedByTjp({ ibGibs, }) {
328
+ const lc = `[${getTimelinesGroupedByTjp.name}]`;
329
+ try {
330
+ if (logalot) {
331
+ console.log(`${lc} starting...`);
332
+ }
333
+ // pull out only the ibgibs in timelines (either is tjp or has tjp)
334
+ let { mapWithTjp_YesDna, mapWithTjp_NoDna } = splitPerTjpAndOrDna({ ibGibs, filterPrimitives: true });
335
+ const mapIbGibsWithTjp = { ...mapWithTjp_YesDna, ...mapWithTjp_NoDna };
336
+ const ibGibsWithTjp = Object.values(mapIbGibsWithTjp);
337
+ const mapTjpTimelines_Ascending = groupBy({
338
+ items: ibGibsWithTjp,
339
+ keyFn: x => {
340
+ // x.data?.isTjp ? getIbGibAddr({ ibGib: x }) : (x.rel8ns?.tjp[0] ?? '') // converting this untested...hmm
341
+ if (x.data?.isTjp) {
342
+ return getIbGibAddr({ ibGib: x });
343
+ }
344
+ else if (x.rel8ns?.tjp) {
345
+ return x.rel8ns?.tjp[0] ?? '';
346
+ }
347
+ else {
348
+ if (logalot) {
349
+ console.log(`${lc} neither isTjp nor x.rel8ns.tjp truthy (I: ec9a5597bf53dec1bd3d83350abbf823)`);
350
+ }
351
+ return '';
352
+ }
353
+ }
354
+ });
355
+ if (logalot) {
356
+ console.log(`${lc} sorting (ascending) ibGibsWithTjpGroupedByTjpAddr: ${h.pretty(mapTjpTimelines_Ascending)} (I: 9b9fff5ce61444a6cb06d62db9a99422)`);
357
+ }
358
+ Object.entries(mapTjpTimelines_Ascending).forEach(([_tjpAddr, timeline]) => {
359
+ if (timeline.some(ibGib => ibGib.data?.n === undefined)) {
360
+ console.warn(`${lc} timeline includes ibgibs with ibGib.data?.n === undefined (W: cab9a6b64a38c4279fe82c3569bbab22)`);
361
+ }
362
+ // sort mutates array in place
363
+ timeline.sort((a, b) => (a.data?.n ?? -1) > (b.data?.n ?? -1) ? 1 : -1); // sorts ascending, e.g., 0,1,2...[Highest]
364
+ });
365
+ if (logalot) {
366
+ console.log(`${lc} after sort ibGibsWithTjpGroupedByTjpAddr: ${h.pretty(mapTjpTimelines_Ascending)} (I: 9b9fff5ce61444a6cb06d62db9a99422)`);
367
+ }
368
+ return mapTjpTimelines_Ascending; // ascending
369
+ }
370
+ catch (error) {
371
+ console.error(`${lc} ${error.message}`);
372
+ throw error;
373
+ }
374
+ finally {
375
+ if (logalot) {
376
+ console.log(`${lc} complete.`);
377
+ }
378
+ }
379
+ }
380
+ /**
381
+ * Helper function that checks the given `ibGib` to see if it
382
+ * either has a tjp or is a tjp itself.
383
+ *
384
+ * ## notes
385
+ *
386
+ * Only unique ibGibs are meant to have tjps, or rather, if an
387
+ * ibGib timeline is expected to be unique over "time", then the
388
+ * tjp is an extremely convenient mechanism that provides a
389
+ * "name" for that timeline.
390
+ *
391
+ * Otherwise, if they are not unique, then successive "different"
392
+ * timelines cannot be easily referenced by their first unique
393
+ * frame in time, making it much harder to pub/sub updates among
394
+ * other things. (If there are no unique frames, then they are
395
+ * the same ibGib.)
396
+ *
397
+ * ## tjp = temporal junction point
398
+ *
399
+ * I've written elsewhere on this as well. Refer to B2tF2.
400
+ *
401
+ * @returns true if the ibGib has/is a tjp, else false
402
+ */
403
+ export function hasTjp({ ibGib }) {
404
+ const lc = `[${hasTjp.name}]`;
405
+ if (!ibGib) {
406
+ console.warn(`${lc} ibGib falsy. (W: 884178562f5b4f15933ac4d98db74cc6)`);
407
+ return false;
408
+ }
409
+ if (ibGib.data?.isTjp || (ibGib.rel8ns?.tjp?.length ?? 0) > 0) {
410
+ return true;
411
+ }
412
+ // dna transforms do not have tjp
413
+ const dnaPrimitives = ['fork^gib', 'mut8^gib', 'rel8^gib'];
414
+ if ((ibGib.rel8ns?.ancestor ?? []).some(x => dnaPrimitives.includes(x))) {
415
+ return false;
416
+ }
417
+ if (!ibGib.gib) {
418
+ console.warn(`${lc} ibGib.gib falsy. (W: 6400d780822b44d992846f1196509be3)`);
419
+ return false;
420
+ }
421
+ if (ibGib.gib.includes(cTsGib.GIB_DELIMITER)) {
422
+ return true;
423
+ }
424
+ if (ibGib.gib === cTsGib.GIB) {
425
+ // primitive
426
+ return false;
427
+ }
428
+ // use more expensive getGibInfo call.
429
+ // could possibly just return false at this point, but since gib info
430
+ // would change if we change our standards for gib, this is nicer.
431
+ const gibInfo = getGibInfo({ ibGibAddr: getIbGibAddr({ ibGib }) });
432
+ return gibInfo.tjpGib ? true : false;
433
+ }
434
+ export function hasDna({ ibGib }) {
435
+ const lc = `[${hasDna.name}]`;
436
+ if (!ibGib) {
437
+ console.warn(`${lc} ibGib falsy. (W: 5fd19751f5c84da59d83dd33487ed859)`);
438
+ return false;
439
+ }
440
+ return (ibGib.rel8ns?.dna ?? []).length > 0;
441
+ }
442
+ /**
443
+ * Extracts the tjp addr from the ibgib record. If there is no tjp addr found,
444
+ * then refers to `defaultIfNone` arg to determine if it returns undefined or
445
+ * the incoming ibgib's addr.
446
+ * @returns extracted tjp addr or undefined, depending on if found and defaultIfNone value
447
+ */
448
+ export function getTjpAddr({ ibGib, defaultIfNone = 'undefined', }) {
449
+ const lc = `[${getTjpAddr.name}]`;
450
+ try {
451
+ const tjpMap = getTjpAddrs({ ibGibs: [ibGib], defaultIfNone });
452
+ return tjpMap && Object.keys(tjpMap).length === 1 ? Object.values(tjpMap)[0] : undefined;
453
+ }
454
+ catch (error) {
455
+ console.error(`${lc} ${error.message}`);
456
+ throw error;
457
+ }
458
+ }
459
+ /**
460
+ * builds a map of the given ibgib's addrs to each's corresponding tjp addr.
461
+ *
462
+ * @returns a map of ibgib addr -> tjp addr
463
+ */
464
+ export function getTjpAddrs({ ibGibs, defaultIfNone = 'undefined', }) {
465
+ const lc = `[${getTjpAddrs.name}]`;
466
+ try {
467
+ const resultMap = {};
468
+ ibGibs.forEach(ibGib => {
469
+ let ibGibAddr = getIbGibAddr({ ibGib });
470
+ let tjpAddr;
471
+ if (ibGib.rel8ns?.tjp?.length ?? 0 > 0) {
472
+ // get the last tjp addr atow
473
+ tjpAddr = ibGib.rel8ns.tjp[ibGib.rel8ns.tjp.length - 1];
474
+ }
475
+ else if (ibGib.data?.isTjp || defaultIfNone === 'incomingAddr') {
476
+ // either the incoming addr is the tjp or we're defaulting to it per defaultIfNone arg
477
+ tjpAddr = ibGibAddr;
478
+ }
479
+ else {
480
+ // explicitly set to undefined per defaultIfNone arg
481
+ tjpAddr = undefined;
482
+ }
483
+ resultMap[ibGibAddr] = tjpAddr;
484
+ });
485
+ return resultMap;
486
+ }
487
+ catch (error) {
488
+ console.error(`${lc} ${error.message}`);
489
+ throw error;
490
+ }
491
+ }
492
+ /**
493
+ * Combines two maps/arrays into a single one with some very basic, naive merge rules:
494
+ *
495
+ * 1. If a key exists in only one map, then it will be included in the output map.
496
+ * 2. If a key exists in both maps and the type is array or map, then these will be recursively merged.
497
+ * 3. If a key exists in both maps but is not an array or map, the dominant map's value wins.
498
+ *
499
+ * ## future
500
+ *
501
+ * In the future, if we want to keep these kinds of things around and be more
502
+ * specific about mergers, we can always rel8 a merge strategy ibgib to be
503
+ * referred to when performing merger.
504
+ */
505
+ export function mergeMapsOrArrays_Naive({ dominant, recessive, }) {
506
+ const lc = `[${mergeMapsOrArrays_Naive.name}]`;
507
+ try {
508
+ if (Array.isArray(dominant) && Array.isArray(recessive)) {
509
+ // arrays
510
+ const output = h.clone(dominant);
511
+ let warned = false;
512
+ recessive.forEach((recessiveItem) => {
513
+ if (typeof (recessiveItem) === 'string') {
514
+ if (!output.includes(recessiveItem)) {
515
+ output.push(recessiveItem);
516
+ }
517
+ }
518
+ else {
519
+ if (!warned) {
520
+ console.warn(`${lc} merging arrays of non-string elements. (W: d8ab113064834abc8eb5fe6c4cf87ba3)`);
521
+ warned = true;
522
+ }
523
+ // we'll check the stringified version of recessive item against
524
+ // the stringified dominant item.
525
+ const xString = JSON.stringify(recessiveItem);
526
+ if (!output.some(o => JSON.stringify(o) === xString)) {
527
+ output.push(recessiveItem);
528
+ }
529
+ }
530
+ });
531
+ return output;
532
+ }
533
+ else if (typeof (dominant) === 'object' && typeof (recessive) === 'object') {
534
+ // maps
535
+ const output = {};
536
+ const dominantKeys = Object.keys(dominant);
537
+ const recessiveKeys = Object.keys(recessive);
538
+ dominantKeys.forEach((key) => {
539
+ if (recessiveKeys.includes(key)) {
540
+ // naive merge for key that exists in both dominant & recessive
541
+ if (Array.isArray(dominant[key]) && Array.isArray(recessive[key])) {
542
+ // recursive call if both arrays
543
+ output[key] = mergeMapsOrArrays_Naive({
544
+ dominant: dominant[key],
545
+ recessive: recessive[key],
546
+ });
547
+ }
548
+ else if (!!dominant[key] && !Array.isArray(dominant[key]) && typeof (dominant[key]) === 'object' &&
549
+ !!recessive[key] && !!Array.isArray(recessive[key]) && typeof (recessive[key]) === 'object') {
550
+ // recursive call if both objects
551
+ output[key] = mergeMapsOrArrays_Naive({
552
+ dominant: dominant[key],
553
+ recessive: recessive[key],
554
+ });
555
+ }
556
+ else {
557
+ output[key] = dominant[key];
558
+ }
559
+ }
560
+ else {
561
+ output[key] = dominant[key];
562
+ }
563
+ });
564
+ return output;
565
+ }
566
+ else {
567
+ // ? unknown matching of dominant and recessive
568
+ console.warn(`${lc} unknown values or value types do not match. Both should either be an array or map. Dominant one wins categorically without any merging. (W: 3690ea19b81a4b89b98c1940637df62c)`);
569
+ return dominant;
570
+ }
571
+ }
572
+ catch (error) {
573
+ console.error(`${lc} ${error.message}`);
574
+ throw error;
575
+ }
576
+ }
577
+ ;
578
+ /**
579
+ * Returns true if the given {@param ibGib} is the temporal junction
580
+ * point for a given ibGib timeline.
581
+ */
582
+ export async function isTjp_Naive({ ibGib, naive = true, }) {
583
+ const lc = `[${isTjp_Naive.name}]`;
584
+ try {
585
+ if (!ibGib) {
586
+ throw new Error('ibGib required.');
587
+ }
588
+ if (naive) {
589
+ if (ibGib.data) {
590
+ if (ibGib.data.isTjp) {
591
+ return true;
592
+ }
593
+ if (!ibGib.rel8ns) {
594
+ if (logalot) {
595
+ console.log(`${lc} ibGib.rel8ns falsy (I: c69c9e78b34845311ce7c674d7195622)`);
596
+ }
597
+ return false;
598
+ }
599
+ if (ibGib.rel8ns.past && ibGib.rel8ns.past.length > 0) {
600
+ return false;
601
+ }
602
+ if (ibGib.rel8ns.past && ibGib.rel8ns.past.length === 0) {
603
+ return true;
604
+ }
605
+ return false;
606
+ }
607
+ else {
608
+ throw new Error('loaded ibGib required (data).');
609
+ }
610
+ }
611
+ else {
612
+ throw new Error('only naive implemented right now.');
613
+ }
614
+ }
615
+ catch (error) {
616
+ console.error(`${lc} ${error.message}`);
617
+ throw error;
618
+ }
619
+ }
620
+ export function toDto({ ibGib, }) {
621
+ const lc = `[${toDto.name}]`;
622
+ if (!ibGib.ib) {
623
+ console.warn(`${lc} ibGib.ib is falsy. (W: e60e41c2a1fc48268379d88ce13cb77b)`);
624
+ }
625
+ if (!ibGib.gib) {
626
+ console.warn(`${lc} ibGib.gib is falsy. (W: fb3889cbf0684ae4ac51e48f28570377)`);
627
+ }
628
+ let dtoIbGib = { ib: (ibGib.ib || '').slice() };
629
+ if (ibGib.gib) {
630
+ dtoIbGib.gib = ibGib.gib.slice();
631
+ }
632
+ ;
633
+ if (ibGib.data) {
634
+ dtoIbGib.data = h.clone(ibGib.data);
635
+ }
636
+ if (ibGib.rel8ns) {
637
+ dtoIbGib.rel8ns = h.clone(ibGib.rel8ns);
638
+ }
639
+ return dtoIbGib;
640
+ }
641
+ //# sourceMappingURL=ibgib-helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibgib-helper.mjs","sourceRoot":"","sources":["../../../src/common/other/ibgib-helper.mts"],"names":[],"mappings":"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"}