fundus 0.9.1 → 0.11.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 (239) hide show
  1. package/README.md +64 -0
  2. package/build/client/_app/immutable/assets/2.6TBn1n3x.css +1 -0
  3. package/build/client/_app/immutable/assets/2.6TBn1n3x.css.br +0 -0
  4. package/build/client/_app/immutable/assets/2.6TBn1n3x.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/3.BuCXJbRG.css +1 -0
  6. package/build/client/_app/immutable/assets/3.BuCXJbRG.css.br +0 -0
  7. package/build/client/_app/immutable/assets/3.BuCXJbRG.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/4.C0QkCMQ4.css +1 -0
  9. package/build/client/_app/immutable/assets/4.C0QkCMQ4.css.br +0 -0
  10. package/build/client/_app/immutable/assets/4.C0QkCMQ4.css.gz +0 -0
  11. package/build/client/_app/immutable/assets/Popover.Et4sBRbI.css +1 -0
  12. package/build/client/_app/immutable/assets/Popover.Et4sBRbI.css.br +0 -0
  13. package/build/client/_app/immutable/assets/Popover.Et4sBRbI.css.gz +0 -0
  14. package/build/client/_app/immutable/chunks/BAva9YXm.js +1 -0
  15. package/build/client/_app/immutable/chunks/BAva9YXm.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/BAva9YXm.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/BGAUmugt.js +1 -0
  18. package/build/client/_app/immutable/chunks/BGAUmugt.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/BGAUmugt.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/BMORe2Gb.js +3 -0
  21. package/build/client/_app/immutable/chunks/BMORe2Gb.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/BMORe2Gb.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/CBygkKLq.js +1 -0
  24. package/build/client/_app/immutable/chunks/CBygkKLq.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/CBygkKLq.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/Cil0r9BR.js +108 -0
  27. package/build/client/_app/immutable/chunks/Cil0r9BR.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/Cil0r9BR.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/D-p-QSzz.js +1 -0
  30. package/build/client/_app/immutable/chunks/D-p-QSzz.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/D-p-QSzz.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/D15yxLq9.js +1 -0
  33. package/build/client/_app/immutable/chunks/D15yxLq9.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/D15yxLq9.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/DFRlZOKz.js +2 -0
  36. package/build/client/_app/immutable/chunks/DFRlZOKz.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/DFRlZOKz.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/{BFccgFID.js → DpFtnEPx.js} +1 -1
  39. package/build/client/_app/immutable/chunks/DpFtnEPx.js.br +4 -0
  40. package/build/client/_app/immutable/chunks/DpFtnEPx.js.gz +0 -0
  41. package/build/client/_app/immutable/entry/app.BaP08B0_.js +2 -0
  42. package/build/client/_app/immutable/entry/app.BaP08B0_.js.br +0 -0
  43. package/build/client/_app/immutable/entry/app.BaP08B0_.js.gz +0 -0
  44. package/build/client/_app/immutable/entry/start.DntfygIK.js +1 -0
  45. package/build/client/_app/immutable/entry/start.DntfygIK.js.br +0 -0
  46. package/build/client/_app/immutable/entry/start.DntfygIK.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/0.6A6JK0Xm.js +1 -0
  48. package/build/client/_app/immutable/nodes/0.6A6JK0Xm.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/0.6A6JK0Xm.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/1.8K7wLW9R.js +1 -0
  51. package/build/client/_app/immutable/nodes/1.8K7wLW9R.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/1.8K7wLW9R.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/2.CB_PeUBC.js +3 -0
  54. package/build/client/_app/immutable/nodes/2.CB_PeUBC.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/2.CB_PeUBC.js.gz +0 -0
  56. package/build/client/_app/immutable/nodes/3.qIkVQyP6.js +1 -0
  57. package/build/client/_app/immutable/nodes/3.qIkVQyP6.js.br +0 -0
  58. package/build/client/_app/immutable/nodes/3.qIkVQyP6.js.gz +0 -0
  59. package/build/client/_app/immutable/nodes/4.SmoVIy5D.js +2 -0
  60. package/build/client/_app/immutable/nodes/4.SmoVIy5D.js.br +0 -0
  61. package/build/client/_app/immutable/nodes/4.SmoVIy5D.js.gz +0 -0
  62. package/build/client/_app/version.json +1 -1
  63. package/build/client/_app/version.json.br +0 -0
  64. package/build/client/_app/version.json.gz +0 -0
  65. package/build/handler.js +7 -7
  66. package/build/index.js +7 -7
  67. package/build/server/chunks/chunks/{context.js-mXbNUDBD.js → context.js-BJfk3ZiR.js} +440 -6
  68. package/build/server/chunks/chunks/context.js-BJfk3ZiR.js.map +1 -0
  69. package/build/server/chunks/chunks/{contract.js-BCXeXDmU.js → contract.js-DRcxzb4o.js} +33 -13
  70. package/build/server/chunks/chunks/contract.js-DRcxzb4o.js.map +1 -0
  71. package/build/server/chunks/chunks/{exports.js-xvDCCOrG.js → exports.js-aVVdkXgn.js} +2 -2
  72. package/build/server/chunks/chunks/{exports.js-xvDCCOrG.js.map → exports.js-aVVdkXgn.js.map} +1 -1
  73. package/build/server/chunks/chunks/{http.js-BHghHRmI.js → http.js-DMkgmpI5.js} +2 -2
  74. package/build/server/chunks/chunks/{http.js-BHghHRmI.js.map → http.js-DMkgmpI5.js.map} +1 -1
  75. package/build/server/chunks/chunks/{internal.js-Dqy56Bi9.js → internal.js-C6cIfe5d.js} +3 -3
  76. package/build/server/chunks/chunks/{internal.js-Dqy56Bi9.js.map → internal.js-C6cIfe5d.js.map} +1 -1
  77. package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
  78. package/build/server/chunks/chunks/{shared.js-CHSvdnOT.js → shared.js-BNd0HSxp.js} +2 -2
  79. package/build/server/chunks/chunks/{shared.js-CHSvdnOT.js.map → shared.js-BNd0HSxp.js.map} +1 -1
  80. package/build/server/chunks/chunks/{utils.js-Chb8lDKD.js → utils.js-6HSqnONB.js} +3 -3
  81. package/build/server/chunks/chunks/{utils.js-Chb8lDKD.js.map → utils.js-6HSqnONB.js.map} +1 -1
  82. package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-CN1hcfLb.js → _server.ts.js-m2QGyBiV.js} +3 -3
  83. package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-CN1hcfLb.js.map → _server.ts.js-m2QGyBiV.js.map} +1 -1
  84. package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-D_LU4nrh.js → _server.ts.js-eMNgdaf4.js} +4 -4
  85. package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-D_LU4nrh.js.map → _server.ts.js-eMNgdaf4.js.map} +1 -1
  86. package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-BY9NgKmC.js → _server.ts.js-CEQd4Wxn.js} +4 -4
  87. package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-BY9NgKmC.js.map → _server.ts.js-CEQd4Wxn.js.map} +1 -1
  88. package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-D2uPmOzD.js → _server.ts.js-B2JoGCzy.js} +4 -4
  89. package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-D2uPmOzD.js.map → _server.ts.js-B2JoGCzy.js.map} +1 -1
  90. package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-CCsQkuSA.js → _server.ts.js-DTpkVywC.js} +4 -4
  91. package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-CCsQkuSA.js.map → _server.ts.js-DTpkVywC.js.map} +1 -1
  92. package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-CFVRCJTe.js → _server.ts.js-D6Z_pGEZ.js} +4 -4
  93. package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-CFVRCJTe.js.map → _server.ts.js-D6Z_pGEZ.js.map} +1 -1
  94. package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-DTDSQlpi.js → _server.ts.js-CnDi9p0a.js} +4 -4
  95. package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-DTDSQlpi.js.map → _server.ts.js-CnDi9p0a.js.map} +1 -1
  96. package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-DrunH7kn.js → _server.ts.js-BCzuPX5Z.js} +4 -4
  97. package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-DrunH7kn.js.map → _server.ts.js-BCzuPX5Z.js.map} +1 -1
  98. package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-jskTD8nZ.js → _server.ts.js-CGbYyJ6S.js} +4 -4
  99. package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-jskTD8nZ.js.map → _server.ts.js-CGbYyJ6S.js.map} +1 -1
  100. package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-DEXkS6pQ.js → _server.ts.js-CL_89klb.js} +4 -4
  101. package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-DEXkS6pQ.js.map → _server.ts.js-CL_89klb.js.map} +1 -1
  102. package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-baLtBCf4.js → _server.ts.js-DZUKtjz9.js} +4 -4
  103. package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-baLtBCf4.js.map → _server.ts.js-DZUKtjz9.js.map} +1 -1
  104. package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-1Cx7sbfQ.js → _server.ts.js-Dz25LG_P.js} +4 -4
  105. package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-1Cx7sbfQ.js.map → _server.ts.js-Dz25LG_P.js.map} +1 -1
  106. package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-Xc7glEPl.js → _server.ts.js-C-NuN3JJ.js} +4 -4
  107. package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-Xc7glEPl.js.map → _server.ts.js-C-NuN3JJ.js.map} +1 -1
  108. package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-C7IxpaSj.js → _server.ts.js-CwL9UPh3.js} +4 -4
  109. package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-C7IxpaSj.js.map → _server.ts.js-CwL9UPh3.js.map} +1 -1
  110. package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DLZkdOrS.js → _server.ts.js-DanXYrj1.js} +4 -4
  111. package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DLZkdOrS.js.map → _server.ts.js-DanXYrj1.js.map} +1 -1
  112. package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-CSS2DDb1.js → _server.ts.js-BZrun0up.js} +4 -4
  113. package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-CSS2DDb1.js.map → _server.ts.js-BZrun0up.js.map} +1 -1
  114. package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-CrXh2YL-.js → _server.ts.js-DQOabHbS.js} +4 -4
  115. package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-CrXh2YL-.js.map → _server.ts.js-DQOabHbS.js.map} +1 -1
  116. package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-yT-0jHAT.js → _server.ts.js-k8Ueydx1.js} +4 -4
  117. package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-yT-0jHAT.js.map → _server.ts.js-k8Ueydx1.js.map} +1 -1
  118. package/build/server/chunks/entries/endpoints/api/usage/_server.ts.js-DmMmiFiu.js +82 -0
  119. package/build/server/chunks/entries/endpoints/api/usage/_server.ts.js-DmMmiFiu.js.map +1 -0
  120. package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-DTZAlq3j.js → _server.ts.js-CT7yOdDS.js} +3 -3
  121. package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-DTZAlq3j.js.map → _server.ts.js-CT7yOdDS.js.map} +1 -1
  122. package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-Cux6Dnfu.js → _server.ts.js-BQTC0OSC.js} +4 -4
  123. package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-Cux6Dnfu.js.map → _server.ts.js-BQTC0OSC.js.map} +1 -1
  124. package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-BjcPFOHi.js → _server.ts.js-mv9cqSuS.js} +4 -4
  125. package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-BjcPFOHi.js.map → _server.ts.js-mv9cqSuS.js.map} +1 -1
  126. package/build/server/chunks/entries/{hooks.server.js-e6ugpMpo.js → hooks.server.js-BNQO3cZr.js} +3 -3
  127. package/build/server/chunks/entries/{hooks.server.js-e6ugpMpo.js.map → hooks.server.js-BNQO3cZr.js.map} +1 -1
  128. package/build/server/chunks/{handler-BT9ZZoXM.js → handler-rG16rikT.js} +5 -5
  129. package/build/server/chunks/{handler-BT9ZZoXM.js.map → handler-rG16rikT.js.map} +1 -1
  130. package/build/server/chunks/{index.js-Cvg0bLxz.js → index.js-DYK_SfL5.js} +5 -5
  131. package/build/server/chunks/{index.js-Cvg0bLxz.js.map → index.js-DYK_SfL5.js.map} +1 -1
  132. package/build/server/chunks/{manifest.js-CtTOK1ZJ.js → manifest.js-h2lDpEPs.js} +35 -28
  133. package/build/server/chunks/manifest.js-h2lDpEPs.js.map +1 -0
  134. package/build/server/chunks/nodes/{0.js-CyEDHDwU.js → 0.js-Db28RwnA.js} +2 -2
  135. package/build/server/chunks/nodes/{0.js-CyEDHDwU.js.map → 0.js-Db28RwnA.js.map} +1 -1
  136. package/build/server/chunks/nodes/1.js-D26Uv3YT.js +7 -0
  137. package/build/server/chunks/nodes/{1.js-Cv0zPe22.js.map → 1.js-D26Uv3YT.js.map} +1 -1
  138. package/build/server/chunks/nodes/2.js-BeRlEFid.js +7 -0
  139. package/build/server/chunks/nodes/{2.js-CAIMXiqt.js.map → 2.js-BeRlEFid.js.map} +1 -1
  140. package/build/server/chunks/nodes/3.js-BRUNmCyG.js +7 -0
  141. package/build/server/chunks/nodes/3.js-BRUNmCyG.js.map +1 -0
  142. package/build/server/chunks/nodes/4.js-CTHWqDf1.js +7 -0
  143. package/build/server/chunks/nodes/4.js-CTHWqDf1.js.map +1 -0
  144. package/dist/cli.js +6 -1
  145. package/dist/config.d.ts +1 -1
  146. package/dist/core/api-types.d.ts +36 -1
  147. package/dist/core/config.d.ts +35 -0
  148. package/dist/core/index.d.ts +2 -2
  149. package/dist/core/manifest-entry.d.ts +11 -0
  150. package/dist/runtime/kind-handlers.d.ts +3 -2
  151. package/dist/runtime/kind-handlers.js +38 -10
  152. package/dist/runtime/manifest.d.ts +2 -1
  153. package/dist/runtime/manifest.js +13 -6
  154. package/dist/runtime/preload-registry.d.ts +1 -1
  155. package/dist/runtime/preload-registry.js +6 -3
  156. package/dist/server/check.d.ts +6 -0
  157. package/dist/server/check.js +4 -1
  158. package/dist/server/cli-commands.d.ts +3 -1
  159. package/dist/server/cli-commands.js +117 -2
  160. package/dist/server/codegen.d.ts +3 -0
  161. package/dist/server/codegen.js +19 -2
  162. package/dist/server/config-loader.d.ts +3 -1
  163. package/dist/server/config-loader.js +13 -1
  164. package/dist/server/index.d.ts +2 -2
  165. package/dist/server/index.js +1 -1
  166. package/dist/server/operations.d.ts +7 -1
  167. package/dist/server/operations.js +85 -2
  168. package/dist/server/plugins/audio.js +1 -0
  169. package/dist/server/plugins/chroma-key-video.js +1 -0
  170. package/dist/server/plugins/image.js +1 -0
  171. package/dist/server/plugins/slice.js +1 -0
  172. package/dist/server/plugins/video.js +1 -0
  173. package/dist/server/start.d.ts +8 -0
  174. package/dist/server/start.js +24 -0
  175. package/dist/server/usage.d.ts +24 -0
  176. package/dist/server/usage.js +441 -0
  177. package/package.json +2 -2
  178. package/build/client/_app/immutable/assets/2.CK3PVkJ5.css +0 -1
  179. package/build/client/_app/immutable/assets/2.CK3PVkJ5.css.br +0 -0
  180. package/build/client/_app/immutable/assets/2.CK3PVkJ5.css.gz +0 -0
  181. package/build/client/_app/immutable/assets/3.CmXD8k9d.css +0 -1
  182. package/build/client/_app/immutable/assets/3.CmXD8k9d.css.br +0 -0
  183. package/build/client/_app/immutable/assets/3.CmXD8k9d.css.gz +0 -0
  184. package/build/client/_app/immutable/assets/4.p004hmEN.css +0 -1
  185. package/build/client/_app/immutable/assets/4.p004hmEN.css.br +0 -0
  186. package/build/client/_app/immutable/assets/4.p004hmEN.css.gz +0 -0
  187. package/build/client/_app/immutable/chunks/-scmOfVp.js +0 -108
  188. package/build/client/_app/immutable/chunks/-scmOfVp.js.br +0 -0
  189. package/build/client/_app/immutable/chunks/-scmOfVp.js.gz +0 -0
  190. package/build/client/_app/immutable/chunks/BD3hQKzV.js +0 -1
  191. package/build/client/_app/immutable/chunks/BD3hQKzV.js.br +0 -0
  192. package/build/client/_app/immutable/chunks/BD3hQKzV.js.gz +0 -0
  193. package/build/client/_app/immutable/chunks/BFccgFID.js.br +0 -1
  194. package/build/client/_app/immutable/chunks/BFccgFID.js.gz +0 -0
  195. package/build/client/_app/immutable/chunks/C3HGm51f.js +0 -1
  196. package/build/client/_app/immutable/chunks/C3HGm51f.js.br +0 -0
  197. package/build/client/_app/immutable/chunks/C3HGm51f.js.gz +0 -0
  198. package/build/client/_app/immutable/chunks/C7OUKWnm.js +0 -1
  199. package/build/client/_app/immutable/chunks/C7OUKWnm.js.br +0 -0
  200. package/build/client/_app/immutable/chunks/C7OUKWnm.js.gz +0 -0
  201. package/build/client/_app/immutable/chunks/DPZDGjcn.js +0 -1
  202. package/build/client/_app/immutable/chunks/DPZDGjcn.js.br +0 -0
  203. package/build/client/_app/immutable/chunks/DPZDGjcn.js.gz +0 -0
  204. package/build/client/_app/immutable/chunks/DRjIin01.js +0 -1
  205. package/build/client/_app/immutable/chunks/DRjIin01.js.br +0 -0
  206. package/build/client/_app/immutable/chunks/DRjIin01.js.gz +0 -0
  207. package/build/client/_app/immutable/chunks/NblqapDQ.js +0 -3
  208. package/build/client/_app/immutable/chunks/NblqapDQ.js.br +0 -0
  209. package/build/client/_app/immutable/chunks/NblqapDQ.js.gz +0 -0
  210. package/build/client/_app/immutable/entry/app.SxIeroQ7.js +0 -2
  211. package/build/client/_app/immutable/entry/app.SxIeroQ7.js.br +0 -0
  212. package/build/client/_app/immutable/entry/app.SxIeroQ7.js.gz +0 -0
  213. package/build/client/_app/immutable/entry/start.BLJzoe4Q.js +0 -1
  214. package/build/client/_app/immutable/entry/start.BLJzoe4Q.js.br +0 -0
  215. package/build/client/_app/immutable/entry/start.BLJzoe4Q.js.gz +0 -0
  216. package/build/client/_app/immutable/nodes/0.ZD2ILzva.js +0 -2
  217. package/build/client/_app/immutable/nodes/0.ZD2ILzva.js.br +0 -0
  218. package/build/client/_app/immutable/nodes/0.ZD2ILzva.js.gz +0 -0
  219. package/build/client/_app/immutable/nodes/1.DwuNSOrz.js +0 -1
  220. package/build/client/_app/immutable/nodes/1.DwuNSOrz.js.br +0 -1
  221. package/build/client/_app/immutable/nodes/1.DwuNSOrz.js.gz +0 -0
  222. package/build/client/_app/immutable/nodes/2.Dq9XLv2P.js +0 -3
  223. package/build/client/_app/immutable/nodes/2.Dq9XLv2P.js.br +0 -0
  224. package/build/client/_app/immutable/nodes/2.Dq9XLv2P.js.gz +0 -0
  225. package/build/client/_app/immutable/nodes/3._kFEQXPD.js +0 -1
  226. package/build/client/_app/immutable/nodes/3._kFEQXPD.js.br +0 -0
  227. package/build/client/_app/immutable/nodes/3._kFEQXPD.js.gz +0 -0
  228. package/build/client/_app/immutable/nodes/4.B6dS2ueh.js +0 -2
  229. package/build/client/_app/immutable/nodes/4.B6dS2ueh.js.br +0 -0
  230. package/build/client/_app/immutable/nodes/4.B6dS2ueh.js.gz +0 -0
  231. package/build/server/chunks/chunks/context.js-mXbNUDBD.js.map +0 -1
  232. package/build/server/chunks/chunks/contract.js-BCXeXDmU.js.map +0 -1
  233. package/build/server/chunks/manifest.js-CtTOK1ZJ.js.map +0 -1
  234. package/build/server/chunks/nodes/1.js-Cv0zPe22.js +0 -7
  235. package/build/server/chunks/nodes/2.js-CAIMXiqt.js +0 -7
  236. package/build/server/chunks/nodes/3.js-CFifsujw.js +0 -7
  237. package/build/server/chunks/nodes/3.js-CFifsujw.js.map +0 -1
  238. package/build/server/chunks/nodes/4.js-BS8_mlOS.js +0 -7
  239. package/build/server/chunks/nodes/4.js-BS8_mlOS.js.map +0 -1
