@ibgib/web-gib 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/.ibgibignore +30 -0
  2. package/.vscode/ibgib-snippets.code-snippets +309 -0
  3. package/.vscode/launch.json +25 -0
  4. package/.vscode/settings.json +68 -0
  5. package/.vscode/tasks.json +38 -0
  6. package/CHANGELOG.md +427 -0
  7. package/README.md +66 -0
  8. package/dist/agent-texts/common-agent-texts.d.mts +14 -0
  9. package/dist/agent-texts/common-agent-texts.d.mts.map +1 -0
  10. package/dist/agent-texts/common-agent-texts.mjs +51 -0
  11. package/dist/agent-texts/common-agent-texts.mjs.map +1 -0
  12. package/dist/agent-texts/primary-agent-texts.d.mts +16 -0
  13. package/dist/agent-texts/primary-agent-texts.d.mts.map +1 -0
  14. package/dist/agent-texts/primary-agent-texts.mjs +27 -0
  15. package/dist/agent-texts/primary-agent-texts.mjs.map +1 -0
  16. package/dist/agent-texts/project-agent-texts.d.mts +8 -0
  17. package/dist/agent-texts/project-agent-texts.d.mts.map +1 -0
  18. package/dist/agent-texts/project-agent-texts.mjs +29 -0
  19. package/dist/agent-texts/project-agent-texts.mjs.map +1 -0
  20. package/dist/agent-texts/project-child-text-agent-texts.d.mts +5 -0
  21. package/dist/agent-texts/project-child-text-agent-texts.d.mts.map +1 -0
  22. package/dist/agent-texts/project-child-text-agent-texts.mjs +26 -0
  23. package/dist/agent-texts/project-child-text-agent-texts.mjs.map +1 -0
  24. package/dist/agent-texts/projects-agent-texts.d.mts +4 -0
  25. package/dist/agent-texts/projects-agent-texts.d.mts.map +1 -0
  26. package/dist/agent-texts/projects-agent-texts.mjs +15 -0
  27. package/dist/agent-texts/projects-agent-texts.mjs.map +1 -0
  28. package/dist/agent-texts/raw-agent-texts.d.mts +4 -0
  29. package/dist/agent-texts/raw-agent-texts.d.mts.map +1 -0
  30. package/dist/agent-texts/raw-agent-texts.mjs +17 -0
  31. package/dist/agent-texts/raw-agent-texts.mjs.map +1 -0
  32. package/dist/agent-texts/text-editor-agent-texts.d.mts +6 -0
  33. package/dist/agent-texts/text-editor-agent-texts.d.mts.map +1 -0
  34. package/dist/agent-texts/text-editor-agent-texts.mjs +19 -0
  35. package/dist/agent-texts/text-editor-agent-texts.mjs.map +1 -0
  36. package/dist/api/api-constants.d.mts +9 -0
  37. package/dist/api/api-constants.d.mts.map +1 -0
  38. package/dist/api/api-constants.mjs +9 -0
  39. package/dist/api/api-constants.mjs.map +1 -0
  40. package/dist/api/api-index.d.mts +10 -0
  41. package/dist/api/api-index.d.mts.map +1 -0
  42. package/dist/api/api-index.mjs +121 -0
  43. package/dist/api/api-index.mjs.map +1 -0
  44. package/dist/api/api-types.d.mts +36 -0
  45. package/dist/api/api-types.d.mts.map +1 -0
  46. package/dist/api/api-types.mjs +2 -0
  47. package/dist/api/api-types.mjs.map +1 -0
  48. package/dist/api/commands/chat/chat-index.d.mts +3 -0
  49. package/dist/api/commands/chat/chat-index.d.mts.map +1 -0
  50. package/dist/api/commands/chat/chat-index.mjs +9 -0
  51. package/dist/api/commands/chat/chat-index.mjs.map +1 -0
  52. package/dist/api/commands/chat/get-context-info.d.mts +71 -0
  53. package/dist/api/commands/chat/get-context-info.d.mts.map +1 -0
  54. package/dist/api/commands/chat/get-context-info.mjs +130 -0
  55. package/dist/api/commands/chat/get-context-info.mjs.map +1 -0
  56. package/dist/api/commands/chat/hello-world.d.mts +63 -0
  57. package/dist/api/commands/chat/hello-world.d.mts.map +1 -0
  58. package/dist/api/commands/chat/hello-world.mjs +132 -0
  59. package/dist/api/commands/chat/hello-world.mjs.map +1 -0
  60. package/dist/api/commands/chat/tell-user.d.mts +57 -0
  61. package/dist/api/commands/chat/tell-user.d.mts.map +1 -0
  62. package/dist/api/commands/chat/tell-user.mjs +199 -0
  63. package/dist/api/commands/chat/tell-user.mjs.map +1 -0
  64. package/dist/api/commands/command-constants.d.mts +22 -0
  65. package/dist/api/commands/command-constants.d.mts.map +1 -0
  66. package/dist/api/commands/command-constants.mjs +17 -0
  67. package/dist/api/commands/command-constants.mjs.map +1 -0
  68. package/dist/api/commands/command-helpers.d.mts +47 -0
  69. package/dist/api/commands/command-helpers.d.mts.map +1 -0
  70. package/dist/api/commands/command-helpers.mjs +76 -0
  71. package/dist/api/commands/command-helpers.mjs.map +1 -0
  72. package/dist/api/commands/command-service-v1.d.mts +28 -0
  73. package/dist/api/commands/command-service-v1.d.mts.map +1 -0
  74. package/dist/api/commands/command-service-v1.mjs +122 -0
  75. package/dist/api/commands/command-service-v1.mjs.map +1 -0
  76. package/dist/api/commands/command-service.respec.d.mts +7 -0
  77. package/dist/api/commands/command-service.respec.d.mts.map +1 -0
  78. package/dist/api/commands/command-service.respec.mjs +66 -0
  79. package/dist/api/commands/command-service.respec.mjs.map +1 -0
  80. package/dist/api/commands/command-types.d.mts +48 -0
  81. package/dist/api/commands/command-types.d.mts.map +1 -0
  82. package/dist/api/commands/command-types.mjs +12 -0
  83. package/dist/api/commands/command-types.mjs.map +1 -0
  84. package/dist/api/commands/ibgib/get-ibgibs.d.mts +94 -0
  85. package/dist/api/commands/ibgib/get-ibgibs.d.mts.map +1 -0
  86. package/dist/api/commands/ibgib/get-ibgibs.mjs +219 -0
  87. package/dist/api/commands/ibgib/get-ibgibs.mjs.map +1 -0
  88. package/dist/api/commands/ibgib/ibgib-index.d.mts +3 -0
  89. package/dist/api/commands/ibgib/ibgib-index.d.mts.map +1 -0
  90. package/dist/api/commands/ibgib/ibgib-index.mjs +7 -0
  91. package/dist/api/commands/ibgib/ibgib-index.mjs.map +1 -0
  92. package/dist/api/commands/ibgib/mut8-ibgib.d.mts +135 -0
  93. package/dist/api/commands/ibgib/mut8-ibgib.d.mts.map +1 -0
  94. package/dist/api/commands/ibgib/mut8-ibgib.mjs +318 -0
  95. package/dist/api/commands/ibgib/mut8-ibgib.mjs.map +1 -0
  96. package/dist/api/commands/templates/api-function-info.template.d.mts +73 -0
  97. package/dist/api/commands/templates/api-function-info.template.d.mts.map +1 -0
  98. package/dist/api/commands/templates/api-function-info.template.mjs +161 -0
  99. package/dist/api/commands/templates/api-function-info.template.mjs.map +1 -0
  100. package/dist/api/commands/text/text-edit.d.mts +54 -0
  101. package/dist/api/commands/text/text-edit.d.mts.map +1 -0
  102. package/dist/api/commands/text/text-edit.mjs +170 -0
  103. package/dist/api/commands/text/text-edit.mjs.map +1 -0
  104. package/dist/api/commands/text/text-index.d.mts +3 -0
  105. package/dist/api/commands/text/text-index.d.mts.map +1 -0
  106. package/dist/api/commands/text/text-index.mjs +5 -0
  107. package/dist/api/commands/text/text-index.mjs.map +1 -0
  108. package/dist/api/commands/ui/ui-index.d.mts +3 -0
  109. package/dist/api/commands/ui/ui-index.d.mts.map +1 -0
  110. package/dist/api/commands/ui/ui-index.mjs +5 -0
  111. package/dist/api/commands/ui/ui-index.mjs.map +1 -0
  112. package/dist/api/commands/ui/update-css-variables.d.mts +48 -0
  113. package/dist/api/commands/ui/update-css-variables.d.mts.map +1 -0
  114. package/dist/api/commands/ui/update-css-variables.mjs +145 -0
  115. package/dist/api/commands/ui/update-css-variables.mjs.map +1 -0
  116. package/dist/api/function-infos.web.d.mts +15 -0
  117. package/dist/api/function-infos.web.d.mts.map +1 -0
  118. package/dist/api/function-infos.web.mjs +63 -0
  119. package/dist/api/function-infos.web.mjs.map +1 -0
  120. package/dist/assumptions.respec.d.mts +2 -0
  121. package/dist/assumptions.respec.d.mts.map +1 -0
  122. package/dist/assumptions.respec.mjs +41 -0
  123. package/dist/assumptions.respec.mjs.map +1 -0
  124. package/dist/common/project/project-constants.d.mts +38 -0
  125. package/dist/common/project/project-constants.d.mts.map +1 -0
  126. package/dist/common/project/project-constants.mjs +71 -0
  127. package/dist/common/project/project-constants.mjs.map +1 -0
  128. package/dist/common/project/project-helper.d.mts +127 -0
  129. package/dist/common/project/project-helper.d.mts.map +1 -0
  130. package/dist/common/project/project-helper.mjs +683 -0
  131. package/dist/common/project/project-helper.mjs.map +1 -0
  132. package/dist/common/project/project-types.d.mts +91 -0
  133. package/dist/common/project/project-types.d.mts.map +1 -0
  134. package/dist/common/project/project-types.mjs +31 -0
  135. package/dist/common/project/project-types.mjs.map +1 -0
  136. package/dist/common/prompt-functions.web.d.mts +90 -0
  137. package/dist/common/prompt-functions.web.d.mts.map +1 -0
  138. package/dist/common/prompt-functions.web.mjs +426 -0
  139. package/dist/common/prompt-functions.web.mjs.map +1 -0
  140. package/dist/common/settings/settings-constants.d.mts +33 -0
  141. package/dist/common/settings/settings-constants.d.mts.map +1 -0
  142. package/dist/common/settings/settings-constants.mjs +54 -0
  143. package/dist/common/settings/settings-constants.mjs.map +1 -0
  144. package/dist/common/settings/settings-helpers.d.mts +59 -0
  145. package/dist/common/settings/settings-helpers.d.mts.map +1 -0
  146. package/dist/common/settings/settings-helpers.mjs +253 -0
  147. package/dist/common/settings/settings-helpers.mjs.map +1 -0
  148. package/dist/common/settings/settings-types.d.mts +118 -0
  149. package/dist/common/settings/settings-types.d.mts.map +1 -0
  150. package/dist/common/settings/settings-types.mjs +13 -0
  151. package/dist/common/settings/settings-types.mjs.map +1 -0
  152. package/dist/constants.d.mts +34 -0
  153. package/dist/constants.d.mts.map +1 -0
  154. package/dist/constants.mjs +35 -0
  155. package/dist/constants.mjs.map +1 -0
  156. package/dist/foo.d.mts +2 -0
  157. package/dist/foo.d.mts.map +1 -0
  158. package/dist/foo.mjs +19 -0
  159. package/dist/foo.mjs.map +1 -0
  160. package/dist/helpers.d.mts +137 -0
  161. package/dist/helpers.d.mts.map +1 -0
  162. package/dist/helpers.mjs +514 -0
  163. package/dist/helpers.mjs.map +1 -0
  164. package/dist/helpers.web.d.mts +324 -0
  165. package/dist/helpers.web.d.mts.map +1 -0
  166. package/dist/helpers.web.mjs +1133 -0
  167. package/dist/helpers.web.mjs.map +1 -0
  168. package/dist/helpers.web.respec.d.mts +2 -0
  169. package/dist/helpers.web.respec.d.mts.map +1 -0
  170. package/dist/helpers.web.respec.mjs +12 -0
  171. package/dist/helpers.web.respec.mjs.map +1 -0
  172. package/dist/index.d.mts +2 -0
  173. package/dist/index.d.mts.map +1 -0
  174. package/dist/index.mjs +3 -0
  175. package/dist/index.mjs.map +1 -0
  176. package/dist/respec-gib.node.d.mts +2 -0
  177. package/dist/respec-gib.node.d.mts.map +1 -0
  178. package/dist/respec-gib.node.mjs +211 -0
  179. package/dist/respec-gib.node.mjs.map +1 -0
  180. package/dist/spec-helper.node.respec.d.mts +13 -0
  181. package/dist/spec-helper.node.respec.d.mts.map +1 -0
  182. package/dist/spec-helper.node.respec.mjs +50 -0
  183. package/dist/spec-helper.node.respec.mjs.map +1 -0
  184. package/dist/storage/storage-helpers.web.d.mts +108 -0
  185. package/dist/storage/storage-helpers.web.d.mts.map +1 -0
  186. package/dist/storage/storage-helpers.web.mjs +757 -0
  187. package/dist/storage/storage-helpers.web.mjs.map +1 -0
  188. package/dist/storage/storage-types.web.d.mts +30 -0
  189. package/dist/storage/storage-types.web.d.mts.map +1 -0
  190. package/dist/storage/storage-types.web.mjs +2 -0
  191. package/dist/storage/storage-types.web.mjs.map +1 -0
  192. package/dist/types.web.d.mts +42 -0
  193. package/dist/types.web.d.mts.map +1 -0
  194. package/dist/types.web.mjs +2 -0
  195. package/dist/types.web.mjs.map +1 -0
  196. package/dist/ui/component/component-types.d.mts +225 -0
  197. package/dist/ui/component/component-types.d.mts.map +1 -0
  198. package/dist/ui/component/component-types.mjs +2 -0
  199. package/dist/ui/component/component-types.mjs.map +1 -0
  200. package/dist/ui/component/ibgib-component-service.d.mts +70 -0
  201. package/dist/ui/component/ibgib-component-service.d.mts.map +1 -0
  202. package/dist/ui/component/ibgib-component-service.mjs +201 -0
  203. package/dist/ui/component/ibgib-component-service.mjs.map +1 -0
  204. package/dist/ui/component/ibgib-dynamic-component-bases.d.mts +338 -0
  205. package/dist/ui/component/ibgib-dynamic-component-bases.d.mts.map +1 -0
  206. package/dist/ui/component/ibgib-dynamic-component-bases.mjs +1304 -0
  207. package/dist/ui/component/ibgib-dynamic-component-bases.mjs.map +1 -0
  208. package/dist/ui/ui-constants.d.mts +12 -0
  209. package/dist/ui/ui-constants.d.mts.map +1 -0
  210. package/dist/ui/ui-constants.mjs +93 -0
  211. package/dist/ui/ui-constants.mjs.map +1 -0
  212. package/dist/ui/ui-helpers.d.mts +42 -0
  213. package/dist/ui/ui-helpers.d.mts.map +1 -0
  214. package/dist/ui/ui-helpers.mjs +198 -0
  215. package/dist/ui/ui-helpers.mjs.map +1 -0
  216. package/dist/ui/ui-types.d.mts +13 -0
  217. package/dist/ui/ui-types.d.mts.map +1 -0
  218. package/dist/ui/ui-types.mjs +2 -0
  219. package/dist/ui/ui-types.mjs.map +1 -0
  220. package/dist/witness/agent/agent-constants.d.mts +97 -0
  221. package/dist/witness/agent/agent-constants.d.mts.map +1 -0
  222. package/dist/witness/agent/agent-constants.mjs +98 -0
  223. package/dist/witness/agent/agent-constants.mjs.map +1 -0
  224. package/dist/witness/agent/agent-helpers.d.mts +106 -0
  225. package/dist/witness/agent/agent-helpers.d.mts.map +1 -0
  226. package/dist/witness/agent/agent-helpers.mjs +601 -0
  227. package/dist/witness/agent/agent-helpers.mjs.map +1 -0
  228. package/dist/witness/agent/agent-one-file.app.d.mts +2 -0
  229. package/dist/witness/agent/agent-one-file.app.d.mts.map +1 -0
  230. package/dist/witness/agent/agent-one-file.app.mjs +8 -0
  231. package/dist/witness/agent/agent-one-file.app.mjs.map +1 -0
  232. package/dist/witness/agent/agent-one-file.d.mts +478 -0
  233. package/dist/witness/agent/agent-one-file.d.mts.map +1 -0
  234. package/dist/witness/agent/agent-one-file.mjs +1462 -0
  235. package/dist/witness/agent/agent-one-file.mjs.map +1 -0
  236. package/dist/witness/agent/agent-types.d.mts +83 -0
  237. package/dist/witness/agent/agent-types.d.mts.map +1 -0
  238. package/dist/witness/agent/agent-types.mjs +2 -0
  239. package/dist/witness/agent/agent-types.mjs.map +1 -0
  240. package/dist/witness/agent/agents-service-v1.d.mts +99 -0
  241. package/dist/witness/agent/agents-service-v1.d.mts.map +1 -0
  242. package/dist/witness/agent/agents-service-v1.mjs +453 -0
  243. package/dist/witness/agent/agents-service-v1.mjs.map +1 -0
  244. package/dist/witness/agent/function-info/function-info-one-file.d.mts +192 -0
  245. package/dist/witness/agent/function-info/function-info-one-file.d.mts.map +1 -0
  246. package/dist/witness/agent/function-info/function-info-one-file.mjs +192 -0
  247. package/dist/witness/agent/function-info/function-info-one-file.mjs.map +1 -0
  248. package/dist/witness/agent/gemini/agent-witness-gemini-v1.d.mts +51 -0
  249. package/dist/witness/agent/gemini/agent-witness-gemini-v1.d.mts.map +1 -0
  250. package/dist/witness/agent/gemini/agent-witness-gemini-v1.mjs +928 -0
  251. package/dist/witness/agent/gemini/agent-witness-gemini-v1.mjs.map +1 -0
  252. package/dist/witness/agent/gemini/gemini-agent-factory.d.mts +27 -0
  253. package/dist/witness/agent/gemini/gemini-agent-factory.d.mts.map +1 -0
  254. package/dist/witness/agent/gemini/gemini-agent-factory.mjs +144 -0
  255. package/dist/witness/agent/gemini/gemini-agent-factory.mjs.map +1 -0
  256. package/dist/witness/agent/gemini/gemini-constants.d.mts +36 -0
  257. package/dist/witness/agent/gemini/gemini-constants.d.mts.map +1 -0
  258. package/dist/witness/agent/gemini/gemini-constants.mjs +47 -0
  259. package/dist/witness/agent/gemini/gemini-constants.mjs.map +1 -0
  260. package/dist/witness/agent/gemini/gemini-helpers.d.mts +58 -0
  261. package/dist/witness/agent/gemini/gemini-helpers.d.mts.map +1 -0
  262. package/dist/witness/agent/gemini/gemini-helpers.mjs +210 -0
  263. package/dist/witness/agent/gemini/gemini-helpers.mjs.map +1 -0
  264. package/dist/witness/agent/gemini/gemini-types.d.mts +82 -0
  265. package/dist/witness/agent/gemini/gemini-types.d.mts.map +1 -0
  266. package/dist/witness/agent/gemini/gemini-types.mjs +3 -0
  267. package/dist/witness/agent/gemini/gemini-types.mjs.map +1 -0
  268. package/dist/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.d.mts +136 -0
  269. package/dist/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.d.mts.map +1 -0
  270. package/dist/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.mjs +334 -0
  271. package/dist/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.mjs.map +1 -0
  272. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.d.mts +35 -0
  273. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.d.mts.map +1 -0
  274. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.mjs +267 -0
  275. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.mjs.map +1 -0
  276. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace.d.mts +134 -0
  277. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace.d.mts.map +1 -0
  278. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace.mjs +389 -0
  279. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace.mjs.map +1 -0
  280. package/dist/witness/space/web-filesystem-space/web-filesystem-space-constants.d.mts +2 -0
  281. package/dist/witness/space/web-filesystem-space/web-filesystem-space-constants.d.mts.map +1 -0
  282. package/dist/witness/space/web-filesystem-space/web-filesystem-space-constants.mjs +2 -0
  283. package/dist/witness/space/web-filesystem-space/web-filesystem-space-constants.mjs.map +1 -0
  284. package/dist/witness/space/web-filesystem-space/web-filesystem-space-helper.d.mts +104 -0
  285. package/dist/witness/space/web-filesystem-space/web-filesystem-space-helper.d.mts.map +1 -0
  286. package/dist/witness/space/web-filesystem-space/web-filesystem-space-helper.mjs +457 -0
  287. package/dist/witness/space/web-filesystem-space/web-filesystem-space-helper.mjs.map +1 -0
  288. package/dist/witness/space/web-filesystem-space/web-filesystem-space-types.d.mts +93 -0
  289. package/dist/witness/space/web-filesystem-space/web-filesystem-space-types.d.mts.map +1 -0
  290. package/dist/witness/space/web-filesystem-space/web-filesystem-space-types.mjs +98 -0
  291. package/dist/witness/space/web-filesystem-space/web-filesystem-space-types.mjs.map +1 -0
  292. package/dist/witness/space/web-filesystem-space/web-filesystem-space-v1.d.mts +73 -0
  293. package/dist/witness/space/web-filesystem-space/web-filesystem-space-v1.d.mts.map +1 -0
  294. package/dist/witness/space/web-filesystem-space/web-filesystem-space-v1.mjs +650 -0
  295. package/dist/witness/space/web-filesystem-space/web-filesystem-space-v1.mjs.map +1 -0
  296. package/generate-version-file.js +29 -0
  297. package/package.json +60 -0
  298. package/src/agent-texts/common-agent-texts.mts +61 -0
  299. package/src/agent-texts/primary-agent-texts.mts +32 -0
  300. package/src/agent-texts/project-agent-texts.mts +29 -0
  301. package/src/agent-texts/project-child-text-agent-texts.mts +30 -0
  302. package/src/agent-texts/projects-agent-texts.mts +17 -0
  303. package/src/agent-texts/raw-agent-texts.mts +18 -0
  304. package/src/agent-texts/text-editor-agent-texts.mts +20 -0
  305. package/src/api/api-constants.mts +8 -0
  306. package/src/api/api-index.mts +110 -0
  307. package/src/api/api-types.mts +36 -0
  308. package/src/api/commands/chat/chat-index.mts +10 -0
  309. package/src/api/commands/chat/get-context-info.mts +196 -0
  310. package/src/api/commands/chat/hello-world.mts +183 -0
  311. package/src/api/commands/chat/tell-user.mts +241 -0
  312. package/src/api/commands/command-constants.mts +17 -0
  313. package/src/api/commands/command-helpers.mts +105 -0
  314. package/src/api/commands/command-service-v1.mts +136 -0
  315. package/src/api/commands/command-service.respec.mts +72 -0
  316. package/src/api/commands/command-types.mts +71 -0
  317. package/src/api/commands/ibgib/get-ibgibs.mts +269 -0
  318. package/src/api/commands/ibgib/ibgib-index.mts +8 -0
  319. package/src/api/commands/ibgib/mut8-ibgib.mts +418 -0
  320. package/src/api/commands/templates/api-function-info.template.mts +212 -0
  321. package/src/api/commands/text/text-edit.mts +217 -0
  322. package/src/api/commands/text/text-index.mts +6 -0
  323. package/src/api/commands/ui/ui-index.mts +6 -0
  324. package/src/api/commands/ui/update-css-variables.mts +187 -0
  325. package/src/api/function-infos.web.mts +66 -0
  326. package/src/assets/fullscreen-dialog.html +18 -0
  327. package/src/assumptions.respec.mts +51 -0
  328. package/src/common/project/project-constants.mts +83 -0
  329. package/src/common/project/project-helper.mts +730 -0
  330. package/src/common/project/project-types.mts +121 -0
  331. package/src/common/prompt-functions.web.mts +447 -0
  332. package/src/common/settings/settings-constants.mts +72 -0
  333. package/src/common/settings/settings-helpers.mts +280 -0
  334. package/src/common/settings/settings-types.mts +137 -0
  335. package/src/constants.mts +39 -0
  336. package/src/foo.mts +13 -0
  337. package/src/helpers.mts +574 -0
  338. package/src/helpers.web.mts +1277 -0
  339. package/src/helpers.web.respec.mts +16 -0
  340. package/src/index.mts +3 -0
  341. package/src/respec-gib.node.mts +199 -0
  342. package/src/spec-helper.node.respec.mts +50 -0
  343. package/src/storage/storage-helpers.web.mts +728 -0
  344. package/src/storage/storage-types.web.mts +29 -0
  345. package/src/types.web.mts +42 -0
  346. package/src/ui/component/component-types.mts +241 -0
  347. package/src/ui/component/ibgib-component-service.mts +201 -0
  348. package/src/ui/component/ibgib-dynamic-component-bases.mts +1369 -0
  349. package/src/ui/ui-constants.mts +101 -0
  350. package/src/ui/ui-helpers.mts +222 -0
  351. package/src/ui/ui-types.mts +11 -0
  352. package/src/witness/agent/agent-constants.mts +122 -0
  353. package/src/witness/agent/agent-helpers.mts +681 -0
  354. package/src/witness/agent/agent-one-file.app.mts +8 -0
  355. package/src/witness/agent/agent-one-file.mts +1665 -0
  356. package/src/witness/agent/agent-types.mts +92 -0
  357. package/src/witness/agent/agents-service-v1.mts +482 -0
  358. package/src/witness/agent/function-info/function-info-one-file.mts +362 -0
  359. package/src/witness/agent/gemini/agent-witness-gemini-v1.mts +910 -0
  360. package/src/witness/agent/gemini/gemini-agent-factory.mts +135 -0
  361. package/src/witness/agent/gemini/gemini-constants.mts +79 -0
  362. package/src/witness/agent/gemini/gemini-helpers.mts +216 -0
  363. package/src/witness/agent/gemini/gemini-types.mts +88 -0
  364. package/src/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.mts +321 -0
  365. package/src/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.mts +290 -0
  366. package/src/witness/space/metaspace/metaspace-webspace/metaspace-webspace.mts +407 -0
  367. package/src/witness/space/web-filesystem-space/web-filesystem-space-constants.mts +1 -0
  368. package/src/witness/space/web-filesystem-space/web-filesystem-space-helper.mts +491 -0
  369. package/src/witness/space/web-filesystem-space/web-filesystem-space-types.mts +172 -0
  370. package/src/witness/space/web-filesystem-space/web-filesystem-space-v1.mts +670 -0
  371. package/tsconfig.json +17 -0
  372. package/tsconfig.test.json +10 -0
