@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,256 @@
1
+ import { CLASSNAME_REGEXP } from '@ibgib/helper-gib';
2
+ import { Ib } from '@ibgib/ts-gib';
3
+ import {
4
+ IbGib_V1, IbGibRel8ns_V1, Factory_V1 as factory, sha256v1,
5
+ } from '@ibgib/ts-gib/dist/V1/index.mjs';
6
+
7
+ import { GLOBAL_LOG_A_LOT } from '../core-constants.mjs';
8
+ import { WITNESS_ARG_METADATA_STRING, WITNESS_RESULT_METADATA_STRING } from './witness-constants.mjs';
9
+
10
+
11
+ const logalot = GLOBAL_LOG_A_LOT || false;
12
+
13
+ /**
14
+ * Builds the ib for the witness arg ibgib.
15
+ *
16
+ * @returns ib that we'll use when creating a witness arg.
17
+ */
18
+ export function getArgIb(ibMetadata: string | undefined): string {
19
+ const lc = `[${getArgIb.name}]`;
20
+ try {
21
+ const ib = ibMetadata ?
22
+ `${WITNESS_ARG_METADATA_STRING} ${ibMetadata}` :
23
+ WITNESS_ARG_METADATA_STRING;
24
+ if (logalot) { console.log(`${lc} ${ib}`); }
25
+ return ib;
26
+ } catch (error) {
27
+ console.error(`${lc} ${error.message}`);
28
+ throw error;
29
+ }
30
+ }
31
+
32
+ /**
33
+ * helper function that checks if an incoming `ib` or `ibGib.ib` indicates that
34
+ * it is an arg ibGib used with witnesses.
35
+ *
36
+ * ## notes
37
+ * * atow, this basically just checks to see if it starts with
38
+ * `WITNESS_ARG_METADATA_STRING` (`witness_arg`).
39
+ *
40
+ * @throws if neither `ib` nor `ibGib` are provided.
41
+ *
42
+ * @returns true if the ib/ibGib.ib indicates an arg ibgib, else false
43
+ *
44
+ * @see {@link argy_}
45
+ */
46
+ export function isArg({
47
+ ib,
48
+ ibGib,
49
+ }: {
50
+ ib?: Ib,
51
+ ibGib?: IbGib_V1,
52
+ }): boolean {
53
+ const lc = `[${isArg.name}]`;
54
+ try {
55
+ if (logalot) { console.log(`${lc} starting...`); }
56
+
57
+ if (!ib) {
58
+ if (ibGib) {
59
+ ib = ibGib.ib;
60
+ } else {
61
+ throw new Error(`either ib or ibGib required (E: c052a9d76df867626f9ba17141cdce22)`);
62
+ }
63
+ }
64
+
65
+ return ib.startsWith(WITNESS_ARG_METADATA_STRING);
66
+ } catch (error) {
67
+ console.error(`${lc} ${error.message}`);
68
+ throw error;
69
+ } finally {
70
+ if (logalot) { console.log(`${lc} complete.`); }
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Builds the ib for the witness result ibgib.
76
+ *
77
+ * @returns ib that we'll use when creating a witness result.
78
+ */
79
+ export function getResultIb(ibMetadata: string | undefined): string {
80
+ const lc = `[${getResultIb.name}]`;
81
+ try {
82
+ const ib = ibMetadata ?
83
+ `${WITNESS_RESULT_METADATA_STRING} ${ibMetadata}` :
84
+ WITNESS_RESULT_METADATA_STRING;
85
+ if (logalot) { console.log(`${lc} ${ib}`); }
86
+ return ib;
87
+ } catch (error) {
88
+ console.error(`${lc} ${error.message}`);
89
+ throw error;
90
+ }
91
+ }
92
+
93
+ /**
94
+ * helper function that checks if an incoming `ib` or `ibGib.ib` indicates that
95
+ * it is a result ibGib used with witnesses.
96
+ *
97
+ * ## notes
98
+ * * atow, this basically just checks to see if it starts with
99
+ * `WITNESS_ARG_METADATA_STRING` (`witness_arg`).
100
+ *
101
+ * @throws if neither `ib` nor `ibGib` are provided.
102
+ *
103
+ * @returns true if the ib/ibGib.ib indicates a result ibgib, else false
104
+ *
105
+ * @see {@link resulty_}
106
+ */
107
+ export function isResult({
108
+ ib,
109
+ ibGib,
110
+ }: {
111
+ ib?: Ib,
112
+ ibGib?: IbGib_V1,
113
+ }): boolean {
114
+ const lc = `[${isResult.name}]`;
115
+ try {
116
+ if (logalot) { console.log(`${lc} starting...`); }
117
+
118
+ if (!ib) {
119
+ if (ibGib) {
120
+ ib = ibGib.ib;
121
+ } else {
122
+ throw new Error(`either ib or ibGib required (E: 7d32a54825764d8ea72a8a38cac14224)`);
123
+ }
124
+ }
125
+
126
+ return ib.startsWith(WITNESS_RESULT_METADATA_STRING);
127
+ } catch (error) {
128
+ console.error(`${lc} ${error.message}`);
129
+ throw error;
130
+ } finally {
131
+ if (logalot) { console.log(`${lc} complete.`); }
132
+ }
133
+ }
134
+ /**
135
+ * This builds the arg ibGib for a witness function.
136
+ *
137
+ * By default, this is considered a one-off ibGib. As such,
138
+ * there is no dna and no uuid. The timestamp will be included, which
139
+ * adds some metadata (and makes for a most-often unique tjp). If there
140
+ * is something that needs to reference this result, it can use the
141
+ * the ibgib's address.
142
+ *
143
+ * @returns Result (wrapper) ibGib for a `witness` function.
144
+ */
145
+ export async function argy_<
146
+ TArgData,
147
+ TArgRel8ns extends IbGibRel8ns_V1,
148
+ TArgIbGib extends IbGib_V1<TArgData, TArgRel8ns
149
+ > = IbGib_V1<TArgData, TArgRel8ns>>({
150
+ argData,
151
+ ibMetadata,
152
+ noTimestamp,
153
+ }: {
154
+ argData: TArgData,
155
+ ibMetadata?: string,
156
+ noTimestamp?: boolean,
157
+ }): Promise<TArgIbGib> {
158
+ const lc = `[${argy_.name}]`;
159
+ try {
160
+ const resArgIbGib = await factory.firstGen<TArgData>({
161
+ ib: getArgIb(ibMetadata),
162
+ parentIbGib: factory.primitive({ ib: WITNESS_ARG_METADATA_STRING }),
163
+ data: argData,
164
+ dna: false,
165
+ noTimestamp,
166
+ });
167
+ if (resArgIbGib.newIbGib) {
168
+ const { newIbGib: resultIbGib } = resArgIbGib;
169
+
170
+ // clear out past, disregard any intermediate ibgibs.
171
+ resultIbGib.rel8ns!.past = [];
172
+
173
+ resultIbGib.gib = await sha256v1(resultIbGib);
174
+
175
+ return (resultIbGib as TArgIbGib);
176
+ } else {
177
+ throw new Error(`create ibGib failed`);
178
+ }
179
+ } catch (error) {
180
+ console.error(`${lc} ${error.message}`);
181
+ throw error;
182
+ }
183
+ }
184
+
185
+ /**
186
+ * This builds the result ibGib for a witness function.
187
+ *
188
+ * By default, the result is considered a one-off ibGib. As such,
189
+ * there is no dna and no uuid. The timestamp will be included, which
190
+ * adds some metadata (and makes for a most-often unique tjp). If there
191
+ * is something that needs to reference this result, it can use the
192
+ * the ibgib's address.
193
+ *
194
+ * @returns Result (wrapper) ibGib for a `witness` function.
195
+ */
196
+ export async function resulty_<TResultData, TResultIbGib extends IbGib_V1<TResultData> = IbGib_V1<TResultData>>({
197
+ resultData,
198
+ ibMetadata,
199
+ noTimestamp,
200
+ }: {
201
+ resultData: TResultData,
202
+ ibMetadata?: string,
203
+ noTimestamp?: boolean,
204
+ }): Promise<TResultIbGib> {
205
+ const lc = `[${resulty_.name}]`;
206
+ try {
207
+ const resResultIbGib = await factory.firstGen<TResultData>({
208
+ ib: getResultIb(ibMetadata),
209
+ parentIbGib: factory.primitive({ ib: WITNESS_RESULT_METADATA_STRING }),
210
+ data: resultData,
211
+ dna: false,
212
+ noTimestamp,
213
+ });
214
+ if (resResultIbGib?.newIbGib) {
215
+ const { newIbGib: resultIbGib } = resResultIbGib;
216
+
217
+ // clear out past, disregard any intermediate ibgibs.
218
+ resultIbGib.rel8ns!.past = [];
219
+
220
+ resultIbGib.gib = await sha256v1(resultIbGib);
221
+
222
+ return resultIbGib as TResultIbGib;
223
+ } else {
224
+ throw new Error(`create ibGib failed`);
225
+ }
226
+ } catch (error) {
227
+ console.error(`${lc} ${error.message}`);
228
+ throw error;
229
+ }
230
+ }
231
+
232
+ /**
233
+ * If valid, returns null.
234
+ */
235
+ export function validateWitnessClassname({
236
+ classname,
237
+ }: {
238
+ classname: string,
239
+ }): string | null {
240
+ const lc = `[${validateWitnessClassname.name}]`;
241
+ try {
242
+ if (logalot) { console.log(`${lc} starting...`); }
243
+ if (!classname) { throw new Error(`classname required (E: b1c7b455d58fdd8d77acd15bdf017722)`); }
244
+
245
+ if (!classname.match(CLASSNAME_REGEXP)) {
246
+ return `classname (${classname}) must match regex ${CLASSNAME_REGEXP}`;
247
+ }
248
+
249
+ return null;
250
+ } catch (error) {
251
+ console.error(`${lc} ${error.message}`);
252
+ throw error;
253
+ } finally {
254
+ if (logalot) { console.log(`${lc} complete.`); }
255
+ }
256
+ }
@@ -0,0 +1,249 @@
1
+ import { IbGibRel8ns_V1, IbGib_V1 } from '@ibgib/ts-gib/dist/V1/index.mjs';
2
+ import { IbGib, IbGibWithDataAndRel8ns, IbGibRel8ns, IbGibAddr } from '@ibgib/ts-gib';
3
+ import { ErrorIbGib_V1 } from '../common/error/error-types.mjs';
4
+
5
+ /**
6
+ * A witness is a lot like an ibGib analog for a function.
7
+ * Now remember in FP, a function takes a single arg, and
8
+ * multiple args are actually reified single-arg functions
9
+ * that are curried.
10
+ *
11
+ * So an ibGib witness is an ibGib that has a single function: `witness`.
12
+ * What can it witness? Another ibGib. What does it return? An ibGib.
13
+ *
14
+ * ## notes
15
+ *
16
+ * I'm not smart enough to descend this from just IbGib, so I'm doing
17
+ * IbGibwithDataAndRel8ns. This is more of a convenience anyway.
18
+ */
19
+ export interface Witness<
20
+ TIbGibIn extends IbGib,
21
+ TIbGibOut extends IbGib,
22
+ TData = any,
23
+ TRel8ns extends IbGibRel8ns = IbGibRel8ns,
24
+ >
25
+ extends IbGibWithDataAndRel8ns<TData, TRel8ns> {
26
+ witness(arg: TIbGibIn): Promise<TIbGibOut | undefined>;
27
+ }
28
+
29
+ /**
30
+ * Data that corresponds to all witnesses being implemented in V1.
31
+ *
32
+ * This should be expanded only sparingly, and all properties should be optional.
33
+ */
34
+ export interface WitnessData_V1 {
35
+ /**
36
+ * @optional string for tracking version control of witness.
37
+ */
38
+ version?: string;
39
+ /**
40
+ * @optional Name for the witness.
41
+ */
42
+ name?: string;
43
+ /**
44
+ * @optional classname of the witness.
45
+ */
46
+ classname?: string;
47
+ /**
48
+ * @optional description of the witness.
49
+ */
50
+ description?: string;
51
+ /**
52
+ * @optional
53
+ *
54
+ * If true, then this will allow primitive args when validating incoming
55
+ * args.
56
+ *
57
+ * so if you want a witness to be able to witness, e.g., "16816^gib", then
58
+ * set this to truthy. Otherwise, this will flag this as a validation error.
59
+ */
60
+ allowPrimitiveArgs?: boolean;
61
+ /**
62
+ * If true, any calls to `witness` should have the opt and result ibGibs
63
+ * persisted, regardless of what the actual opt/result is. This is
64
+ * ultimately up to the witness itself though.
65
+ *
66
+ * This is like providing a persistent logging feature for the witness
67
+ * itself, as opposed to ephemeral logging via {@link trace}.
68
+ *
69
+ * ## implementation
70
+ *
71
+ * In the case of V1, WitnessBase_V1<...> has an empty function
72
+ */
73
+ persistOptsAndResultIbGibs?: boolean;
74
+ /**
75
+ * @optional
76
+ *
77
+ * "Should" be a unique identifier for the witness.
78
+ */
79
+ uuid?: string;
80
+ /**
81
+ * @optional configuration for `witness` call.
82
+ *
83
+ * If true, then this space will not catch an error in `witnessImpl`
84
+ * function.
85
+ *
86
+ * ## notes
87
+ *
88
+ * Descendants of Witness who don't override the base `witness` function
89
+ * (but rather override `witnessImpl` as expected) don't need to check
90
+ * for this explicitly, since it is referenced in the base `witness`
91
+ * function implementation.
92
+ */
93
+ catchAllErrors?: boolean;
94
+ /**
95
+ * @optional arg for verbose logging.
96
+ *
97
+ * Space implementations can check this value directly, or if
98
+ * they descend from `WitnessBase`, then there is a property
99
+ * that safely navigates this value.
100
+ */
101
+ trace?: boolean;
102
+ }
103
+
104
+ /**
105
+ * marker interface atm
106
+ */
107
+ export interface WitnessRel8ns_V1 extends IbGibRel8ns_V1 {
108
+
109
+ }
110
+
111
+ /**
112
+ * This interface simply types our data and rel8ns to V1 style.
113
+ */
114
+ export interface Witness_V1<
115
+ TDataIn extends any,
116
+ TRel8nsIn extends IbGibRel8ns_V1,
117
+ TIbGibIn extends IbGib_V1<TDataIn, TRel8nsIn>,
118
+ TDataOut extends any,
119
+ TRel8nsOut extends IbGibRel8ns_V1,
120
+ TIbGibOut extends IbGib_V1<TDataOut, TRel8nsOut> | ErrorIbGib_V1,
121
+ TData extends WitnessData_V1 = any,
122
+ TRel8ns extends WitnessRel8ns_V1 = WitnessRel8ns_V1,
123
+ >
124
+ extends Witness<TIbGibIn, TIbGibOut, TData, TRel8ns> {
125
+ }
126
+
127
+
128
+ /**
129
+ * Base information for cmd with optional modifiers to interact with a witness.
130
+ *
131
+ * Note that it is not necessary for a witness to listen to these types of
132
+ * ibgibs, this is just convenient plumbing for those who wish to listen to
133
+ * command-style ibgibs.
134
+ */
135
+ export interface WitnessCmdData<TCmds, TCmdModifiers> {
136
+ /**
137
+ * Not really in use atm, but will use in the future.
138
+ */
139
+ version?: string;
140
+ /**
141
+ * The `cmd` property is the name of the command, analogous to a function
142
+ * name.
143
+ */
144
+ cmd: TCmds | string;
145
+ /**
146
+ * Optional modifier flag(s) to the command.
147
+ *
148
+ * ## notes
149
+ *
150
+ * An implementing class can always use/extend these or extend the interface
151
+ * of the options data.
152
+ */
153
+ cmdModifiers?: (TCmdModifiers | string)[];
154
+ /**
155
+ * Addrs of ibgibs to get/delete
156
+ */
157
+ ibGibAddrs?: IbGibAddr[];
158
+ }
159
+
160
+ export interface WitnessCmdRel8ns extends IbGibRel8ns_V1 {
161
+ }
162
+
163
+ export interface WitnessCmdIbGib<
164
+ TIbGib extends IbGib,
165
+ TCmds, TCmdModifiers,
166
+ TCmdData extends WitnessCmdData<TCmds, TCmdModifiers>,
167
+ TCmdRel8ns extends WitnessCmdRel8ns,
168
+ > extends IbGib_V1<TCmdData, TCmdRel8ns> {
169
+ /**
170
+ * When putting ibGibs, we don't want to persist the entire graph in the
171
+ * data object. So these ibGibs live on the ibGib arg object itself.
172
+ *
173
+ * If only ibGibs are passed in, and not their corresponding ibGibAddrs in
174
+ * the `TOptsData`, then you can't confirm cryptographically if the ibGibs
175
+ * are legit. But if you include their corresponding ibGibAddrs in that
176
+ * data, then the space can confirm that the ibGibs have not been altered
177
+ * from the expected cryptographic audit trail.
178
+ *
179
+ * This doesn't mean that the ibGibs are kosher completely, but at least
180
+ * there is internal agreement and an audit trail.
181
+ *
182
+ * ## example
183
+ *
184
+ * For an example, check out sync space saga
185
+ */
186
+ ibGibs?: TIbGib[];
187
+ }
188
+
189
+
190
+ export interface WitnessResultData {
191
+ /**
192
+ * The address of the options ibGib that corresponds this space result.
193
+ *
194
+ * So if you called `space.witness(opts)` which produced this result, this is
195
+ * `getIbGibAddr({ibGib: opts})`.
196
+ *
197
+ * Perhaps I should have this as a rel8n on the actual result ibGib instead of here
198
+ * in the data.
199
+ */
200
+ optsAddr: IbGibAddr;
201
+ /**
202
+ * true if the operation executed successfully.
203
+ *
204
+ * If this is a `canGet` or `canPut` `cmd`, this does NOT indicate if you
205
+ * can or can't. For that, see the `can` property of this interface.
206
+ */
207
+ success?: boolean;
208
+ /**
209
+ * Any error messages go here. If this is populated, then the `success`
210
+ * *should* be false (but obvious the interface can't guarantee implementation).
211
+ */
212
+ errors?: string[];
213
+ /**
214
+ * Any warnings that don't cause this operation to explicitly fail, i.e. `errors`
215
+ * is falsy/empty.
216
+ */
217
+ warnings?: string[];
218
+ /**
219
+ * If getting address(es), they will be here.
220
+ */
221
+ addrs?: IbGibAddr[];
222
+ /**
223
+ * Addresses for ibGibs which had errors.
224
+ */
225
+ addrsErrored?: IbGibAddr[];
226
+ }
227
+
228
+ export interface WitnessResultRel8ns extends IbGibRel8ns_V1 { }
229
+
230
+ /**
231
+ * Optional witness result ibgib interface.
232
+ *
233
+ * You do NOT have to use this class when returning results for witness ibgibs.
234
+ * This is provided as convenience plumbing for when you do want a standard-ish
235
+ * special result ibgib.
236
+ */
237
+ export interface WitnessResultIbGib<
238
+ TIbGib extends IbGib,
239
+ TResultData extends WitnessResultData,
240
+ TResultRel8ns extends WitnessResultRel8ns
241
+ >
242
+ extends IbGibWithDataAndRel8ns<TResultData, TResultRel8ns> {
243
+
244
+ /**
245
+ * When expecting ibGibs back, we don't want to persist the graph. So this property of
246
+ * ibGibs lives on the ibGib result object, but not in the `data` property.
247
+ */
248
+ ibGibs?: TIbGib[];
249
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "declaration": true, /* Generates corresponding '.d.ts' file. */
5
+ "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
6
+ "sourceMap": true, /* Generates corresponding '.map' file. */
7
+ "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
8
+ "composite": true, /* Enable project compilation */
9
+ "outDir": "./dist", /* Redirect output structure to the directory. */
10
+ "module": "ESNext", /* https://www.typescriptlang.org/docs/handbook/esm-node.html */
11
+ },
12
+ "exclude": [
13
+ "**/*.spec.mts"
14
+ ]
15
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist", /* Redirect output structure to the directory. */
5
+ "module": "ESNext", /* https://www.typescriptlang.org/docs/handbook/esm-node.html */
6
+ },
7
+ "exclude": [
8
+ // override inherited exclude of spec files
9
+ ]
10
+ }