@@ -5,10 +5,11 @@
5
5
  * and the CLI consume this class, so every
6
6
  * operation has exactly one implementation and there is no other save path.
7
7
  */
8
+ import { readFile } from 'node:fs/promises';
8
9
  import { join } from 'node:path';
9
- import { assetIdError, allDeliveredAssetIds, canonicalizeParameters, collectAllReferences, compareCodeUnits, computeLibraryMembership, folderOfRawPath, normalizeFolderPath, parentFolderPath, portableFolderPathKey, proposeAssetId, rawFileNameOfPath, typesForFileName } from '../core/index.js';
10
+ import { assetIdError, allDeliveredAssetIds, canonicalizeParameters, collectAllReferences, compareCodeUnits, computeLibraryMembership, folderOfRawPath, normalizeFolderPath, parentFolderPath, portableFolderPathKey, proposeAssetId, rawFileNameOfPath, serializeLibrary, typesForFileName } from '../core/index.js';
10
11
  import { LibraryStore } from './library-store.js';
11
- import { generateManifestModules } from './codegen.js';
12
+ import { generateManifestModules, locateGeneratedAssetDeclaration, manifestModuleFileName } from './codegen.js';
12
13
  import { descriptorsByType, serverPluginForType, serverPluginsByType } from './plugins.js';
