cursedbelt 1.0.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/dist/client/index.js +1 -1
  2. package/dist/core/category/index.d.ts.map +1 -1
  3. package/dist/core/category/index.js +2 -1
  4. package/dist/core/category/index.js.map +1 -1
  5. package/dist/core/category/types.js +1 -1
  6. package/dist/core/category/types.js.map +1 -1
  7. package/dist/core/file-tree/fileTreeModel.d.ts +49 -0
  8. package/dist/core/file-tree/fileTreeModel.d.ts.map +1 -1
  9. package/dist/core/file-tree/fileTreeModel.js +84 -0
  10. package/dist/core/file-tree/fileTreeModel.js.map +1 -1
  11. package/dist/core/layout/index.js +1 -1
  12. package/dist/core/layout/index.js.map +1 -1
  13. package/dist/core/media/index.js +1 -1
  14. package/dist/core/media/index.js.map +1 -1
  15. package/dist/core/media/types.js +1 -1
  16. package/dist/core/media/types.js.map +1 -1
  17. package/dist/core/media/uploadLimits.js +1 -1
  18. package/dist/core/media/uploadLimits.js.map +1 -1
  19. package/dist/core/sharing/model.d.ts +1 -1
  20. package/dist/ctgr/index.js +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/react/activity-bar/ActivityBar.d.ts +17 -0
  24. package/dist/react/activity-bar/ActivityBar.d.ts.map +1 -1
  25. package/dist/react/activity-bar/ActivityBar.js.map +1 -1
  26. package/dist/react/analytics/index.d.ts +1 -1
  27. package/dist/react/analytics/index.js +1 -1
  28. package/dist/react/chat/MessageComposer.d.ts.map +1 -1
  29. package/dist/react/chat/MessageComposer.js +5 -4
  30. package/dist/react/chat/MessageComposer.js.map +1 -1
  31. package/dist/react/components/Button.d.ts.map +1 -1
  32. package/dist/react/components/Button.js +3 -2
  33. package/dist/react/components/Button.js.map +1 -1
  34. package/dist/react/components/Checkbox.d.ts +19 -3
  35. package/dist/react/components/Checkbox.d.ts.map +1 -1
  36. package/dist/react/components/Checkbox.js +29 -12
  37. package/dist/react/components/Checkbox.js.map +1 -1
  38. package/dist/react/components/CodeArea.d.ts.map +1 -1
  39. package/dist/react/components/CodeArea.js +2 -1
  40. package/dist/react/components/CodeArea.js.map +1 -1
  41. package/dist/react/components/Collapsible.d.ts.map +1 -1
  42. package/dist/react/components/Collapsible.js +2 -1
  43. package/dist/react/components/Collapsible.js.map +1 -1
  44. package/dist/react/components/ComboboxField.d.ts.map +1 -1
  45. package/dist/react/components/ComboboxField.js +3 -2
  46. package/dist/react/components/ComboboxField.js.map +1 -1
  47. package/dist/react/components/CopyButton.d.ts.map +1 -1
  48. package/dist/react/components/CopyButton.js +2 -1
  49. package/dist/react/components/CopyButton.js.map +1 -1
  50. package/dist/react/components/DataTable/ColumnChecklist.d.ts.map +1 -1
  51. package/dist/react/components/DataTable/ColumnChecklist.js +2 -1
  52. package/dist/react/components/DataTable/ColumnChecklist.js.map +1 -1
  53. package/dist/react/components/DataTable/Pagination.d.ts.map +1 -1
  54. package/dist/react/components/DataTable/Pagination.js +2 -1
  55. package/dist/react/components/DataTable/Pagination.js.map +1 -1
  56. package/dist/react/components/DataTable/SortHeader.d.ts.map +1 -1
  57. package/dist/react/components/DataTable/SortHeader.js +2 -1
  58. package/dist/react/components/DataTable/SortHeader.js.map +1 -1
  59. package/dist/react/components/DataTable/TableFilterBuilder.d.ts +61 -0
  60. package/dist/react/components/DataTable/TableFilterBuilder.d.ts.map +1 -0
  61. package/dist/react/components/DataTable/{FilterBuilder.js → TableFilterBuilder.js} +26 -3
  62. package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -0
  63. package/dist/react/components/DataTable/Toolbar.d.ts +1 -1
  64. package/dist/react/components/DataTable/Toolbar.js +3 -3
  65. package/dist/react/components/DataTable/Toolbar.js.map +1 -1
  66. package/dist/react/components/DataTable/cells/LinkCell.d.ts.map +1 -1
  67. package/dist/react/components/DataTable/cells/LinkCell.js +2 -1
  68. package/dist/react/components/DataTable/cells/LinkCell.js.map +1 -1
  69. package/dist/react/components/DataTable/index.d.ts +1 -1
  70. package/dist/react/components/DataTable/index.d.ts.map +1 -1
  71. package/dist/react/components/DataTable/index.js +4 -1
  72. package/dist/react/components/DataTable/index.js.map +1 -1
  73. package/dist/react/components/DragHandle.d.ts.map +1 -1
  74. package/dist/react/components/DragHandle.js +2 -1
  75. package/dist/react/components/DragHandle.js.map +1 -1
  76. package/dist/react/components/EmojiField.d.ts.map +1 -1
  77. package/dist/react/components/EmojiField.js +2 -1
  78. package/dist/react/components/EmojiField.js.map +1 -1
  79. package/dist/react/components/EventTimeline.d.ts +3 -2
  80. package/dist/react/components/EventTimeline.d.ts.map +1 -1
  81. package/dist/react/components/EventTimeline.js +3 -2
  82. package/dist/react/components/EventTimeline.js.map +1 -1
  83. package/dist/react/components/IconButton.d.ts +1 -1
  84. package/dist/react/components/IconButton.js +1 -1
  85. package/dist/react/components/InfoHint.d.ts.map +1 -1
  86. package/dist/react/components/InfoHint.js +5 -4
  87. package/dist/react/components/InfoHint.js.map +1 -1
  88. package/dist/react/components/InheritBadge.js +1 -1
  89. package/dist/react/components/InheritBadge.js.map +1 -1
  90. package/dist/react/components/InlineEditableText.d.ts.map +1 -1
  91. package/dist/react/components/InlineEditableText.js +2 -1
  92. package/dist/react/components/InlineEditableText.js.map +1 -1
  93. package/dist/react/components/MeterList.d.ts.map +1 -1
  94. package/dist/react/components/MeterList.js +2 -1
  95. package/dist/react/components/MeterList.js.map +1 -1
  96. package/dist/react/components/PathText.d.ts +2 -2
  97. package/dist/react/components/PathText.d.ts.map +1 -1
  98. package/dist/react/components/PathText.js +2 -1
  99. package/dist/react/components/PathText.js.map +1 -1
  100. package/dist/react/components/RatingField.d.ts.map +1 -1
  101. package/dist/react/components/RatingField.js +2 -1
  102. package/dist/react/components/RatingField.js.map +1 -1
  103. package/dist/react/components/SecretInput.js +3 -2
  104. package/dist/react/components/SecretInput.js.map +1 -1
  105. package/dist/react/components/SegmentedControl.d.ts.map +1 -1
  106. package/dist/react/components/SegmentedControl.js +2 -1
  107. package/dist/react/components/SegmentedControl.js.map +1 -1
  108. package/dist/react/components/StarRating.d.ts.map +1 -1
  109. package/dist/react/components/StarRating.js +9 -5
  110. package/dist/react/components/StarRating.js.map +1 -1
  111. package/dist/react/components/StatStrip.d.ts.map +1 -1
  112. package/dist/react/components/StatStrip.js +2 -1
  113. package/dist/react/components/StatStrip.js.map +1 -1
  114. package/dist/react/components/StatTile.d.ts.map +1 -1
  115. package/dist/react/components/StatTile.js +3 -2
  116. package/dist/react/components/StatTile.js.map +1 -1
  117. package/dist/react/components/Tabs.d.ts.map +1 -1
  118. package/dist/react/components/Tabs.js +2 -1
  119. package/dist/react/components/Tabs.js.map +1 -1
  120. package/dist/react/components/TruncatedText.d.ts +2 -1
  121. package/dist/react/components/TruncatedText.d.ts.map +1 -1
  122. package/dist/react/components/TruncatedText.js +2 -1
  123. package/dist/react/components/TruncatedText.js.map +1 -1
  124. package/dist/react/components/calendar/MonthGrid.d.ts.map +1 -1
  125. package/dist/react/components/calendar/MonthGrid.js +2 -1
  126. package/dist/react/components/calendar/MonthGrid.js.map +1 -1
  127. package/dist/react/components/calendar/WeekView.d.ts.map +1 -1
  128. package/dist/react/components/calendar/WeekView.js +2 -1
  129. package/dist/react/components/calendar/WeekView.js.map +1 -1
  130. package/dist/react/components/revealOnHover.d.ts.map +1 -1
  131. package/dist/react/components/revealOnHover.js +2 -1
  132. package/dist/react/components/revealOnHover.js.map +1 -1
  133. package/dist/react/file-tree/FileTree.d.ts +50 -1
  134. package/dist/react/file-tree/FileTree.d.ts.map +1 -1
  135. package/dist/react/file-tree/FileTree.js +234 -6
  136. package/dist/react/file-tree/FileTree.js.map +1 -1
  137. package/dist/react/file-tree/fileTree.css +52 -0
  138. package/dist/react/filter-rail/FilterRail.d.ts.map +1 -1
  139. package/dist/react/filter-rail/FilterRail.js +5 -4
  140. package/dist/react/filter-rail/FilterRail.js.map +1 -1
  141. package/dist/react/folder-tree/FolderTreeRail.d.ts.map +1 -1
  142. package/dist/react/folder-tree/FolderTreeRail.js +2 -1
  143. package/dist/react/folder-tree/FolderTreeRail.js.map +1 -1
  144. package/dist/react/index.d.ts +5 -1
  145. package/dist/react/index.d.ts.map +1 -1
  146. package/dist/react/index.js +5 -1
  147. package/dist/react/index.js.map +1 -1
  148. package/dist/react/layoutEngine/index.js +1 -1
  149. package/dist/react/layoutEngine/index.js.map +1 -1
  150. package/dist/react/lib/field.d.ts.map +1 -1
  151. package/dist/react/lib/field.js +3 -2
  152. package/dist/react/lib/field.js.map +1 -1
  153. package/dist/react/lib/floatingStyles.d.ts.map +1 -1
  154. package/dist/react/lib/floatingStyles.js +2 -1
  155. package/dist/react/lib/floatingStyles.js.map +1 -1
  156. package/dist/react/lib/tapTarget.d.ts +96 -0
  157. package/dist/react/lib/tapTarget.d.ts.map +1 -0
  158. package/dist/react/lib/tapTarget.js +96 -0
  159. package/dist/react/lib/tapTarget.js.map +1 -0
  160. package/dist/react/media/VideoTrimmer.d.ts +1 -1
  161. package/dist/react/media/VideoTrimmer.js +1 -1
  162. package/dist/react/media/denseGallery.css +3 -3
  163. package/dist/react/media/ffmpegWasm.js +2 -2
  164. package/dist/react/media/ffmpegWasm.js.map +1 -1
  165. package/dist/react/media/videoPlayer.css +42 -0
  166. package/dist/react/namespace/NamespaceTargetCapsule.d.ts +2 -2
  167. package/dist/react/namespace/NamespaceTargetCapsule.d.ts.map +1 -1
  168. package/dist/react/nav/BreadcrumbTrail.d.ts.map +1 -1
  169. package/dist/react/nav/BreadcrumbTrail.js +4 -3
  170. package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
  171. package/dist/react/nav/HubTileGrid.d.ts.map +1 -1
  172. package/dist/react/nav/HubTileGrid.js +2 -1
  173. package/dist/react/nav/HubTileGrid.js.map +1 -1
  174. package/dist/react/nav/SideNav.d.ts.map +1 -1
  175. package/dist/react/nav/SideNav.js +4 -3
  176. package/dist/react/nav/SideNav.js.map +1 -1
  177. package/dist/react/nav/SideNavCustomize.d.ts.map +1 -1
  178. package/dist/react/nav/SideNavCustomize.js +2 -1
  179. package/dist/react/nav/SideNavCustomize.js.map +1 -1
  180. package/dist/react/palette/CommandPalette.d.ts.map +1 -1
  181. package/dist/react/palette/CommandPalette.js +3 -2
  182. package/dist/react/palette/CommandPalette.js.map +1 -1
  183. package/dist/server/drivers/pooledControlStores.pg.test.js +1 -0
  184. package/dist/server/drivers/pooledControlStores.pg.test.js.map +1 -1
  185. package/dist/server/drivers/pooledIdentityStore.pg.test.js +1 -0
  186. package/dist/server/drivers/pooledIdentityStore.pg.test.js.map +1 -1
  187. package/dist/server/drivers/retentionPolicy.pg.test.js +1 -0
  188. package/dist/server/drivers/retentionPolicy.pg.test.js.map +1 -1
  189. package/dist/server/guard/argon2Binding.d.ts +1 -1
  190. package/dist/server/guard/argon2Binding.js +1 -1
  191. package/dist/server/incidents/store.d.ts +3 -3
  192. package/dist/server/index.js +1 -1
  193. package/dist/server/index.js.map +1 -1
  194. package/dist/server/master-lock/masterLock.d.ts +1 -1
  195. package/dist/server/media-bun/index.js +1 -1
  196. package/dist/server/media-bun/index.js.map +1 -1
  197. package/dist/server/paths/appDataHome.d.ts +20 -0
  198. package/dist/server/paths/appDataHome.d.ts.map +1 -0
  199. package/dist/server/paths/appDataHome.js +69 -0
  200. package/dist/server/paths/appDataHome.js.map +1 -0
  201. package/dist/server/retention/archive.d.ts +3 -4
  202. package/dist/server/retention/archive.d.ts.map +1 -1
  203. package/dist/server/retention/archive.js +20 -15
  204. package/dist/server/retention/archive.js.map +1 -1
  205. package/dist/server/retention/index.d.ts +1 -1
  206. package/dist/server/retention/index.js +1 -1
  207. package/dist/server/retention/policy.d.ts +2 -2
  208. package/dist/server/retention/policy.d.ts.map +1 -1
  209. package/dist/server/retention/policy.js +1 -1
  210. package/dist/server/retention/store.d.ts.map +1 -1
  211. package/dist/server/retention/store.js +27 -20
  212. package/dist/server/retention/store.js.map +1 -1
  213. package/dist/server/runtime/localHost.d.ts +10 -5
  214. package/dist/server/runtime/localHost.d.ts.map +1 -1
  215. package/dist/server/runtime/localHost.js +12 -8
  216. package/dist/server/runtime/localHost.js.map +1 -1
  217. package/dist/server/runtime/meterRollup.pg.test.js +1 -0
  218. package/dist/server/runtime/meterRollup.pg.test.js.map +1 -1
  219. package/dist/server/runtime/recipe.d.ts +4 -4
  220. package/dist/server/runtime/retentionJob.pg.test.js +1 -0
  221. package/dist/server/runtime/retentionJob.pg.test.js.map +1 -1
  222. package/dist/server/search/pgSearchProvider.pg.test.js +1 -0
  223. package/dist/server/search/pgSearchProvider.pg.test.js.map +1 -1
  224. package/dist/shared/errors.d.ts +1 -1
  225. package/dist/shared/errors.js +1 -1
  226. package/dist/styles-static.css +391 -0
  227. package/dist/styles.css +27 -0
  228. package/package.json +19 -167
  229. package/scripts/generateStaticStyles.ts +122 -0
  230. package/scripts/publicSurface.ts +455 -0
  231. package/scripts/testTmpRoot.ts +34 -5
  232. package/src/client/index.ts +1 -1
  233. package/src/core/category/index.ts +2 -1
  234. package/src/core/category/types.ts +1 -1
  235. package/src/core/file-tree/fileTreeModel.spec.ts +134 -0
  236. package/src/core/file-tree/fileTreeModel.ts +104 -0
  237. package/src/core/layout/index.ts +1 -1
  238. package/src/core/media/index.ts +1 -1
  239. package/src/core/media/types.ts +1 -1
  240. package/src/core/media/uploadLimits.ts +1 -1
  241. package/src/core/sharing/model.ts +1 -1
  242. package/src/ctgr/index.ts +1 -1
  243. package/src/declaredDepsAreImported.spec.ts +87 -0
  244. package/src/demoFixture.spec.ts +133 -0
  245. package/src/index.ts +1 -1
  246. package/src/lockfileIsTracked.spec.ts +50 -0
  247. package/src/namedSubpathsResolve.spec.ts +119 -0
  248. package/src/publicSurface.spec.ts +72 -0
  249. package/src/react/activity-bar/ActivityBar.tsx +17 -0
  250. package/src/react/analytics/index.ts +1 -1
  251. package/src/react/chat/MessageComposer.tsx +5 -4
  252. package/src/react/components/Button.tsx +3 -2
  253. package/src/react/components/Checkbox.spec.tsx +51 -0
  254. package/src/react/components/Checkbox.tsx +68 -26
  255. package/src/react/components/CodeArea.tsx +2 -1
  256. package/src/react/components/CodeChip.spec.tsx +2 -2
  257. package/src/react/components/Collapsible.tsx +2 -1
  258. package/src/react/components/ComboboxField.tsx +3 -2
  259. package/src/react/components/CopyButton.tsx +2 -1
  260. package/src/react/components/CopyableText.spec.tsx +1 -1
  261. package/src/react/components/DataTable/ColumnChecklist.tsx +2 -1
  262. package/src/react/components/DataTable/Pagination.tsx +2 -1
  263. package/src/react/components/DataTable/SortHeader.tsx +2 -1
  264. package/src/react/components/DataTable/{FilterBuilder.tsx → TableFilterBuilder.tsx} +33 -5
  265. package/src/react/components/DataTable/Toolbar.tsx +3 -3
  266. package/src/react/components/DataTable/cells/LinkCell.tsx +2 -1
  267. package/src/react/components/DataTable/index.ts +8 -1
  268. package/src/react/components/DragHandle.tsx +2 -1
  269. package/src/react/components/EmojiField.tsx +2 -1
  270. package/src/react/components/EventTimeline.tsx +3 -2
  271. package/src/react/components/FileLocation.spec.tsx +1 -1
  272. package/src/react/components/IconButton.tsx +1 -1
  273. package/src/react/components/InfoHint.tsx +5 -4
  274. package/src/react/components/InheritBadge.tsx +1 -1
  275. package/src/react/components/InlineEditableText.tsx +2 -1
  276. package/src/react/components/MeterList.tsx +2 -1
  277. package/src/react/components/PathText.tsx +4 -3
  278. package/src/react/components/RatingField.tsx +2 -1
  279. package/src/react/components/SecretInput.tsx +3 -3
  280. package/src/react/components/SegmentedControl.tsx +2 -2
  281. package/src/react/components/StarRating.spec.tsx +2 -2
  282. package/src/react/components/StarRating.tsx +9 -5
  283. package/src/react/components/StatStrip.tsx +2 -1
  284. package/src/react/components/StatTile.tsx +3 -3
  285. package/src/react/components/Tabs.spec.tsx +3 -2
  286. package/src/react/components/Tabs.tsx +2 -1
  287. package/src/react/components/TruncatedText.tsx +2 -1
  288. package/src/react/components/calendar/MonthGrid.spec.tsx +2 -1
  289. package/src/react/components/calendar/MonthGrid.tsx +2 -1
  290. package/src/react/components/calendar/WeekView.tsx +2 -1
  291. package/src/react/components/revealOnHover.ts +3 -2
  292. package/src/react/file-tree/FileTree.spec.tsx +248 -0
  293. package/src/react/file-tree/FileTree.tsx +304 -4
  294. package/src/react/file-tree/fileTree.css +52 -0
  295. package/src/react/file-tree/fileTreeGeometry.fixture.json +151 -0
  296. package/src/react/file-tree/fileTreeGeometry.spec.ts +33 -52
  297. package/src/react/filter-rail/FilterRail.spec.tsx +2 -1
  298. package/src/react/filter-rail/FilterRail.tsx +5 -4
  299. package/src/react/folder-tree/FolderTreeRail.tsx +2 -1
  300. package/src/react/index.ts +13 -3
  301. package/src/react/layoutEngine/index.ts +1 -1
  302. package/src/react/layoutEngine/types.ts +1 -1
  303. package/src/react/lib/field.ts +4 -2
  304. package/src/react/lib/floatingStyles.spec.ts +2 -1
  305. package/src/react/lib/floatingStyles.ts +3 -1
  306. package/src/react/lib/tapTarget.ts +100 -0
  307. package/src/react/media/MaskPainter.tsx +2 -2
  308. package/src/react/media/VideoTrimmer.tsx +1 -1
  309. package/src/react/media/denseGallery.css +3 -3
  310. package/src/react/media/ffmpegWasm.ts +2 -2
  311. package/src/react/media/videoPlayer.css +42 -0
  312. package/src/react/namespace/NamespaceTargetCapsule.tsx +2 -2
  313. package/src/react/nav/BreadcrumbTrail.tsx +4 -3
  314. package/src/react/nav/HubTileGrid.tsx +2 -1
  315. package/src/react/nav/SideNav.tsx +4 -3
  316. package/src/react/nav/SideNavCustomize.tsx +2 -1
  317. package/src/react/palette/CommandPalette.tsx +3 -2
  318. package/src/server/ctgr.ts +1 -1
  319. package/src/server/drivers/pooledControlStores.pg.test.ts +1 -0
  320. package/src/server/drivers/pooledIdentityStore.pg.test.ts +1 -0
  321. package/src/server/drivers/retentionPolicy.pg.test.ts +1 -0
  322. package/src/server/guard/argon2Binding.ts +1 -1
  323. package/src/server/incidents/store.ts +3 -3
  324. package/src/server/index.ts +1 -1
  325. package/src/server/master-lock/masterLock.spec.ts +18 -2
  326. package/src/server/master-lock/masterLock.ts +1 -1
  327. package/src/server/media-bun/image.spec.ts +1 -0
  328. package/src/server/media-bun/index.ts +1 -1
  329. package/src/server/media-bun/video.spec.ts +1 -0
  330. package/src/server/paths/appDataHome.spec.ts +87 -0
  331. package/src/server/paths/appDataHome.ts +84 -0
  332. package/src/server/retention/archive.spec.ts +26 -4
  333. package/src/server/retention/archive.ts +20 -15
  334. package/src/server/retention/index.ts +1 -1
  335. package/src/server/retention/policy.ts +2 -2
  336. package/src/server/retention/store.spec.ts +38 -10
  337. package/src/server/retention/store.ts +26 -19
  338. package/src/server/runtime/localHost.spec.ts +22 -3
  339. package/src/server/runtime/localHost.ts +12 -9
  340. package/src/server/runtime/meterRollup.pg.test.ts +1 -0
  341. package/src/server/runtime/recipe.ts +4 -4
  342. package/src/server/runtime/retentionJob.pg.test.ts +1 -0
  343. package/src/server/search/pgSearchProvider.pg.test.ts +1 -0
  344. package/src/server/storage/binaryServerProcessing.integration.spec.ts +6 -2
  345. package/src/server/storage/chunked.integration.spec.ts +5 -2
  346. package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +5 -2
  347. package/src/server/storage/files/adapter.photo.display.spec.ts +1 -0
  348. package/src/server/storage/imageThumbnail.spec.ts +1 -0
  349. package/src/server/storage/transcode.integration.spec.ts +5 -2
  350. package/src/server/storage/videoProcessor.posterOnly.spec.ts +1 -0
  351. package/src/shared/errors.ts +1 -1
  352. package/src/skippedTestsAreAnswered.spec.ts +215 -0
  353. package/src/styles-static.css +391 -0
  354. package/src/styles.css +27 -0
  355. package/src/stylesStaticMatches.spec.ts +134 -0
  356. package/src/tapTargetStylesheet.spec.ts +150 -0
  357. package/src/testTmpRoot.spec.ts +102 -0
  358. package/dist/core/duplicates/index.d.ts +0 -116
  359. package/dist/core/duplicates/index.d.ts.map +0 -1
  360. package/dist/core/duplicates/index.js +0 -178
  361. package/dist/core/duplicates/index.js.map +0 -1
  362. package/dist/core/namespace/helpers.d.ts +0 -14
  363. package/dist/core/namespace/helpers.d.ts.map +0 -1
  364. package/dist/core/namespace/helpers.js +0 -29
  365. package/dist/core/namespace/helpers.js.map +0 -1
  366. package/dist/core/namespace/index.d.ts +0 -4
  367. package/dist/core/namespace/index.d.ts.map +0 -1
  368. package/dist/core/namespace/index.js +0 -6
  369. package/dist/core/namespace/index.js.map +0 -1
  370. package/dist/core/namespace/memoryStore.d.ts +0 -19
  371. package/dist/core/namespace/memoryStore.d.ts.map +0 -1
  372. package/dist/core/namespace/memoryStore.js +0 -70
  373. package/dist/core/namespace/memoryStore.js.map +0 -1
  374. package/dist/core/namespace/types.d.ts +0 -44
  375. package/dist/core/namespace/types.d.ts.map +0 -1
  376. package/dist/core/namespace/types.js +0 -8
  377. package/dist/core/namespace/types.js.map +0 -1
  378. package/dist/game/core/DisposeRegistry.d.ts +0 -42
  379. package/dist/game/core/DisposeRegistry.d.ts.map +0 -1
  380. package/dist/game/core/DisposeRegistry.js +0 -67
  381. package/dist/game/core/DisposeRegistry.js.map +0 -1
  382. package/dist/game/core/drawBudget.d.ts +0 -26
  383. package/dist/game/core/drawBudget.d.ts.map +0 -1
  384. package/dist/game/core/drawBudget.js +0 -55
  385. package/dist/game/core/drawBudget.js.map +0 -1
  386. package/dist/game/core/fixedTimestep.d.ts +0 -38
  387. package/dist/game/core/fixedTimestep.d.ts.map +0 -1
  388. package/dist/game/core/fixedTimestep.js +0 -47
  389. package/dist/game/core/fixedTimestep.js.map +0 -1
  390. package/dist/game/core/index.d.ts +0 -9
  391. package/dist/game/core/index.d.ts.map +0 -1
  392. package/dist/game/core/index.js +0 -8
  393. package/dist/game/core/index.js.map +0 -1
  394. package/dist/game/core/inputCollector.d.ts +0 -82
  395. package/dist/game/core/inputCollector.d.ts.map +0 -1
  396. package/dist/game/core/inputCollector.js +0 -176
  397. package/dist/game/core/inputCollector.js.map +0 -1
  398. package/dist/game/core/resizeCanvas.d.ts +0 -19
  399. package/dist/game/core/resizeCanvas.d.ts.map +0 -1
  400. package/dist/game/core/resizeCanvas.js +0 -29
  401. package/dist/game/core/resizeCanvas.js.map +0 -1
  402. package/dist/game/react/index.d.ts +0 -3
  403. package/dist/game/react/index.d.ts.map +0 -1
  404. package/dist/game/react/index.js +0 -5
  405. package/dist/game/react/index.js.map +0 -1
  406. package/dist/game/react/useGameEngine.d.ts +0 -64
  407. package/dist/game/react/useGameEngine.d.ts.map +0 -1
  408. package/dist/game/react/useGameEngine.js +0 -78
  409. package/dist/game/react/useGameEngine.js.map +0 -1
  410. package/dist/react/canvas/CanvasNavHUD.d.ts +0 -64
  411. package/dist/react/canvas/CanvasNavHUD.d.ts.map +0 -1
  412. package/dist/react/canvas/CanvasNavHUD.js +0 -58
  413. package/dist/react/canvas/CanvasNavHUD.js.map +0 -1
  414. package/dist/react/canvas/fitLabel.d.ts +0 -53
  415. package/dist/react/canvas/fitLabel.d.ts.map +0 -1
  416. package/dist/react/canvas/fitLabel.js +0 -104
  417. package/dist/react/canvas/fitLabel.js.map +0 -1
  418. package/dist/react/canvas/index.d.ts +0 -4
  419. package/dist/react/canvas/index.d.ts.map +0 -1
  420. package/dist/react/canvas/index.js +0 -4
  421. package/dist/react/canvas/index.js.map +0 -1
  422. package/dist/react/canvas/lod.d.ts +0 -40
  423. package/dist/react/canvas/lod.d.ts.map +0 -1
  424. package/dist/react/canvas/lod.js +0 -37
  425. package/dist/react/canvas/lod.js.map +0 -1
  426. package/dist/react/components/DataTable/FilterBuilder.d.ts +0 -38
  427. package/dist/react/components/DataTable/FilterBuilder.d.ts.map +0 -1
  428. package/dist/react/components/DataTable/FilterBuilder.js.map +0 -1
  429. package/dist/react/seo/HeadProvider.d.ts +0 -14
  430. package/dist/react/seo/HeadProvider.d.ts.map +0 -1
  431. package/dist/react/seo/HeadProvider.js +0 -44
  432. package/dist/react/seo/HeadProvider.js.map +0 -1
  433. package/dist/react/seo/applyHeadToDocument.d.ts +0 -3
  434. package/dist/react/seo/applyHeadToDocument.d.ts.map +0 -1
  435. package/dist/react/seo/applyHeadToDocument.js +0 -66
  436. package/dist/react/seo/applyHeadToDocument.js.map +0 -1
  437. package/dist/react/seo/index.d.ts +0 -3
  438. package/dist/react/seo/index.d.ts.map +0 -1
  439. package/dist/react/seo/index.js +0 -7
  440. package/dist/react/seo/index.js.map +0 -1
  441. package/dist/react/timeline/ClipView.d.ts +0 -29
  442. package/dist/react/timeline/ClipView.d.ts.map +0 -1
  443. package/dist/react/timeline/ClipView.js +0 -53
  444. package/dist/react/timeline/ClipView.js.map +0 -1
  445. package/dist/react/timeline/Playhead.d.ts +0 -16
  446. package/dist/react/timeline/Playhead.d.ts.map +0 -1
  447. package/dist/react/timeline/Playhead.js +0 -26
  448. package/dist/react/timeline/Playhead.js.map +0 -1
  449. package/dist/react/timeline/TimeRuler.d.ts +0 -21
  450. package/dist/react/timeline/TimeRuler.d.ts.map +0 -1
  451. package/dist/react/timeline/TimeRuler.js +0 -31
  452. package/dist/react/timeline/TimeRuler.js.map +0 -1
  453. package/dist/react/timeline/TimelineSurface.d.ts +0 -29
  454. package/dist/react/timeline/TimelineSurface.d.ts.map +0 -1
  455. package/dist/react/timeline/TimelineSurface.js +0 -56
  456. package/dist/react/timeline/TimelineSurface.js.map +0 -1
  457. package/dist/react/timeline/TrackLane.d.ts +0 -31
  458. package/dist/react/timeline/TrackLane.d.ts.map +0 -1
  459. package/dist/react/timeline/TrackLane.js +0 -32
  460. package/dist/react/timeline/TrackLane.js.map +0 -1
  461. package/dist/react/timeline/index.d.ts +0 -6
  462. package/dist/react/timeline/index.d.ts.map +0 -1
  463. package/dist/react/timeline/index.js +0 -12
  464. package/dist/react/timeline/index.js.map +0 -1
  465. package/dist/server/private-media/index.d.ts +0 -7
  466. package/dist/server/private-media/index.d.ts.map +0 -1
  467. package/dist/server/private-media/index.js +0 -13
  468. package/dist/server/private-media/index.js.map +0 -1
  469. package/dist/server/seo/index.d.ts +0 -3
  470. package/dist/server/seo/index.d.ts.map +0 -1
  471. package/dist/server/seo/index.js +0 -6
  472. package/dist/server/seo/index.js.map +0 -1
  473. package/dist/server/seo/mountSeoRoutes.d.ts +0 -9
  474. package/dist/server/seo/mountSeoRoutes.d.ts.map +0 -1
  475. package/dist/server/seo/mountSeoRoutes.js +0 -19
  476. package/dist/server/seo/mountSeoRoutes.js.map +0 -1
  477. package/dist/server/seo/serveHeadInjectedIndex.d.ts +0 -9
  478. package/dist/server/seo/serveHeadInjectedIndex.d.ts.map +0 -1
  479. package/dist/server/seo/serveHeadInjectedIndex.js +0 -20
  480. package/dist/server/seo/serveHeadInjectedIndex.js.map +0 -1
  481. package/dist/upload.d.ts +0 -148
  482. package/dist/upload.d.ts.map +0 -1
  483. package/dist/upload.js +0 -159
  484. package/dist/upload.js.map +0 -1
  485. package/dist/verify/runtime/index.d.ts +0 -16
  486. package/dist/verify/runtime/index.d.ts.map +0 -1
  487. package/dist/verify/runtime/index.js +0 -16
  488. package/dist/verify/runtime/index.js.map +0 -1
  489. package/scripts/demoCheck.ts +0 -42
  490. package/src/core/duplicates/index.spec.ts +0 -116
  491. package/src/core/duplicates/index.ts +0 -203
  492. package/src/core/namespace/helpers.ts +0 -31
  493. package/src/core/namespace/index.ts +0 -12
  494. package/src/core/namespace/memoryStore.ts +0 -77
  495. package/src/core/namespace/namespace.spec.ts +0 -117
  496. package/src/core/namespace/types.ts +0 -53
  497. package/src/game/core/DisposeRegistry.spec.ts +0 -53
  498. package/src/game/core/DisposeRegistry.ts +0 -70
  499. package/src/game/core/drawBudget.spec.ts +0 -51
  500. package/src/game/core/drawBudget.ts +0 -75
  501. package/src/game/core/fixedTimestep.spec.ts +0 -91
  502. package/src/game/core/fixedTimestep.ts +0 -79
  503. package/src/game/core/index.ts +0 -16
  504. package/src/game/core/inputCollector.spec.ts +0 -29
  505. package/src/game/core/inputCollector.ts +0 -245
  506. package/src/game/core/resizeCanvas.ts +0 -31
  507. package/src/game/react/index.ts +0 -10
  508. package/src/game/react/useGameEngine.ts +0 -125
  509. package/src/react/canvas/CanvasNavHUD.spec.tsx +0 -62
  510. package/src/react/canvas/CanvasNavHUD.tsx +0 -210
  511. package/src/react/canvas/fitLabel.spec.ts +0 -82
  512. package/src/react/canvas/fitLabel.ts +0 -150
  513. package/src/react/canvas/index.ts +0 -15
  514. package/src/react/canvas/lod.ts +0 -53
  515. package/src/react/seo/HeadProvider.tsx +0 -67
  516. package/src/react/seo/applyHeadToDocument.ts +0 -73
  517. package/src/react/seo/index.ts +0 -12
  518. package/src/react/seo/seo.spec.tsx +0 -101
  519. package/src/react/timeline/ClipView.tsx +0 -146
  520. package/src/react/timeline/Playhead.tsx +0 -63
  521. package/src/react/timeline/TimeRuler.tsx +0 -85
  522. package/src/react/timeline/TimelineSurface.tsx +0 -157
  523. package/src/react/timeline/TrackLane.tsx +0 -87
  524. package/src/react/timeline/index.ts +0 -12
  525. package/src/react/timeline/timeline.spec.tsx +0 -175
  526. package/src/server/private-media/index.ts +0 -45
  527. package/src/server/seo/index.ts +0 -8
  528. package/src/server/seo/mountSeoRoutes.ts +0 -37
  529. package/src/server/seo/seo.spec.ts +0 -128
  530. package/src/server/seo/serveHeadInjectedIndex.ts +0 -36
  531. package/src/upload.spec.ts +0 -300
  532. package/src/upload.ts +0 -288
  533. package/src/verify/runtime/index.ts +0 -64
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../../src/core/namespace/memoryStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAkB,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGrG;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,MAAM,MAAkC,EACnD,GAAG,GAAE,MAAM,MAAyB;YAmB1B,SAAS,EAAE;kBAOL,oBAAoB,GAAG,SAAS;eAgBnC,MAAM,SAAS,oBAAoB,GAAG,SAAS;eAc/C,MAAM,GAAG,IAAI;EAI3B"}
@@ -1,70 +0,0 @@
1
- import { nextHue, normalizeNamespaceLabel } from './helpers';
2
- /**
3
- * Zero-config in-memory {@link NamespaceStore}: a single per-boot `Map`, so a
4
- * host that wires nothing up still gets a working (non-persistent) namespace
5
- * list — the same role `createMemoryCategoryStore` plays. Swap in a
6
- * persistent store (f's `createSqliteNamespaceStore`) for real data.
7
- *
8
- * Deliberately not annotated `: NamespaceStore` — the interface allows async
9
- * returns, which would force callers (and these tests) to `await` values that
10
- * are always synchronous here. Structural typing keeps it assignable wherever
11
- * a `NamespaceStore` is expected.
12
- */
13
- export function createMemoryNamespaceStore(idFactory = () => crypto.randomUUID(), now = () => Date.now()) {
14
- const byId = new Map();
15
- const requireNamespace = (id) => {
16
- const ns = byId.get(id);
17
- if (!ns)
18
- throw new Error(`no namespace with id ${id}`);
19
- return ns;
20
- };
21
- const nextOrd = () => {
22
- let max = -1;
23
- for (const ns of byId.values()) {
24
- if (ns.ord > max)
25
- max = ns.ord;
26
- }
27
- return max + 1;
28
- };
29
- return {
30
- list() {
31
- return [...byId.values()].sort((a, b) => {
32
- if (a.archived !== b.archived)
33
- return a.archived ? 1 : -1;
34
- return a.ord - b.ord;
35
- });
36
- },
37
- create(input) {
38
- const existing = [...byId.values()];
39
- const timestamp = now();
40
- const namespace = {
41
- id: idFactory(),
42
- label: normalizeNamespaceLabel(input.label),
43
- hue: input.hue ?? nextHue(existing),
44
- ord: nextOrd(),
45
- archived: false,
46
- createdAt: timestamp,
47
- updatedAt: timestamp,
48
- };
49
- byId.set(namespace.id, namespace);
50
- return namespace;
51
- },
52
- update(id, input) {
53
- const ns = requireNamespace(id);
54
- const updated = {
55
- ...ns,
56
- label: input.label !== undefined ? normalizeNamespaceLabel(input.label) : ns.label,
57
- hue: input.hue ?? ns.hue,
58
- ord: input.ord ?? ns.ord,
59
- archived: input.archived ?? ns.archived,
60
- updatedAt: now(),
61
- };
62
- byId.set(id, updated);
63
- return updated;
64
- },
65
- remove(id) {
66
- byId.delete(id);
67
- },
68
- };
69
- }
70
- //# sourceMappingURL=memoryStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoryStore.js","sourceRoot":"","sources":["../../../src/core/namespace/memoryStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,YAA0B,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EACnD,MAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IAEpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE1C,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAa,EAAE;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAW,EAAE;QAC3B,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG;gBAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO;QACL,IAAI;YACF,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;oBAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,KAA2B;YAChC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,SAAS,GAAc;gBAC3B,EAAE,EAAE,SAAS,EAAE;gBACf,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC3C,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;gBACnC,GAAG,EAAE,OAAO,EAAE;gBACd,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;aACrB,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,EAAU,EAAE,KAA2B;YAC5C,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,OAAO,GAAc;gBACzB,GAAG,EAAE;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;gBAClF,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;gBACxB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ;gBACvC,SAAS,EAAE,GAAG,EAAE;aACjB,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACtB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,CAAC,EAAU;YACf,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,44 +0,0 @@
1
- /** A single namespace (colorway-tagged workspace). Namespaces are flat — no
2
- * parent/child nesting, unlike `Category`. `hue` (0–359) is the colorway seed
3
- * the UI derives all tints from. `ord` sorts non-archived namespaces
4
- * ascending; archived namespaces always sort after non-archived ones. */
5
- export interface Namespace {
6
- id: string;
7
- label: string;
8
- hue: number;
9
- ord: number;
10
- archived: boolean;
11
- createdAt: number;
12
- updatedAt: number;
13
- }
14
- /** Fields a caller supplies when creating a namespace — the store assigns
15
- * `id`, timestamps, and a default `hue`/`ord` when omitted. */
16
- export interface NamespaceCreateInput {
17
- label: string;
18
- hue?: number;
19
- }
20
- /** Fields a caller supplies when updating a namespace — all optional, only
21
- * the provided fields change. */
22
- export interface NamespaceUpdateInput {
23
- label?: string;
24
- hue?: number;
25
- ord?: number;
26
- archived?: boolean;
27
- }
28
- /**
29
- * Storage-agnostic namespace store. The host injects a real implementation
30
- * (f backs it with SQLite, per-role); {@link createMemoryNamespaceStore} is
31
- * the zero-config in-memory default.
32
- *
33
- * `remove` is a hard delete and is only legal when the caller has already
34
- * verified no rows reference the namespace — callers should archive instead
35
- * in the common case. A host-backed store enforces this by throwing when
36
- * references still exist.
37
- */
38
- export interface NamespaceStore {
39
- list(): Namespace[] | Promise<Namespace[]>;
40
- create(input: NamespaceCreateInput): Namespace | Promise<Namespace>;
41
- update(id: string, input: NamespaceUpdateInput): Namespace | Promise<Namespace>;
42
- remove(id: string): void | Promise<void>;
43
- }
44
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/namespace/types.ts"],"names":[],"mappings":"AAOA;;;yEAGyE;AACzE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;+DAC+D;AAC/D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;iCACiC;AACjC,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACpE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAChF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C"}
@@ -1,8 +0,0 @@
1
- // `cursedbelt/namespace` — a reusable, flat namespace/workspace model shared
2
- // across content plugins (notes today; aliases/… later, see ns-03). React-free
3
- // and storage-agnostic: the pure `Namespace` data + a host-injected
4
- // `NamespaceStore` contract, mirroring `cursedbelt/category`'s split between a
5
- // pure contract and a host-backed (SQLite) implementation. Importing this
6
- // module on a server never pulls React.
7
- export {};
8
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/namespace/types.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,+EAA+E;AAC/E,oEAAoE;AACpE,+EAA+E;AAC/E,0EAA0E;AAC1E,wCAAwC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * A LIFO cleanup registry for game-engine resources (event listeners, rAF ids,
3
- * WebGL contexts, audio nodes, timers). The single source of truth that replaces
4
- * the per-game `DisposeRegistry` copies the apps each hand-rolled.
5
- *
6
- * A factory registers every resource it allocates with {@link DisposeRegistry.add};
7
- * on unmount the host hook calls {@link DisposeRegistry.disposeAll}, which runs every
8
- * cleanup in reverse registration order — the same ordering React uses for nested
9
- * effect cleanups, so resources tear down in the opposite order they were built.
10
- *
11
- * @example
12
- * ```ts
13
- * const registry = new DisposeRegistry();
14
- * const id = requestAnimationFrame(loop);
15
- * registry.add(() => cancelAnimationFrame(id));
16
- * canvas.addEventListener('pointermove', onMove);
17
- * registry.add(() => canvas.removeEventListener('pointermove', onMove));
18
- * // later, on unmount:
19
- * registry.disposeAll(); // cancels rAF, removes the listener — in reverse order
20
- * ```
21
- */
22
- export declare class DisposeRegistry {
23
- private cleanups;
24
- private disposed;
25
- /**
26
- * Register a cleanup. If the registry has already been disposed (e.g. an async
27
- * factory resolved after unmount and registered a late listener), the cleanup runs
28
- * immediately so the resource can never leak.
29
- */
30
- add(fn: () => void): void;
31
- /** Number of pending cleanups (handy for tests / leak assertions). */
32
- get size(): number;
33
- /** Whether {@link disposeAll} has run. */
34
- get isDisposed(): boolean;
35
- /**
36
- * Run every registered cleanup in reverse (LIFO) order, swallowing individual
37
- * errors so one failing cleanup can't strand the rest. Idempotent: the list is
38
- * cleared and the registry is permanently marked disposed.
39
- */
40
- disposeAll(): void;
41
- }
42
- //# sourceMappingURL=DisposeRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DisposeRegistry.d.ts","sourceRoot":"","sources":["../../../src/game/core/DisposeRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;OAIG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAQzB,sEAAsE;IACtE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0CAA0C;IAC1C,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;OAIG;IACH,UAAU,IAAI,IAAI;CAQnB"}
@@ -1,67 +0,0 @@
1
- /**
2
- * A LIFO cleanup registry for game-engine resources (event listeners, rAF ids,
3
- * WebGL contexts, audio nodes, timers). The single source of truth that replaces
4
- * the per-game `DisposeRegistry` copies the apps each hand-rolled.
5
- *
6
- * A factory registers every resource it allocates with {@link DisposeRegistry.add};
7
- * on unmount the host hook calls {@link DisposeRegistry.disposeAll}, which runs every
8
- * cleanup in reverse registration order — the same ordering React uses for nested
9
- * effect cleanups, so resources tear down in the opposite order they were built.
10
- *
11
- * @example
12
- * ```ts
13
- * const registry = new DisposeRegistry();
14
- * const id = requestAnimationFrame(loop);
15
- * registry.add(() => cancelAnimationFrame(id));
16
- * canvas.addEventListener('pointermove', onMove);
17
- * registry.add(() => canvas.removeEventListener('pointermove', onMove));
18
- * // later, on unmount:
19
- * registry.disposeAll(); // cancels rAF, removes the listener — in reverse order
20
- * ```
21
- */
22
- export class DisposeRegistry {
23
- cleanups = [];
24
- disposed = false;
25
- /**
26
- * Register a cleanup. If the registry has already been disposed (e.g. an async
27
- * factory resolved after unmount and registered a late listener), the cleanup runs
28
- * immediately so the resource can never leak.
29
- */
30
- add(fn) {
31
- if (this.disposed) {
32
- runSafely(fn);
33
- return;
34
- }
35
- this.cleanups.push(fn);
36
- }
37
- /** Number of pending cleanups (handy for tests / leak assertions). */
38
- get size() {
39
- return this.cleanups.length;
40
- }
41
- /** Whether {@link disposeAll} has run. */
42
- get isDisposed() {
43
- return this.disposed;
44
- }
45
- /**
46
- * Run every registered cleanup in reverse (LIFO) order, swallowing individual
47
- * errors so one failing cleanup can't strand the rest. Idempotent: the list is
48
- * cleared and the registry is permanently marked disposed.
49
- */
50
- disposeAll() {
51
- this.disposed = true;
52
- // Reverse order: the last resource allocated is the first torn down.
53
- for (let i = this.cleanups.length - 1; i >= 0; i--) {
54
- runSafely(this.cleanups[i]);
55
- }
56
- this.cleanups = [];
57
- }
58
- }
59
- function runSafely(fn) {
60
- try {
61
- fn();
62
- }
63
- catch (error) {
64
- console.error('DisposeRegistry: a cleanup threw and was swallowed', error);
65
- }
66
- }
67
- //# sourceMappingURL=DisposeRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DisposeRegistry.js","sourceRoot":"","sources":["../../../src/game/core/DisposeRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,eAAe;IAClB,QAAQ,GAAsB,EAAE,CAAC;IACjC,QAAQ,GAAG,KAAK,CAAC;IAEzB;;;;OAIG;IACH,GAAG,CAAC,EAAc;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,sEAAsE;IACtE,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,0CAA0C;IAC1C,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,qEAAqE;QACrE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AAED,SAAS,SAAS,CAAC,EAAc;IAC/B,IAAI,CAAC;QACH,EAAE,EAAE,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
@@ -1,26 +0,0 @@
1
- export interface DrawBudgetOptions {
2
- /** Frame-time budget target in frames per second (default `60`). */
3
- targetFps?: number;
4
- /** Rolling-average window in frames (default `30`). Larger = smoother, slower to react. */
5
- windowSize?: number;
6
- }
7
- export interface DrawBudget {
8
- /** Feed the wall-clock frame time (ms) each frame; updates `level` and `fps`. */
9
- record: (frameMs: number) => void;
10
- /**
11
- * Adaptive quality in `[0, 1]`: `1` = full quality, `0` = minimal. Games multiply
12
- * expensive feature counts (shadow res, particle count, draw distance) by this.
13
- * Drops quickly when behind, recovers slowly when there's headroom (hysteresis,
14
- * so one stray slow frame doesn't crater quality).
15
- */
16
- readonly level: number;
17
- /** Current rolling-average frames per second. */
18
- readonly fps: number;
19
- }
20
- /**
21
- * Adaptive draw-quality governor. Tracks a rolling average of frame times and exposes
22
- * a `level` games use to scale render cost so a struggling device stays responsive.
23
- * Replaces the duplicated per-game copies.
24
- */
25
- export declare function drawBudget(opts?: DrawBudgetOptions): DrawBudget;
26
- //# sourceMappingURL=drawBudget.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drawBudget.d.ts","sourceRoot":"","sources":["../../../src/game/core/drawBudget.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,iFAAiF;IACjF,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAQD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,iBAAsB,GAAG,UAAU,CAoCnE"}
@@ -1,55 +0,0 @@
1
- // Drop ~this fraction of `level` per frame, per multiple of target frame time over
2
- // budget. Recover this much per frame when comfortable. Asymmetric on purpose —
3
- // shed load fast, restore it gently — so quality doesn't oscillate.
4
- const DROP_COEFFICIENT = 0.05;
5
- const RECOVER_PER_FRAME = 0.01;
6
- /**
7
- * Adaptive draw-quality governor. Tracks a rolling average of frame times and exposes
8
- * a `level` games use to scale render cost so a struggling device stays responsive.
9
- * Replaces the duplicated per-game copies.
10
- */
11
- export function drawBudget(opts = {}) {
12
- const { targetFps = 60, windowSize = 30 } = opts;
13
- const targetMs = 1000 / targetFps;
14
- const samples = [];
15
- let sum = 0;
16
- let avgMs = targetMs;
17
- let level = 1;
18
- return {
19
- record(frameMs) {
20
- if (!Number.isFinite(frameMs) || frameMs < 0)
21
- return;
22
- samples.push(frameMs);
23
- sum += frameMs;
24
- if (samples.length > windowSize)
25
- sum -= samples.shift();
26
- avgMs = sum / samples.length;
27
- // headroom > 0 → comfortably under budget; < 0 → behind.
28
- const headroom = targetMs - avgMs;
29
- if (headroom < 0) {
30
- // How many target-frames behind we are scales the drop; far behind drops fast.
31
- level += (headroom / targetMs) * DROP_COEFFICIENT;
32
- }
33
- else {
34
- level += RECOVER_PER_FRAME;
35
- }
36
- level = clamp01(level);
37
- },
38
- get level() {
39
- return level;
40
- },
41
- get fps() {
42
- if (samples.length === 0)
43
- return targetFps; // nothing recorded yet → report the target
44
- return avgMs > 0 ? 1000 / avgMs : targetFps;
45
- },
46
- };
47
- }
48
- function clamp01(value) {
49
- if (value < 0)
50
- return 0;
51
- if (value > 1)
52
- return 1;
53
- return value;
54
- }
55
- //# sourceMappingURL=drawBudget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drawBudget.js","sourceRoot":"","sources":["../../../src/game/core/drawBudget.ts"],"names":[],"mappings":"AAqBA,mFAAmF;AACnF,gFAAgF;AAChF,oEAAoE;AACpE,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B,EAAE;IACrD,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IAElC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO;QACL,MAAM,CAAC,OAAe;YACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO;YAErD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,GAAG,IAAI,OAAO,CAAC;YACf,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU;gBAAE,GAAG,IAAI,OAAO,CAAC,KAAK,EAAY,CAAC;YAClE,KAAK,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YAE7B,yDAAyD;YACzD,MAAM,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;YAClC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,+EAA+E;gBAC/E,KAAK,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,gBAAgB,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,iBAAiB,CAAC;YAC7B,CAAC;YACD,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,GAAG;YACL,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC,CAAC,2CAA2C;YACvF,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,38 +0,0 @@
1
- export interface FixedTimestepOptions {
2
- /** Update rate in Hz (e.g. 60 → a fixed 1/60 s simulation step). */
3
- hz: number;
4
- /**
5
- * Called zero or more times per frame with the fixed timestep in **seconds**
6
- * (e.g. `1/60 ≈ 0.0167`). Drive all simulation/physics from this `dt` so behavior
7
- * is frame-rate independent.
8
- */
9
- onUpdate: (dt: number) => void;
10
- /**
11
- * Called exactly once per frame with the interpolation factor `alpha` in `[0, 1)`
12
- * — the fraction of a step the accumulator is into the next update. Render the
13
- * visual state as `lerp(prev, current, alpha)` for smooth motion between updates.
14
- */
15
- onRender: (alpha: number) => void;
16
- /**
17
- * Maximum simulation steps per frame (default `5`). The "spiral of death" guard:
18
- * without it, a tab backgrounded for 5 s would try to simulate hundreds of steps
19
- * in one frame and lock the thread. When the cap is hit the leftover backlog is
20
- * dropped (time is sacrificed to keep the frame responsive).
21
- */
22
- maxCatchup?: number;
23
- }
24
- export interface FixedTimestep {
25
- /** Advance by the wall-clock delta since the previous frame, in **milliseconds**. */
26
- step: (deltaMs: number) => void;
27
- /** Clear the accumulator — call after a pause/resume so the gap isn't simulated. */
28
- reset: () => void;
29
- }
30
- /**
31
- * Creates a fixed-timestep accumulator: the canonical decoupling of a fixed-rate
32
- * simulation from a variable-rate render. Call {@link FixedTimestep.step} once per
33
- * animation frame with the wall-clock delta; it invokes `onUpdate(dt)` zero or more
34
- * times with the fixed `dt`, then `onRender(alpha)` once with the interpolation
35
- * factor. Replaces the verbatim copies the apps each carried per game.
36
- */
37
- export declare function createFixedTimestep(opts: FixedTimestepOptions): FixedTimestep;
38
- //# sourceMappingURL=fixedTimestep.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixedTimestep.d.ts","sourceRoot":"","sources":["../../../src/game/core/fixedTimestep.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oFAAoF;IACpF,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAwC7E"}
@@ -1,47 +0,0 @@
1
- /**
2
- * Creates a fixed-timestep accumulator: the canonical decoupling of a fixed-rate
3
- * simulation from a variable-rate render. Call {@link FixedTimestep.step} once per
4
- * animation frame with the wall-clock delta; it invokes `onUpdate(dt)` zero or more
5
- * times with the fixed `dt`, then `onRender(alpha)` once with the interpolation
6
- * factor. Replaces the verbatim copies the apps each carried per game.
7
- */
8
- export function createFixedTimestep(opts) {
9
- const { hz, onUpdate, onRender, maxCatchup = 5 } = opts;
10
- if (!(hz > 0))
11
- throw new Error(`createFixedTimestep: hz must be > 0 (got ${hz})`);
12
- const stepMs = 1000 / hz;
13
- const stepSeconds = stepMs / 1000;
14
- // Repeated `accumulator -= stepMs` accrues float error, so an exact integer multiple
15
- // (e.g. 100ms at 60hz = 6 steps) can fall a rounding-bit short of the final step.
16
- // A tiny epsilon recovers the mathematically-correct count without ever firing a
17
- // spurious step (a real sub-step delta is never within 1e-9 ms of the boundary).
18
- const threshold = stepMs - 1e-9;
19
- let accumulator = 0;
20
- return {
21
- step(deltaMs) {
22
- // Guard against NaN, negatives, and the huge delta after a backgrounded tab.
23
- if (!Number.isFinite(deltaMs) || deltaMs < 0)
24
- deltaMs = 0;
25
- accumulator += deltaMs;
26
- let steps = 0;
27
- while (accumulator >= threshold && steps < maxCatchup) {
28
- onUpdate(stepSeconds);
29
- accumulator -= stepMs;
30
- steps++;
31
- }
32
- // Hit the catch-up cap with backlog remaining → drop it (spiral-of-death guard).
33
- if (steps >= maxCatchup && accumulator >= threshold) {
34
- accumulator = 0;
35
- }
36
- else if (accumulator < 0) {
37
- // Epsilon stepping can leave a sub-femtosecond negative residue; floor it.
38
- accumulator = 0;
39
- }
40
- onRender(accumulator / stepMs);
41
- },
42
- reset() {
43
- accumulator = 0;
44
- },
45
- };
46
- }
47
- //# sourceMappingURL=fixedTimestep.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixedTimestep.js","sourceRoot":"","sources":["../../../src/game/core/fixedTimestep.ts"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA0B;IAC5D,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;IAElF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,qFAAqF;IACrF,kFAAkF;IAClF,iFAAiF;IACjF,iFAAiF;IACjF,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,OAAO;QACL,IAAI,CAAC,OAAe;YAClB,6EAA6E;YAC7E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC,CAAC;YAC1D,WAAW,IAAI,OAAO,CAAC;YAEvB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,WAAW,IAAI,SAAS,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;gBACtD,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACtB,WAAW,IAAI,MAAM,CAAC;gBACtB,KAAK,EAAE,CAAC;YACV,CAAC;YAED,iFAAiF;YACjF,IAAI,KAAK,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;gBACpD,WAAW,GAAG,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC3B,2EAA2E;gBAC3E,WAAW,GAAG,CAAC,CAAC;YAClB,CAAC;YAED,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,KAAK;YACH,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,9 +0,0 @@
1
- export { DisposeRegistry } from './DisposeRegistry';
2
- export type { DrawBudget, DrawBudgetOptions } from './drawBudget';
3
- export { drawBudget } from './drawBudget';
4
- export type { FixedTimestep, FixedTimestepOptions } from './fixedTimestep';
5
- export { createFixedTimestep } from './fixedTimestep';
6
- export type { GamepadSnapshot, InputCollector, InputCollectorOptions, InputSnapshot, PointerSnapshot, } from './inputCollector';
7
- export { createInputCollector, deadzone } from './inputCollector';
8
- export { resizeCanvasToDisplaySize } from './resizeCanvas';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/game/core/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EACV,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,8 +0,0 @@
1
- // cursedbelt/game core — engine-agnostic, zero React, browser-safe to import from a
2
- // Bun server test. The React host hook lives in `cursedbelt/game/react`.
3
- export { DisposeRegistry } from './DisposeRegistry';
4
- export { drawBudget } from './drawBudget';
5
- export { createFixedTimestep } from './fixedTimestep';
6
- export { createInputCollector, deadzone } from './inputCollector';
7
- export { resizeCanvasToDisplaySize } from './resizeCanvas';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/game/core/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,yEAAyE;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAQtD,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,82 +0,0 @@
1
- import type { DisposeRegistry } from './DisposeRegistry';
2
- export interface PointerSnapshot {
3
- /** Canvas-relative X in CSS pixels. */
4
- x: number;
5
- /** Canvas-relative Y in CSS pixels. */
6
- y: number;
7
- /** Bitmask of currently-pressed buttons (`PointerEvent.buttons`). */
8
- buttons: number;
9
- /** The originating `PointerEvent.pointerId`. */
10
- id: number;
11
- /** `'mouse' | 'pen' | 'touch'`. */
12
- type: string;
13
- }
14
- export interface GamepadSnapshot {
15
- index: number;
16
- /** Axes with the deadzone already applied. Even indices = X, odd = Y, by convention. */
17
- axes: number[];
18
- /** Per-button analog value in `[0, 1]`. */
19
- buttons: number[];
20
- /** Per-button pressed flag. */
21
- pressed: boolean[];
22
- }
23
- export interface InputSnapshot {
24
- /** The primary (most-recently-active) pointer. */
25
- pointer: {
26
- x: number;
27
- y: number;
28
- buttons: number;
29
- };
30
- /** `KeyboardEvent.code` → held. Cleared on window blur to avoid stuck keys. */
31
- keys: Record<string, boolean>;
32
- /** One entry per active touch contact, canvas-relative. */
33
- touch: {
34
- x: number;
35
- y: number;
36
- }[];
37
- /** The first connected gamepad with deadzone-corrected axes, or `null`. */
38
- gamepad: GamepadSnapshot | null;
39
- }
40
- export interface InputCollectorOptions {
41
- /**
42
- * Where keyboard listeners attach. Defaults to `window` so the game receives keys
43
- * without the canvas needing focus. Pass the canvas to scope keys to focus instead.
44
- */
45
- keyboardTarget?: Window | HTMLElement;
46
- /** Gamepad axis deadzone (default `0.15`). */
47
- gamepadDeadzone?: number;
48
- /**
49
- * Set `canvas.style.touchAction = 'none'` so dragging on a touch device doesn't
50
- * scroll/zoom the page (default `true`). Restored on dispose.
51
- */
52
- preventTouchScroll?: boolean;
53
- }
54
- export interface InputCollector {
55
- /** A point-in-time copy of all input state — call once per frame. */
56
- snapshot: () => InputSnapshot;
57
- /** Subscribe to pointer-down events (mouse/pen/touch unified). */
58
- onPointerDown: (fn: (e: PointerSnapshot) => void) => void;
59
- /** Subscribe to pointer-up events. */
60
- onPointerUp: (fn: (e: PointerSnapshot) => void) => void;
61
- /** Subscribe to a specific `KeyboardEvent.code`; `down` is `true` on press, `false` on release. */
62
- onKey: (code: string, fn: (down: boolean) => void) => void;
63
- }
64
- /**
65
- * Applies a radial deadzone to a normalized axis value in `[-1, 1]` and rescales the
66
- * remainder so output still spans the full range past the threshold (no sudden jump
67
- * at the deadzone edge). Use for gamepad sticks / analog inputs.
68
- */
69
- export declare function deadzone(value: number, threshold?: number): number;
70
- /**
71
- * Collects raw input state from pointer, keyboard, touch, and gamepad into a single
72
- * snapshot-able object. Pointer events unify mouse/pen/touch; touch contacts are also
73
- * surfaced individually in `snapshot().touch`. All listeners attach via the supplied
74
- * {@link DisposeRegistry}, so they're torn down automatically on engine dispose.
75
- *
76
- * Per-game `computeIntent(snapshot)` (mapping raw input → a game-specific action enum)
77
- * stays in the game — this layer only handles the common collection + deadzone.
78
- *
79
- * Browser-only: reads `document`/`window`/`navigator`. Never call from a server file.
80
- */
81
- export declare function createInputCollector(canvas: HTMLCanvasElement, registry: DisposeRegistry, opts?: InputCollectorOptions): InputCollector;
82
- //# sourceMappingURL=inputCollector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inputCollector.d.ts","sourceRoot":"","sources":["../../../src/game/core/inputCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,CAAC,EAAE,MAAM,CAAC;IACV,uCAAuC;IACvC,CAAC,EAAE,MAAM,CAAC;IACV,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2CAA2C;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+BAA+B;IAC/B,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,2DAA2D;IAC3D,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClC,2EAA2E;IAC3E,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACtC,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,aAAa,CAAC;IAC9B,kEAAkE;IAClE,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,KAAK,IAAI,CAAC;IAC1D,sCAAsC;IACtC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,KAAK,IAAI,CAAC;IACxD,mGAAmG;IACnG,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;CAC5D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,MAAM,CAKhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,eAAe,EACzB,IAAI,GAAE,qBAA0B,GAC/B,cAAc,CA2JhB"}