@@ -0,0 +1,757 @@
1
+ /**
2
+ * @module storage-helpers.web.mts
3
+ *
4
+ * This is the storage abstraction that wraps indexed db.
5
+ *
6
+ * NOTE:
7
+ *
8
+ * I just want to say that callbacks are not very cool and that much of the
9
+ * ridiculousness of this code is due to this fact.
10
+ *
11
+ * That said, these functions try to ensure db is closed per function via global
12
+ * finally block. With nested promises and callbacks, this is a big f*n mess.
13
+ * But more importantly, this is why there aren't db.close() calls sprinkled
14
+ * throughout each function. But ths assumes that I am wiring up resolve/reject
15
+ * calls correctly through all the paths and this is far from certain.
16
+ */
17
+ import { extractErrorMsg } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
18
+ import { GLOBAL_LOG_A_LOT, } from "../constants.mjs";
19
+ import { uint8ArrayToString } from "../helpers.web.mjs";
20
+ let logalot = GLOBAL_LOG_A_LOT;
21
+ let initRequestCount = 0;
22
+ export async function askForPersistStorage() {
23
+ const lc = `[${askForPersistStorage.name}]`;
24
+ try {
25
+ if (logalot) {
26
+ console.log(`${lc} starting... (I: 94b9aca3633e3d4cd3d420329a9c7425)`);
27
+ }
28
+ const _unusedtesting = await navigator.storage.persist();
29
+ if (navigator.storage?.persist) {
30
+ const alreadyPersisted = await navigator.storage.persisted();
31
+ if (alreadyPersisted) {
32
+ if (logalot) {
33
+ console.log(`${lc} navigator.storage is already persisted (I: 2e55a7106e6d07715356b5feb5300b25)`);
34
+ }
35
+ }
36
+ else {
37
+ if (logalot) {
38
+ console.log(`${lc} navigator.storage not already persisted. asking navigator.storage for persist... (I: 78086d15e2e94c14a0028c584099d715)`);
39
+ }
40
+ const persisted = await navigator.storage.persist();
41
+ if (logalot) {
42
+ console.log(`${lc} navigator.storage persist: ${persisted} (I: 923eb26c2c3240c9b5659c3266388071)`);
43
+ }
44
+ }
45
+ }
46
+ else {
47
+ if (logalot) {
48
+ console.warn(`${lc} navigator.storage.persist not supported. (W: f5a9c3a8f7614d30b9f205f3f6c61b34)`);
49
+ }
50
+ }
51
+ }
52
+ catch (error) {
53
+ console.error(`${lc} ${extractErrorMsg(error)}`);
54
+ throw error;
55
+ }
56
+ finally {
57
+ if (logalot) {
58
+ console.log(`${lc} complete.`);
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * initializes db ALWAYS but initializes store given by {@link storeName} ONLY
64
+ * WHEN VERSION IS HIGHER THAN EXISTING VERSION.
65
+ *
66
+ * @see {@link storageCreateStoreIfNotExist}
67
+ */
68
+ export async function initializeStorage({ dbName, storeName, version, logalot = false, }) {
69
+ const lc = `[${initializeStorage.name}][${dbName}][${storeName ?? 'no store name'}]`;
70
+ const uuid = crypto.randomUUID();
71
+ if (logalot) {
72
+ console.time(lc + uuid);
73
+ }
74
+ /** db variable outside try block for finally access in order to close it. */
75
+ let db = undefined;
76
+ try {
77
+ if (logalot) {
78
+ console.log(`${lc} starting... (I: f35d4e1ba37252f14c8532fb861b1125)`);
79
+ }
80
+ const prom = new Promise((resolve, reject) => {
81
+ try {
82
+ if (logalot) {
83
+ console.log(`${lc} starting... (I: 0aeddd9376daa0a044677ce4cf8a4c24)`);
84
+ }
85
+ // Open a database connection
86
+ if (logalot) {
87
+ console.timeLog(lc + uuid, 'opening... (I: e748b4ddb445d77cb10a7ba158b49125)');
88
+ }
89
+ // so when we get here via storageCreateStoreIfNotExist function,
90
+ // the version is going to be a bumped number. so is this what is
91
+ // necessarily triggering the onblocked?
92
+ const openDBRequest = indexedDB.open(dbName, /*version*/ version);
93
+ initRequestCount++;
94
+ console.log(`${lc} initRequestCount: ${initRequestCount} (I: 294d5f0b12ffe5512bacebe891824d25)`);
95
+ let storeAlreadyExisted = undefined;
96
+ openDBRequest.onupgradeneeded = (event) => {
97
+ try {
98
+ db = event.target.result;
99
+ if (logalot) {
100
+ console.timeLog(lc + uuid, 'onupgradeneeded... (I: e748b4ddb445d77cb10a7ba158b49125)');
101
+ }
102
+ // Create a store if it doesn't exist. note that
103
+ // db.createObjectStore can only be called within this
104
+ // onupgradeneeded handler.
105
+ if (storeName) {
106
+ if (!db.objectStoreNames.contains(storeName)) {
107
+ storeAlreadyExisted = false;
108
+ db.createObjectStore(storeName, { keyPath: 'key' });
109
+ }
110
+ else {
111
+ storeAlreadyExisted = true;
112
+ }
113
+ }
114
+ }
115
+ catch (error) {
116
+ console.error(`${lc}[openDBRequest.onupgradeneeded] ${extractErrorMsg(error)} (E: 4a5fa1b0850be47e28bee653da287325)`);
117
+ reject(error);
118
+ }
119
+ };
120
+ openDBRequest.onblocked = (event) => {
121
+ console.log(`${lc}[openDBRequest.onblocked] openDBRequest blocked...time wasted a bit here. version change event (old -> new): ${event.oldVersion} -> ${event.newVersion} (I: 9074ebf4afdba54d6f9d41b360b96a25)`);
122
+ console.dir(event);
123
+ };
124
+ /**
125
+ * this handler fires independently of upgradeneeded
126
+ */
127
+ openDBRequest.onsuccess = (ev) => {
128
+ try {
129
+ if (logalot) {
130
+ console.log('init success (I: 297a5a71e405a0b56413af813f248d24)');
131
+ }
132
+ if (logalot) {
133
+ console.timeLog(lc + uuid, 'onupgradeneeded... (I: e748b4ddb445d77cb10a7ba158b49125)');
134
+ }
135
+ db = ev.target.result;
136
+ if (storeName) {
137
+ storeAlreadyExisted ??= db.objectStoreNames.contains(storeName);
138
+ if (logalot) {
139
+ console.log(`${lc} ${dbName} store "${storeName}" ${storeAlreadyExisted ? 'already exists' : 'does not exist'}. (I: db64712bc69c5287b1cf77af1fc13d24)`);
140
+ }
141
+ }
142
+ resolve();
143
+ }
144
+ catch (error) {
145
+ console.error(`${lc}[openDBRequest.onsuccess] ${extractErrorMsg(error)}`);
146
+ reject(error);
147
+ }
148
+ };
149
+ openDBRequest.onerror = (event) => {
150
+ debugger; // error initializeStorage openDBRequest.onerror
151
+ console.error(`${lc}[initRequest.onerror] ${extractErrorMsg(openDBRequest.error)} (E: 74cf09e9fba2dd9e41225e943c331124)`);
152
+ reject(openDBRequest.error); // same as below?
153
+ // reject(event.target.error);
154
+ };
155
+ }
156
+ catch (error) {
157
+ console.error(`${lc} ${extractErrorMsg(error)}`);
158
+ debugger; // error
159
+ reject(error);
160
+ }
161
+ finally {
162
+ if (logalot) {
163
+ console.log(`${lc} complete.`);
164
+ }
165
+ }
166
+ });
167
+ await prom;
168
+ }
169
+ catch (error) {
170
+ console.error(`${lc} ${extractErrorMsg(error)}`);
171
+ throw error;
172
+ }
173
+ finally {
174
+ if (db) {
175
+ if (logalot) {
176
+ console.log(`${lc} closing db ${dbName}... (I: 3f1c18eec567ea63f3927eef0f038925)`);
177
+ }
178
+ db.close();
179
+ if (logalot) {
180
+ console.log(`${lc} closing db ${dbName} complete. (I: bc3b2f504245d6203dbba6bd65d30325)`);
181
+ console.timeLog(lc + uuid, 'db closed. (I: e748b4ddb445d77cb10a7ba158b49125)');
182
+ }
183
+ }
184
+ if (logalot) {
185
+ console.log(`${lc} complete.`);
186
+ console.timeEnd(lc + uuid);
187
+ }
188
+ }
189
+ }
190
+ /**
191
+ * wrapper for filtered indexedDB.databases() call basically
192
+ *
193
+ * @returns db info for given dbName
194
+ */
195
+ export async function storageGetDBInfo({ dbName, logalot = false, }) {
196
+ const lc = `[${storageGetDBInfo.name}]`;
197
+ const uuid = crypto.randomUUID();
198
+ if (logalot) {
199
+ console.time(lc + uuid);
200
+ }
201
+ try {
202
+ if (logalot) {
203
+ console.log(`${lc} starting... (I: 8516795b20529d19eb6923defd7a0f24)`);
204
+ }
205
+ const dbInfo = (await indexedDB.databases()).filter(x => x.name === dbName).at(0);
206
+ return dbInfo;
207
+ }
208
+ catch (error) {
209
+ console.error(`${lc} ${extractErrorMsg(error)}`);
210
+ }
211
+ finally {
212
+ if (logalot) {
213
+ console.timeEnd(lc + uuid);
214
+ }
215
+ if (logalot) {
216
+ console.log(`${lc} complete.`);
217
+ }
218
+ }
219
+ }
220
+ /**
221
+ * wrapper that ensures indexeddb store exists
222
+ */
223
+ export async function storageCreateStoreIfNotExist({ dbName, storeName, logalot = false, }) {
224
+ const lc = `[${storageCreateStoreIfNotExist.name}]`;
225
+ const uuid = crypto.randomUUID();
226
+ if (logalot) {
227
+ console.time(lc + uuid);
228
+ }
229
+ /** db variable outside try block for finally access in order to close it. */
230
+ let db = undefined;
231
+ try {
232
+ if (logalot) {
233
+ console.log(`${lc} starting... (I: 029f7caa8ea5ea08a865f3924c82b624)`);
234
+ }
235
+ const dbInfo_viaIndexedDBDatabasesFn = (await indexedDB.databases()).filter(x => x.name === dbName).at(0);
236
+ if (!dbInfo_viaIndexedDBDatabasesFn) {
237
+ throw new Error(`db (${dbName}) does not exist. can't create store (${storeName}) (E: 5b15f7aed6f7068d077b2c7ebcbe8524)`);
238
+ }
239
+ let storeExists = false;
240
+ if (logalot) {
241
+ console.timeLog(lc + uuid);
242
+ }
243
+ await new Promise((resolve, reject) => {
244
+ const openDBRequest = indexedDB.open(dbName);
245
+ openDBRequest.onsuccess = (ev) => {
246
+ db = ev.target.result;
247
+ storeExists = db.objectStoreNames?.contains(storeName);
248
+ if (logalot) {
249
+ console.timeLog(lc + uuid, 'open db request');
250
+ }
251
+ resolve();
252
+ };
253
+ openDBRequest.onerror = (event) => {
254
+ debugger; // error storageCreateStoreIfNotExist openDBRequest.onerror
255
+ console.error(`${lc}[openDBRequest.onerror] ${extractErrorMsg(openDBRequest.error)} (E: 63695744e9e59ff8019e04ceeb8e2524)`);
256
+ // reject(event.target.error); // same as openDBRequest.error?
257
+ reject(openDBRequest.error);
258
+ };
259
+ });
260
+ if (logalot) {
261
+ console.timeLog(lc + uuid);
262
+ }
263
+ if (storeExists) {
264
+ if (logalot) {
265
+ console.log(`${lc} store ${storeName} already existed. (I: a2263b510c18240fc59fca54e3892324)`);
266
+ }
267
+ return; /* <<<< returns early */
268
+ }
269
+ // store does not exist, so get the version number, bump it, and in the upgradeneeded handler, create the store
270
+ const dbInfo = await storageGetDBInfo({ dbName, logalot }); // does not need db closed yet
271
+ if (logalot) {
272
+ console.timeLog(lc + uuid, 'storageGetDBInfo complete');
273
+ }
274
+ if (!dbInfo) {
275
+ throw new Error(`db (${dbName}) does not exist. can't create store (${storeName}) (E: c771db13fa28f67079aad45e1ab7e624)`);
276
+ }
277
+ const version = dbInfo.version;
278
+ if (!version) {
279
+ throw new Error(`db (${dbName}) has no version. can't create store (${storeName}) (E: 3d2ec52853ad99f92b19ac5aa7fbfe24)`);
280
+ }
281
+ const newVersion = version + 1;
282
+ if (logalot) {
283
+ console.log(`${lc} creating store ${storeName} with version ${newVersion} (I: 312b79f28243c650cf38935114f21e24)`);
284
+ }
285
+ // we need to manually close db here before calling the inititalizeStorage
286
+ if (db) {
287
+ db.close();
288
+ db = undefined;
289
+ }
290
+ else {
291
+ throw new Error(`(UNEXPECTED) how did we get here with db falsy? (E: b561784879e19bac54b1c4936aff0c25)`);
292
+ }
293
+ await initializeStorage({ dbName, storeName, version: newVersion, logalot });
294
+ }
295
+ catch (error) {
296
+ console.error(`${lc} ${extractErrorMsg(error)}`);
297
+ throw error; // why wasn't I rethrowing??
298
+ }
299
+ finally {
300
+ if (db) {
301
+ if (logalot) {
302
+ console.log(`${lc} closing db ${dbName}... (I: 3f1c18eec567ea63f3927eef0f038925)`);
303
+ }
304
+ db.close();
305
+ if (logalot) {
306
+ console.log(`${lc} closing db ${dbName} complete. (I: bc3b2f504245d6203dbba6bd65d30325)`);
307
+ }
308
+ }
309
+ if (logalot) {
310
+ console.timeLog(lc + uuid);
311
+ }
312
+ if (logalot) {
313
+ console.log(`${lc} complete.`);
314
+ }
315
+ }
316
+ }
317
+ /**
318
+ * set key/value item
319
+ * helper for indexeddb storage.
320
+ */
321
+ export async function storagePut({ dbName, version, storeName, key, value, logalot = false, }) {
322
+ const lc = `[${storagePut.name}]`;
323
+ /** db variable outside try block for finally access in order to close it. */
324
+ let db = undefined;
325
+ try {
326
+ if (logalot) {
327
+ console.log(`${lc} starting... (I: bf7316c244888cb8ead2d3aac1d9f625)`);
328
+ }
329
+ const prom = new Promise((resolve, reject) => {
330
+ try {
331
+ if (logalot) {
332
+ console.log(`${lc} starting... (I: 81df59e3961d711ce5d8f2ae3e2f3824)`);
333
+ }
334
+ const openDBRequest = indexedDB.open(dbName, /*version*/ version);
335
+ openDBRequest.onsuccess = (event) => {
336
+ db = event.target.result;
337
+ try {
338
+ const store = db.transaction(storeName, 'readwrite').objectStore(storeName);
339
+ const data = { key, value };
340
+ store.put(data);
341
+ resolve();
342
+ }
343
+ catch (error) {
344
+ console.error(`${lc}[putRequest.onsuccess] ${extractErrorMsg(error)}`);
345
+ reject(error);
346
+ }
347
+ };
348
+ openDBRequest.onerror = (event) => {
349
+ debugger; // storagePut openDBRequest error
350
+ // is openDBRequest.error same as event.target.error?
351
+ console.error(`${lc}[putRequest.onerror] ${extractErrorMsg(openDBRequest.error)} (E: 7a946d99ede2b248df4dcfea4ac99724)`);
352
+ reject(openDBRequest.error);
353
+ };
354
+ }
355
+ catch (error) {
356
+ console.error(`${lc} ${extractErrorMsg(error)}`);
357
+ reject(error);
358
+ }
359
+ finally {
360
+ if (logalot) {
361
+ console.log(`${lc} complete.`);
362
+ }
363
+ }
364
+ });
365
+ await prom;
366
+ }
367
+ catch (error) {
368
+ console.error(`${lc} ${extractErrorMsg(error)}`);
369
+ throw error;
370
+ }
371
+ finally {
372
+ if (db) {
373
+ if (logalot) {
374
+ console.log(`${lc} closing db ${dbName}... (I: 438c6edced94b83a3478c71b08c6c325)`);
375
+ }
376
+ db.close();
377
+ if (logalot) {
378
+ console.log(`${lc} closing db ${dbName} complete. (I: 0d081553b1eb53c65ade2cedb802cf25)`);
379
+ }
380
+ }
381
+ if (logalot) {
382
+ console.log(`${lc} complete.`);
383
+ }
384
+ }
385
+ }
386
+ /**
387
+ * get item via key
388
+ * helper for indexeddb storage.
389
+ */
390
+ export async function storageGet({ dbName, version, storeName, key, logalot = false, }) {
391
+ const lc = `[${storageGet.name}]`;
392
+ /** db variable outside try block for finally access in order to close it. */
393
+ let db = undefined;
394
+ try {
395
+ if (logalot) {
396
+ console.log(`${lc} starting... (I: f8ba7cd5801918a8580e91b7c90aa525)`);
397
+ }
398
+ const prom = new Promise((resolve, reject) => {
399
+ try {
400
+ if (logalot) {
401
+ console.log(`${lc} starting... (I: 24163c4a11c8712097db45febaf9c724)`);
402
+ }
403
+ // Retrieve the value later
404
+ const openDBRequest = indexedDB.open(dbName, version);
405
+ openDBRequest.onsuccess = (event) => {
406
+ db = event.target.result;
407
+ let store;
408
+ try {
409
+ store = db.transaction(storeName).objectStore(storeName);
410
+ }
411
+ catch (error) {
412
+ debugger; // error getting objectStore
413
+ console.error(`${lc}[openDBRequest.onsuccess][objectStore] ${extractErrorMsg(error)}`);
414
+ reject(error);
415
+ return; /* <<<< returns early */
416
+ }
417
+ // Get the value using the key
418
+ const getRequest = store.get(key);
419
+ getRequest.onsuccess = (event) => {
420
+ try {
421
+ let value = event.target?.result?.value ?? undefined;
422
+ if (!value) {
423
+ resolve(value);
424
+ return; /* <<<< returns early */
425
+ }
426
+ if (logalot) {
427
+ console.log('Retrieved value:', value);
428
+ }
429
+ if (value instanceof Uint8Array) {
430
+ resolve(uint8ArrayToString(value));
431
+ }
432
+ else {
433
+ if (typeof value !== 'string') {
434
+ throw new Error(`(UNEXPECTED) truthy, non-Uint8Array value is not a string? (E: 6a4ec24e2e5d9848f8b542bc2661dc24)`);
435
+ }
436
+ resolve(value);
437
+ }
438
+ }
439
+ catch (error) {
440
+ reject(error);
441
+ }
442
+ };
443
+ getRequest.onerror = (event) => {
444
+ debugger; // storageGet getRequest.onerror
445
+ const error = getRequest.error;
446
+ console.error(`${lc}[openDBRequest.onsuccess][getRequest.onerror] ${extractErrorMsg(error)}`);
447
+ reject(error);
448
+ };
449
+ };
450
+ openDBRequest.onerror = (event) => {
451
+ debugger; // error indexeddb storageGet openDBRequest.onerror
452
+ // are openDBRequest.error and event.target.error the same?
453
+ console.error(`${lc}[openDBRequest.onerror] ${extractErrorMsg(openDBRequest.error)} (E: 074963a908fa9a075f01c73cae829224)`);
454
+ reject(openDBRequest.error);
455
+ };
456
+ }
457
+ catch (error) {
458
+ console.error(`${lc} ${extractErrorMsg(error)}`);
459
+ reject(error);
460
+ }
461
+ finally {
462
+ if (logalot) {
463
+ console.log(`${lc} complete.`);
464
+ }
465
+ }
466
+ });
467
+ const result = await prom;
468
+ return result;
469
+ }
470
+ catch (error) {
471
+ console.error(`${lc} ${extractErrorMsg(error)}`);
472
+ throw error;
473
+ }
474
+ finally {
475
+ if (db) {
476
+ if (logalot) {
477
+ console.log(`${lc} closing db ${dbName}... (I: a938fc22dfdc76b15f6926bc4d458225)`);
478
+ }
479
+ db.close();
480
+ if (logalot) {
481
+ console.log(`${lc} closing db ${dbName} complete. (I: 18f2ec1557bc83ec4e2c5d5e72264525)`);
482
+ }
483
+ }
484
+ if (logalot) {
485
+ console.log(`${lc} complete.`);
486
+ }
487
+ }
488
+ }
489
+ /**
490
+ * checks if db exists. if store is provided, checks to see if that specific
491
+ * store exists in the db's schema.
492
+ *
493
+ * helper for indexeddb storage.
494
+ */
495
+ export async function storageDBExists({ dbName, store, }) {
496
+ const lc = `[${storageDBExists.name}]`;
497
+ /** db variable outside try block for finally access in order to close it. */
498
+ let db = undefined;
499
+ try {
500
+ if (logalot) {
501
+ console.log(`${lc} starting... (I: 2b4373affa3841220f0b7ca690406624)`);
502
+ }
503
+ const dbs = await window.indexedDB.databases();
504
+ const dbExists = dbs.some(db => db.name === dbName);
505
+ if (dbExists) {
506
+ if (store) {
507
+ return await new Promise((resolve, reject) => {
508
+ const openDBRequest = indexedDB.open(dbName);
509
+ openDBRequest.onsuccess = (event) => {
510
+ db = event.target.result;
511
+ const storeExists = db.objectStoreNames.contains(store);
512
+ resolve(storeExists);
513
+ };
514
+ openDBRequest.onerror = (event) => {
515
+ debugger; // onerror
516
+ db = openDBRequest.result;
517
+ const { error } = event.target;
518
+ console.error(`${lc}[openDBRequest.onerror] ${extractErrorMsg(openDBRequest.error)} (E: c783fe607451e46c1feae3a81e0f7924)`);
519
+ reject(error);
520
+ };
521
+ });
522
+ }
523
+ else {
524
+ return true;
525
+ }
526
+ }
527
+ else {
528
+ return false;
529
+ }
530
+ }
531
+ catch (error) {
532
+ console.error(`${lc} ${extractErrorMsg(error)}`);
533
+ throw error;
534
+ }
535
+ finally {
536
+ if (db) {
537
+ if (logalot) {
538
+ console.log(`${lc} closing db ${dbName}... (I: 8782d9eea285cf9eb638d493a421a625)`);
539
+ }
540
+ // for some reason, typescript incorrectly thinks db is type
541
+ // "never", so this any cast is necessary
542
+ db.close();
543
+ if (logalot) {
544
+ console.log(`${lc} closing db ${dbName} complete. (I: 76a0c5dea2643e2bb84c82c8446a8125)`);
545
+ }
546
+ }
547
+ if (logalot) {
548
+ console.log(`${lc} complete.`);
549
+ }
550
+ }
551
+ }
552
+ /**
553
+ * helper function equivalent to rm -rf in our filesystem space
554
+ */
555
+ export async function storageRmRF({ dbName, storeName, pathToRm, }) {
556
+ const lc = `[${storageRmRF.name}]`;
557
+ /**
558
+ * turning it off for this function...note that this does not call any other
559
+ * functions in this file that would be affected.
560
+ */
561
+ const logalotInitDebug = logalot;
562
+ // logalot = false;
563
+ if (logalot) {
564
+ console.log(`${lc} starting... (I: c7e4cb759789ece0a8189d7dfb4d2a24)`);
565
+ }
566
+ /** db variable outside try block for finally access in order to close it. */
567
+ let db = undefined;
568
+ return new Promise((resolve, reject) => {
569
+ try {
570
+ if (!dbName) {
571
+ throw new Error(`(UNEXPECTED) dbName falsy? (E: ed336d88c9c4e8d4916b29356dc58324)`);
572
+ }
573
+ if (!storeName) {
574
+ throw new Error(`(UNEXPECTED) storeName falsy? (E: ad493bb79b63a192524b14c59a706524)`);
575
+ }
576
+ if (!pathToRm) {
577
+ throw new Error(`(UNEXPECTED) pathToRm falsy? (E: 88c9631d93467e17996946882254af24)`);
578
+ }
579
+ const openDBRequest = indexedDB.open(dbName);
580
+ openDBRequest.onerror = () => {
581
+ debugger; // error
582
+ if (openDBRequest.result) { // Only close if a DB object was obtained
583
+ openDBRequest.result.close();
584
+ }
585
+ console.error(`${lc}[openDBRequest.onerror] ${extractErrorMsg(openDBRequest.error)} (E: 4c5ab71a765e61b4292008fd4fafe324)`);
586
+ reject(openDBRequest.error);
587
+ };
588
+ openDBRequest.onsuccess = () => {
589
+ db = openDBRequest.result;
590
+ const transaction = db.transaction(storeName, "readwrite");
591
+ const objectStore = transaction.objectStore(storeName);
592
+ // Use IDBKeyRange.lowerBound() for efficiency
593
+ const range = IDBKeyRange.lowerBound(pathToRm);
594
+ const openCursorRequest = objectStore.openCursor(range);
595
+ openCursorRequest.onerror = () => {
596
+ debugger; // error
597
+ console.error(`${lc}[openCursorRequest.onerror] ${extractErrorMsg(openCursorRequest.error)} (E: caefdda2bb95f92e9fb8d89ee412b524)`);
598
+ reject(openCursorRequest.error);
599
+ };
600
+ openCursorRequest.onsuccess = () => {
601
+ try {
602
+ let rmCount = 0;
603
+ // does it matter if the path is a dir vs. a file?
604
+ const cursor = openCursorRequest.result;
605
+ if (cursor) {
606
+ if (cursor.key.toString().startsWith(pathToRm)) {
607
+ const deleteRequest = cursor.delete();
608
+ rmCount++;
609
+ deleteRequest.onerror = () => {
610
+ debugger; // error
611
+ console.error(`${lc}[deleteRequest.onerror] ${extractErrorMsg(deleteRequest.error)} (E: abc031c53e5387322cd8909b3ada9b24)`);
612
+ reject(deleteRequest.error);
613
+ };
614
+ cursor.continue();
615
+ }
616
+ else {
617
+ // No more keys starting with dirPath, we can stop
618
+ if (logalot) {
619
+ console.log(`${lc} rmCount: ${rmCount} (I: e4bc613a5514c0942484b79267e16724)`);
620
+ }
621
+ resolve();
622
+ }
623
+ }
624
+ else {
625
+ if (logalot) {
626
+ console.log(`${lc} cursor is falsy, so either we have no more records or had no records to begin with. (I: 9ff3aec6274416501a7baf6dcc5f2624)`);
627
+ }
628
+ resolve();
629
+ }
630
+ }
631
+ catch (error) {
632
+ console.error(`${lc}[openCursorRequest.onsuccess] ${extractErrorMsg(error)}`);
633
+ reject(error);
634
+ }
635
+ };
636
+ };
637
+ }
638
+ catch (error) {
639
+ debugger; // error storageRmDir
640
+ console.error(`${lc} ${extractErrorMsg(error)}`);
641
+ reject(error);
642
+ }
643
+ }).finally(() => {
644
+ if (db) {
645
+ if (logalot) {
646
+ console.log(`${lc} closing db ${dbName}... (I: 39b4ba83de4bdfd541e3384ebab27425)`);
647
+ }
648
+ db.close();
649
+ if (logalot) {
650
+ console.log(`${lc} closing db ${dbName} complete. (I: e4015b9436c4b2bc0ccf0e11e2037925)`);
651
+ }
652
+ }
653
+ if (logalot) {
654
+ console.log(`${lc} complete.`);
655
+ }
656
+ logalot = logalotInitDebug;
657
+ });
658
+ }
659
+ /**
660
+ * helper function equivalent to readdir in our filesystem space
661
+ */
662
+ export async function storageReaddir({ dbName, storeName, dirPath, withFileTypes = false, }) {
663
+ const lc = `[${storageReaddir.name}]`;
664
+ /** db variable outside try block for finally access in order to close it. */
665
+ let db = undefined;
666
+ try {
667
+ const prom = new Promise((resolve, reject) => {
668
+ const openDBRequest = indexedDB.open(dbName);
669
+ openDBRequest.onerror = () => {
670
+ debugger; // error
671
+ // if (openDBRequest.result) { // Only close if a DB object was obtained
672
+ // (openDBRequest.result as IDBDatabase).close();
673
+ // }
674
+ reject(openDBRequest.error);
675
+ };
676
+ openDBRequest.onsuccess = () => {
677
+ db = openDBRequest.result;
678
+ const transaction = db.transaction(storeName, "readonly");
679
+ const objectStore = transaction.objectStore(storeName);
680
+ const normalizedDirPath = dirPath.endsWith("/") ? dirPath : dirPath + "/";
681
+ const range = IDBKeyRange.lowerBound(normalizedDirPath);
682
+ const openCursorRequest = objectStore.openCursor(range);
683
+ const entries = new Set();
684
+ const dirents = [];
685
+ openCursorRequest.onerror = () => {
686
+ debugger; // error
687
+ console.error(`${lc}[openCursorRequest.onerror] ${extractErrorMsg(openCursorRequest.error)}`);
688
+ reject(openCursorRequest.error);
689
+ };
690
+ // cursor.continue() repeatedly calls this handler ick
691
+ openCursorRequest.onsuccess = () => {
692
+ try {
693
+ const cursor = openCursorRequest.result;
694
+ if (cursor) {
695
+ const key = cursor.key.toString();
696
+ if (key.startsWith(normalizedDirPath) && key !== normalizedDirPath) {
697
+ const relativePath = key.substring(normalizedDirPath.length);
698
+ const childSegment = relativePath.split("/")[0];
699
+ if (withFileTypes) {
700
+ // Determine if it's a file or directory
701
+ const isDirectory = relativePath.substring(childSegment.length).startsWith("/");
702
+ dirents.push({
703
+ name: childSegment,
704
+ isDirectory: () => isDirectory,
705
+ isFile: () => !isDirectory,
706
+ isBlockDevice: () => false,
707
+ isCharacterDevice: () => false,
708
+ isSymbolicLink: () => false,
709
+ isFIFO: () => false,
710
+ isSocket: () => false,
711
+ });
712
+ }
713
+ else {
714
+ entries.add(childSegment);
715
+ }
716
+ cursor.continue();
717
+ }
718
+ else if (!key.startsWith(normalizedDirPath)) {
719
+ resolve(withFileTypes ? dirents : Array.from(entries));
720
+ }
721
+ else {
722
+ cursor.continue();
723
+ }
724
+ }
725
+ else {
726
+ resolve(withFileTypes ? dirents : Array.from(entries));
727
+ }
728
+ }
729
+ catch (error) {
730
+ console.error(`${lc}[openCursorRequest.onsuccess] ${extractErrorMsg(error)}`);
731
+ reject(error);
732
+ }
733
+ };
734
+ };
735
+ });
736
+ const result = await prom;
737
+ return result;
738
+ }
739
+ catch (error) {
740
+ console.error(`${lc} ${extractErrorMsg(error)}`);
741
+ throw error;
742
+ }
743
+ finally {
744
+ if (db) {
745
+ if (logalot) {
746
+ console.log(`${lc} closing db ${dbName}... (I: 39b4ba83de4bdfd541e3384ebab27425)`);
747
+ }
748
+ // for some reason, typescript incorrectly thinks db is type
749
+ // "never", so this any cast is necessary
750
+ db.close();
751
+ if (logalot) {
752
+ console.log(`${lc} closing db ${dbName} complete. (I: e4015b9436c4b2bc0ccf0e11e2037925)`);
753
+ }
754
+ }
755
+ }
756
+ }
757
+ //# sourceMappingURL=storage-helpers.web.mjs.map