13
14
  import { processAssets, readCurrentProxy } from './processing/processor.js';
14
15
  import { encodeRelativePathForUrl } from './folder-filesystem.js';
@@ -18,6 +19,7 @@ import { serverImporters } from './importers.js';
18
19
  import { SourceImportError } from './importers/contract.js';
19
20
  import { validateFigmaSourceParameters } from './importers/figma.js';
20
21
  import { currentGitBranch, gitAssetChanges } from './git.js';
22
+ import { FundusUsageAnalyzer, usageSnapshotRevision } from './usage.js';
21
23
  /**
22
24
  * The CLI's `--parameters` merge semantics (M7): a SHALLOW merge at the top
23
25
  * level onto the current parameters — a nested object value replaces the whole
@@ -54,6 +56,7 @@ export class FundusOperations {
54
56
  #registry;
55
57
  #store;
56
58
  #importers;
59
+ #usageAnalyzer;
57
60
  #operationQueue = Promise.resolve();
58
61
  #pipelineQueue = Promise.resolve();
59
62
  constructor(config, registry = serverPluginsByType, importerRegistry = serverImporters) {
@@ -61,6 +64,7 @@ export class FundusOperations {
61
64
  this.#registry = registry;
62
65
  this.#store = new LibraryStore(config, registry);
63
66
  this.#importers = importerRegistry;
67
+ this.#usageAnalyzer = config.usage ? new FundusUsageAnalyzer(config.usage) : null;
64
68
  }
65
69
  get config() {
66
70
  return this.#config;
@@ -68,11 +72,90 @@ export class FundusOperations {
68
72
  get store() {
69
73
  return this.#store;
70
74
  }
75
+ get usageAvailable() {
76
+ return this.#usageAnalyzer !== null;
77
+ }
78
+ async analyzeUsage(options = {}) {
79
+ const analyzer = this.#usageAnalyzer;
80
+ if (!analyzer)
81
+ throw new Error('Usage analysis is not configured.');
82
+ for (let attempt = 0; attempt < 2; attempt++) {
83
+ const snapshot = await this.#enqueueOperation(() => this.#usageSnapshot());
84
+ const report = await analyzer.analyze(snapshot, {
85
+ ...options,
86
+ forceFresh: options.forceFresh === true || attempt > 0
87
+ });
88
+ const current = await this.#enqueueOperation(() => this.#usageSnapshot());
89
+ if (current.revision === snapshot.revision)
90
+ return report;
91
+ }
92
+ const current = await this.#enqueueOperation(() => this.#usageSnapshot());
93
+ if (options.assetId && !Object.hasOwn(current.library.assets, options.assetId)) {
94
+ throw new Error(`Unknown asset "${options.assetId}".`);
95
+ }
96
+ return analyzer.stale(current, options.assetId);
97
+ }
98
+ async openUsageLocation(token) {
99
+ if (!this.#usageAnalyzer)
100
+ throw new Error('Usage analysis is not configured.');
101
+ await this.#usageAnalyzer.open(token);
102
+ }
71
103
  #enqueueOperation(operation) {
72
104
  const run = this.#operationQueue.then(operation, operation);
73
105
  this.#operationQueue = run.then(() => { }, () => { });
74
106
  return run;
75
107
  }
108
+ async #usageSnapshot() {
109
+ await this.#pipelineQueue;
110
+ const library = structuredClone(await this.#store.read());
111
+ const referencesByAsset = collectAllReferences(library, descriptorsByType(this.#registry));
112
+ const modules = new Map();
113
+ const roots = [];
114
+ for (const manifest of Object.keys(library.manifests).sort(compareCodeUnits)) {
115
+ const rootAssetIds = Object.keys(library.assets)
116
+ .filter((assetId) => library.assets[assetId].manifests.includes(manifest))
117
+ .sort(compareCodeUnits);
118
+ if (rootAssetIds.length === 0)
119
+ continue;
120
+ const path = join(this.#config.manifestsDir, manifestModuleFileName(manifest));
121
+ let content;
122
+ try {
123
+ content = await readFile(path, 'utf8');
124
+ }
125
+ catch (cause) {
126
+ if (cause.code !== 'ENOENT')
127
+ throw cause;
128
+ content = null;
129
+ }
130
+ modules.set(manifest, { content, path });
131
+ for (const assetId of rootAssetIds) {
132
+ const declaration = content === null ? null : locateGeneratedAssetDeclaration(path, content, assetId);
133
+ roots.push({
134
+ manifest,
135
+ assetId,
136
+ declaration,
137
+ ...(declaration
138
+ ? {}
139
+ : {
140
+ declarationError: content === null
141
+ ? `Generated manifest module is missing: ${path}.`
142
+ : `Generated declaration ${manifest}.${assetId} was not found in ${path}.`
143
+ })
144
+ });
145
+ }
146
+ }
147
+ const revisionParts = [serializeLibrary(library)];
148
+ for (const manifest of [...modules.keys()].sort(compareCodeUnits)) {
149
+ const module = modules.get(manifest);
150
+ revisionParts.push(manifest, module.path, module.content ?? '<missing>');
151
+ }
152
+ return {
153
+ revision: usageSnapshotRevision(revisionParts),
154
+ library,
155
+ referencesByAsset,
156
+ roots
157
+ };
158
+ }
76
159
  /** Read-only state snapshot, serialized with mutations but never processing or writing. */
77
160
  state() {
78
161
  return this.#enqueueOperation(() => this.#state());
@@ -36,6 +36,7 @@ export const audioServerPlugin = {
36
36
  buildManifestEntry: ({ src, proxy }) => ({
37
37
  kind: 'audio',
38
38
  src,
39
+ byteSize: proxy.fileSize,
39
40
  durationMs: requireProxyField(proxy, 'durationMs')
40
41
  })
41
42
  };
@@ -30,6 +30,7 @@ export const chromaKeyVideoServerPlugin = {
30
30
  buildManifestEntry: ({ parameters, src, proxy }) => ({
31
31
  kind: 'chroma-key-video',
32
32
  src,
33
+ byteSize: proxy.fileSize,
33
34
  width: requireProxyField(proxy, 'width'),
34
35
  height: requireProxyField(proxy, 'height'),
35
36
  durationMs: requireProxyField(proxy, 'durationMs'),
@@ -37,6 +37,7 @@ export const imageServerPlugin = {
37
37
  buildManifestEntry: ({ src, proxy }) => ({
38
38
  kind: 'image',
39
39
  src,
40
+ byteSize: proxy.fileSize,
40
41
  width: requireProxyField(proxy, 'width'),
41
42
  height: requireProxyField(proxy, 'height')
42
43
  })
@@ -80,6 +80,7 @@ export const sliceServerPlugin = {
80
80
  return {
81
81
  kind: 'slice',
82
82
  src,
83
+ byteSize: proxy.fileSize,
83
84
  slicing,
84
85
  sourceWidth,
85
86
  sourceHeight
@@ -55,6 +55,7 @@ export const videoServerPlugin = {
55
55
  buildManifestEntry: ({ src, proxy }) => ({
56
56
  kind: 'video',
57
57
  src,
58
+ byteSize: proxy.fileSize,
58
59
  width: requireProxyField(proxy, 'width'),
59
60
  height: requireProxyField(proxy, 'height'),
60
61
  durationMs: requireProxyField(proxy, 'durationMs')
@@ -1,3 +1,4 @@
1
+ import type { FundusServer } from './server.js';
1
2
  export declare const DEFAULT_PORT = 7583;
2
3
  interface StartBannerOptions {
3
4
  port: number;
@@ -9,6 +10,13 @@ export interface RunStartOptions {
9
10
  openBrowser?: boolean;
10
11
  port?: number;
11
12
  }
13
+ /** Bootstrap the real server context and distinguish optional absence from route failure. */
14
+ export declare function probeUsageCapability(editorUrl: string, fetcher?: typeof fetch): Promise<boolean>;
15
+ /** Probe the started server, warning on optional absence and cleaning up on failure. */
16
+ export declare function bootstrapUsageCapability(editorUrl: string, server: FundusServer, options?: {
17
+ fetcher?: typeof fetch;
18
+ warn?: (message: string) => void;
19
+ }): Promise<void>;
12
20
  /** Format the human startup summary without pulling a terminal UI dependency into the CLI. */
13
21
  export declare function formatStartBanner({ port, projectRoot, color, terminalWidth }: StartBannerOptions): string;
14
22
  export declare function runStart(projectRoot: string, { openBrowser, port }?: RunStartOptions): Promise<void>;
@@ -4,7 +4,30 @@ import { resolve } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import open from 'open';
6
6
  import { startServer } from './server.js';
7
+ import { USAGE_NOT_CONFIGURED_MESSAGE } from './config-loader.js';
7
8
  export const DEFAULT_PORT = 7583;
9
+ /** Bootstrap the real server context and distinguish optional absence from route failure. */
10
+ export async function probeUsageCapability(editorUrl, fetcher = fetch) {
11
+ const response = await fetcher(`${editorUrl}/api/usage`, { method: 'HEAD' });
12
+ const header = response.headers.get('x-fundus-usage-capability');
13
+ if (response.status === 204 && header === 'available')
14
+ return true;
15
+ if (response.status === 404 && header === 'unavailable')
16
+ return false;
17
+ throw new Error(`Fundus usage capability bootstrap failed (${response.status}, capability ${header ?? 'missing'}).`);
18
+ }
19
+ /** Probe the started server, warning on optional absence and cleaning up on failure. */
20
+ export async function bootstrapUsageCapability(editorUrl, server, options = {}) {
21
+ try {
22
+ if (!(await probeUsageCapability(editorUrl, options.fetcher))) {
23
+ (options.warn ?? console.warn)(USAGE_NOT_CONFIGURED_MESSAGE);
24
+ }
25
+ }
26
+ catch (cause) {
27
+ await server.stop();
28
+ throw cause;
29
+ }
30
+ }
8
31
  function ansi(code, value, enabled) {
9
32
  return enabled ? `\u001b[${code}m${value}\u001b[0m` : value;
10
33
  }
@@ -81,6 +104,7 @@ export async function runStart(projectRoot, { openBrowser = true, port = DEFAULT
81
104
  }
82
105
  const server = await startServer({ handler: module.handler, port });
83
106
  const editorUrl = `http://127.0.0.1:${server.port}`;
107
+ await bootstrapUsageCapability(editorUrl, server);
84
108
  console.log(formatStartBanner({
85
109
  port: server.port,
86
110
  projectRoot: resolvedProjectRoot,
@@ -0,0 +1,24 @@
1
+ import type { Library, ReferencesByAsset, SourceLocation, UsageAnalysisDto, UsageConfig } from '../core/index.js';
2
+ export interface UsageSnapshotRoot {
3
+ manifest: string;
4
+ assetId: string;
5
+ declaration: SourceLocation | null;
6
+ declarationError?: string;
7
+ }
8
+ export interface UsageAnalysisSnapshot {
9
+ revision: string;
10
+ library: Library;
11
+ referencesByAsset: ReferencesByAsset;
12
+ roots: UsageSnapshotRoot[];
13
+ }
14
+ export declare class FundusUsageAnalyzer {
15
+ #private;
16
+ constructor(usage: UsageConfig);
17
+ analyze(snapshot: UsageAnalysisSnapshot, options?: {
18
+ assetId?: string;
19
+ forceFresh?: boolean;
20
+ }): Promise<UsageAnalysisDto>;
21
+ stale(snapshot: UsageAnalysisSnapshot, assetId?: string): UsageAnalysisDto;
22
+ open(token: unknown): Promise<void>;
23
+ }
24
+ export declare function usageSnapshotRevision(parts: readonly string[]): string;