@cueframe/kernel 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/LICENSE +661 -0
  2. package/dist/_members/account-model/testing/conversationStoreContract.d.ts +1 -1
  3. package/dist/_members/authoring/providers/resourceApi.d.ts +1 -1
  4. package/dist/_members/authoring/transpileComponent.d.ts +1 -1
  5. package/dist/_members/cloud-import/CloudImportService.d.ts +35 -0
  6. package/dist/_members/cloud-import/ImportProvider.d.ts +73 -0
  7. package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +27 -0
  8. package/dist/_members/cloud-import/cloudConfig.d.ts +23 -0
  9. package/dist/_members/cloud-import/index.d.ts +9 -0
  10. package/dist/_members/cloud-import/multipartUpload.d.ts +12 -0
  11. package/dist/_members/composition/ops/compositionOps.d.ts +2 -1
  12. package/dist/_members/composition/ops/types.d.ts +1 -1
  13. package/dist/_members/composition/projection/behind-readiness.d.ts +127 -0
  14. package/dist/_members/composition/projection/index.d.ts +2 -0
  15. package/dist/_members/composition/projection/reframe-readiness.d.ts +156 -0
  16. package/dist/_members/composition/timeline/placement.d.ts +1 -1
  17. package/dist/_members/composition/validators/composition.d.ts +43 -26
  18. package/dist/_members/composition/validators/render.d.ts +32 -0
  19. package/dist/_members/composition-ops/index.d.ts +1 -1
  20. package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
  21. package/dist/_members/convex-api/api.d.ts +5 -0
  22. package/dist/_members/convex-api/dataModel.d.ts +6 -0
  23. package/dist/_members/core/render/compositionRender.d.ts +17 -1
  24. package/dist/_members/core/render/exportSettings.d.ts +1 -1
  25. package/dist/_members/core/render/types.d.ts +31 -0
  26. package/dist/_members/mcp/curation.d.ts +1 -1
  27. package/dist/_members/plane/conformance.d.ts +1 -1
  28. package/dist/_members/render-harness/localRender.d.ts +1 -1
  29. package/dist/animate.js +828 -79187
  30. package/dist/authoring/build-tools.js +8 -11
  31. package/dist/authoring/context.js +5 -5
  32. package/dist/authoring/models.js +1 -2
  33. package/dist/authoring/prompts.js +1 -1
  34. package/dist/authoring/tools.js +7 -7
  35. package/dist/authoring/transpileComponent.js +3 -2220
  36. package/dist/authoring.js +30 -30
  37. package/dist/brand-derivation.js +1 -1
  38. package/dist/chunk-6IU2UQI5.js +107 -0
  39. package/dist/{chunk-5I7VDCAC.js → chunk-7FO3ZJ43.js} +4 -1
  40. package/dist/{chunk-N67PDTKQ.js → chunk-ABL557OT.js} +1 -1
  41. package/dist/{chunk-MC5DLSEV.js → chunk-AP6ZIVAV.js} +15 -15
  42. package/dist/{chunk-QLAQHR3L.js → chunk-AQBREB5O.js} +1 -1
  43. package/dist/{chunk-DSNG6WLU.js → chunk-AYVJXDLB.js} +1 -4
  44. package/dist/{chunk-6CMVBTTP.js → chunk-DK2ODBNT.js} +19 -9
  45. package/dist/chunk-DSMLHYJ4.js +82 -0
  46. package/dist/{chunk-BRKJKB33.js → chunk-FYZVH3MC.js} +1 -1
  47. package/dist/{chunk-MVEE6HEC.js → chunk-GA23TRNR.js} +5 -7
  48. package/dist/chunk-HCCBDJLW.js +68 -0
  49. package/dist/{chunk-JRQVPFLF.js → chunk-HY3RIEZW.js} +1 -1
  50. package/dist/{chunk-OIRUO5P7.js → chunk-JJ6XD7NG.js} +152 -2
  51. package/dist/{_members/primitives/chunk-IDAL6G3Y.js → chunk-JQMPHKLU.js} +19 -27
  52. package/dist/{chunk-G3PBH53P.js → chunk-MBCXCJOE.js} +1 -1
  53. package/dist/{chunk-UEI3NLNK.js → chunk-MHOQTPOB.js} +1 -4
  54. package/dist/{chunk-37NJ27UU.js → chunk-OCFDUCF4.js} +3 -0
  55. package/dist/{chunk-WZTTZHNR.js → chunk-OLFOPQCA.js} +12 -9
  56. package/dist/{chunk-P43IE4WB.js → chunk-P727GZVO.js} +2 -4
  57. package/dist/{chunk-52AHXNKM.js → chunk-PDYO3DOJ.js} +5 -5
  58. package/dist/{chunk-S3P5BFFL.js → chunk-PMY24FUD.js} +2 -4
  59. package/dist/{chunk-ATAF24QG.js → chunk-PODIYN2K.js} +10 -3
  60. package/dist/chunk-RF7U3SCL.js +606 -0
  61. package/dist/{chunk-JD77Y2WM.js → chunk-SW336CJP.js} +1 -4
  62. package/dist/{chunk-TULRCY6U.js → chunk-TOJEXFXL.js} +1 -1
  63. package/dist/{chunk-ELLSET2N.js → chunk-UHGSZZDI.js} +3 -6
  64. package/dist/{chunk-M3I5LMAB.js → chunk-UY4SWJVE.js} +1 -1
  65. package/dist/{chunk-6QJ3V3VS.js → chunk-YX2GSJK7.js} +1 -1
  66. package/dist/chunk-ZT7MHRQU.js +104 -0
  67. package/dist/{chunk-NV4I6GJV.js → chunk-ZWMV6DD2.js} +27 -4
  68. package/dist/cloud-import/multipart.d.ts +1 -0
  69. package/dist/cloud-import/multipart.js +8 -0
  70. package/dist/cloud-import.d.ts +1 -0
  71. package/dist/cloud-import.js +234 -0
  72. package/dist/compose/renderer.js +19 -22
  73. package/dist/compose.js +19 -22
  74. package/dist/composition/graphics-plan.js +3 -3
  75. package/dist/composition/ops.js +4 -4
  76. package/dist/composition/primitive-catalog.js +1 -1
  77. package/dist/composition/projection.js +21 -5
  78. package/dist/composition/validators.js +6 -4
  79. package/dist/composition-ops.js +15 -13
  80. package/dist/composition.js +26 -8
  81. package/dist/{context-CEAKQ5T7.js → context-YWUZDG5X.js} +5 -5
  82. package/dist/convex-api/dataModel.d.ts +1 -0
  83. package/dist/convex-api/dataModel.js +0 -0
  84. package/dist/convex-api.d.ts +1 -0
  85. package/dist/convex-api.js +8 -0
  86. package/dist/core/render.js +3 -3
  87. package/dist/core/select.js +2 -2
  88. package/dist/core.js +3 -3
  89. package/dist/errors.js +1 -1
  90. package/dist/mcp/adapter.js +2 -5
  91. package/dist/mcp/server.js +1 -2
  92. package/dist/mcp.js +2 -95
  93. package/dist/media-model/media-kind.js +9 -98
  94. package/dist/media-model/testing.js +1071 -718
  95. package/dist/nle-export/server.js +328 -130
  96. package/dist/nle-export/xml.js +5 -22799
  97. package/dist/nle-export.js +20 -22
  98. package/dist/primitives/backgrounds.js +2 -3
  99. package/dist/primitives/captions.js +4 -243
  100. package/dist/primitives/effects.js +2 -3
  101. package/dist/primitives/hero-text.js +2 -3
  102. package/dist/primitives/layouts.js +2 -3
  103. package/dist/primitives/lib/index.js +8 -10
  104. package/dist/primitives/lib/preview.js +1 -2
  105. package/dist/primitives/lib/schema.js +1 -2
  106. package/dist/primitives/lib/text/fitText.js +1 -2
  107. package/dist/primitives/lib.js +8 -10
  108. package/dist/primitives/scenes.js +1 -2
  109. package/dist/primitives/text.js +2 -3
  110. package/dist/primitives/ui-blocks.js +4 -5
  111. package/dist/primitives.js +19 -21
  112. package/package.json +125 -16
  113. package/dist/TextureLoader-UQOFUSAP.js +0 -422
  114. package/dist/VideoTexture-AQWSPIJG.js +0 -62
  115. package/dist/_members/account-model/index.js +0 -4
  116. package/dist/_members/account-model/testing/conversationStoreContract.js +0 -168
  117. package/dist/_members/account-model/testing/index.js +0 -7
  118. package/dist/_members/account-model/testing/restorePointStoreContract.js +0 -69
  119. package/dist/_members/account-model/types/index.js +0 -1
  120. package/dist/_members/account-model/validators/contextFile.js +0 -18
  121. package/dist/_members/account-model/validators/conversation.js +0 -95
  122. package/dist/_members/account-model/validators/dashboardInsight.js +0 -16
  123. package/dist/_members/account-model/validators/index.js +0 -7
  124. package/dist/_members/account-model/validators/sessionToken.js +0 -49
  125. package/dist/_members/account-model/validators/uploadToken.js +0 -16
  126. package/dist/_members/account-model/validators/userSettings.js +0 -12
  127. package/dist/_members/account-model/validators/workingComposition.js +0 -20
  128. package/dist/_members/brand-derivation/constants.js +0 -20
  129. package/dist/_members/brand-derivation/contrastSafe.js +0 -114
  130. package/dist/_members/brand-derivation/index.js +0 -1
  131. package/dist/_members/composition/audio/audioMix.js +0 -61
  132. package/dist/_members/composition/audio/index.js +0 -5
  133. package/dist/_members/composition/audio/mixStaging.js +0 -195
  134. package/dist/_members/composition/audio/musicPack.generated.js +0 -136
  135. package/dist/_members/composition/audio/musicPack.js +0 -36
  136. package/dist/_members/composition/audio/pack.generated.js +0 -603
  137. package/dist/_members/composition/audio/pack.js +0 -48
  138. package/dist/_members/composition/audio/palette.js +0 -134
  139. package/dist/_members/composition/autozoom/index.js +0 -83
  140. package/dist/_members/composition/brand-kit.js +0 -45
  141. package/dist/_members/composition/brief/contract.js +0 -209
  142. package/dist/_members/composition/color-grade.js +0 -80
  143. package/dist/_members/composition/depth.js +0 -8
  144. package/dist/_members/composition/fixtures/index.js +0 -143
  145. package/dist/_members/composition/fixtures/vaayaErrored.d.ts +0 -25
  146. package/dist/_members/composition/fixtures/vaayaErrored.js +0 -203
  147. package/dist/_members/composition/fonts.js +0 -162
  148. package/dist/_members/composition/graphics-plan/compile.js +0 -221
  149. package/dist/_members/composition/graphics-plan/index.js +0 -10
  150. package/dist/_members/composition/graphics-plan/instantiateMotif.js +0 -44
  151. package/dist/_members/composition/graphics-plan/motion.js +0 -66
  152. package/dist/_members/composition/graphics-plan/schemas.js +0 -261
  153. package/dist/_members/composition/graphics-plan/solve.js +0 -145
  154. package/dist/_members/composition/index.js +0 -5
  155. package/dist/_members/composition/invariants/clipPlacement.js +0 -69
  156. package/dist/_members/composition/invariants/composition.js +0 -28
  157. package/dist/_members/composition/invariants/errors.js +0 -10
  158. package/dist/_members/composition/invariants/etag.js +0 -38
  159. package/dist/_members/composition/invariants/ids.js +0 -33
  160. package/dist/_members/composition/invariants/index.js +0 -9
  161. package/dist/_members/composition/invariants/keyframes.js +0 -45
  162. package/dist/_members/composition/invariants/markers.js +0 -29
  163. package/dist/_members/composition/invariants/time.js +0 -20
  164. package/dist/_members/composition/invariants/tracks.js +0 -304
  165. package/dist/_members/composition/ops/compositionOps.js +0 -1056
  166. package/dist/_members/composition/ops/headlessStore.js +0 -94
  167. package/dist/_members/composition/ops/index.js +0 -4
  168. package/dist/_members/composition/ops/selectors.js +0 -118
  169. package/dist/_members/composition/ops/timeline-word.js +0 -1
  170. package/dist/_members/composition/ops/transcript.js +0 -77
  171. package/dist/_members/composition/ops/types.js +0 -16
  172. package/dist/_members/composition/primitive-catalog/catalogQuery.js +0 -150
  173. package/dist/_members/composition/primitive-catalog/disabled.js +0 -32
  174. package/dist/_members/composition/primitive-catalog/generated/meta.js +0 -15161
  175. package/dist/_members/composition/primitive-catalog/index.js +0 -46
  176. package/dist/_members/composition/primitive-catalog/paramValidation.js +0 -231
  177. package/dist/_members/composition/primitive-catalog/projection.js +0 -164
  178. package/dist/_members/composition/primitive-catalog/types.js +0 -14
  179. package/dist/_members/composition/projection/behind-placement.js +0 -62
  180. package/dist/_members/composition/projection/brandKit.js +0 -482
  181. package/dist/_members/composition/projection/cardTokens.js +0 -209
  182. package/dist/_members/composition/projection/composition-floor.js +0 -582
  183. package/dist/_members/composition/projection/cropProjection.js +0 -257
  184. package/dist/_members/composition/projection/index.js +0 -7
  185. package/dist/_members/composition/projection/occlusion-budget.js +0 -104
  186. package/dist/_members/composition/projection/safe-zones.js +0 -99
  187. package/dist/_members/composition/reframe/aspectLoss.js +0 -115
  188. package/dist/_members/composition/reframe/coverage.js +0 -62
  189. package/dist/_members/composition/reframe/derive.js +0 -73
  190. package/dist/_members/composition/reframe/index.js +0 -109
  191. package/dist/_members/composition/reframe/kenBurns.js +0 -64
  192. package/dist/_members/composition/reframe/shotScale.js +0 -176
  193. package/dist/_members/composition/reframe/trajectory.js +0 -124
  194. package/dist/_members/composition/timeline/compound.js +0 -134
  195. package/dist/_members/composition/timeline/index.js +0 -9
  196. package/dist/_members/composition/timeline/intent.js +0 -228
  197. package/dist/_members/composition/timeline/keyframes.js +0 -121
  198. package/dist/_members/composition/timeline/link.js +0 -59
  199. package/dist/_members/composition/timeline/occupancy.js +0 -36
  200. package/dist/_members/composition/timeline/placement.js +0 -74
  201. package/dist/_members/composition/timeline/plan.js +0 -31
  202. package/dist/_members/composition/timeline/resolve.js +0 -170
  203. package/dist/_members/composition/timeline/trims.js +0 -278
  204. package/dist/_members/composition/types/index.js +0 -1
  205. package/dist/_members/composition/validators/brandKit.js +0 -295
  206. package/dist/_members/composition/validators/composePlan.js +0 -113
  207. package/dist/_members/composition/validators/composition.js +0 -703
  208. package/dist/_members/composition/validators/font.js +0 -34
  209. package/dist/_members/composition/validators/graphicKinds.js +0 -30
  210. package/dist/_members/composition/validators/index.js +0 -9
  211. package/dist/_members/composition/validators/project.js +0 -29
  212. package/dist/_members/composition/validators/registry.js +0 -41
  213. package/dist/_members/composition/validators/render.js +0 -139
  214. package/dist/_members/composition/validators/session.js +0 -37
  215. package/dist/_members/composition/validators/webhook.js +0 -72
  216. package/dist/_members/composition-ops/alphaLayers.js +0 -141
  217. package/dist/_members/composition-ops/index.js +0 -637
  218. package/dist/_members/composition-ops/materializeGrid.js +0 -99
  219. package/dist/_members/composition-ops/opRecorder.js +0 -196
  220. package/dist/_members/composition-ops/recordingStore.js +0 -14
  221. package/dist/_members/composition-ops/replaceRegion.js +0 -102
  222. package/dist/_members/composition-ops/testFixtures.js +0 -19
  223. package/dist/_members/core/index.js +0 -5
  224. package/dist/_members/core/render/bookends.js +0 -53
  225. package/dist/_members/core/render/captions.js +0 -127
  226. package/dist/_members/core/render/compositionRender.js +0 -1249
  227. package/dist/_members/core/render/deriveTrajectory.js +0 -889
  228. package/dist/_members/core/render/emphasis.js +0 -16
  229. package/dist/_members/core/render/eval/cropBox.js +0 -139
  230. package/dist/_members/core/render/eval/inclusion.js +0 -96
  231. package/dist/_members/core/render/eval/index.js +0 -146
  232. package/dist/_members/core/render/eval/metrics.js +0 -94
  233. package/dist/_members/core/render/exportSettings.js +0 -65
  234. package/dist/_members/core/render/index.js +0 -20
  235. package/dist/_members/core/render/mapFaceToPerson.js +0 -73
  236. package/dist/_members/core/render/types.js +0 -8
  237. package/dist/_members/core/render/vcam/cameraPath.js +0 -248
  238. package/dist/_members/core/render/vcam/constants.js +0 -115
  239. package/dist/_members/core/render/vcam/errorCodes.js +0 -39
  240. package/dist/_members/core/render/vcam/framing.js +0 -136
  241. package/dist/_members/core/render/vcam/requiredRegion.js +0 -137
  242. package/dist/_members/core/render/vcam/shots.js +0 -53
  243. package/dist/_members/core/render/vcam/subjectSet.js +0 -388
  244. package/dist/_members/core/select/errorCodes.js +0 -38
  245. package/dist/_members/core/select/index.js +0 -26
  246. package/dist/_members/core/select/model.js +0 -18
  247. package/dist/_members/core/select/select.js +0 -244
  248. package/dist/_members/core/select/stabilize.js +0 -242
  249. package/dist/_members/core/types.js +0 -7
  250. package/dist/_members/errors/index.js +0 -1
  251. package/dist/_members/errors/registry.js +0 -560
  252. package/dist/_members/foundation/codes/index.js +0 -31
  253. package/dist/_members/foundation/index.js +0 -2
  254. package/dist/_members/foundation/primitives/index.js +0 -5
  255. package/dist/_members/mcp/adapter.js +0 -771
  256. package/dist/_members/mcp/burnedNames.js +0 -73
  257. package/dist/_members/mcp/core.js +0 -390
  258. package/dist/_members/mcp/curation.js +0 -792
  259. package/dist/_members/mcp/executor.js +0 -142
  260. package/dist/_members/mcp/format.js +0 -9
  261. package/dist/_members/mcp/generated/catalogPreviews.js +0 -95
  262. package/dist/_members/mcp/generated/harness.js +0 -81
  263. package/dist/_members/mcp/generated/operations.js +0 -131
  264. package/dist/_members/mcp/index.js +0 -50
  265. package/dist/_members/mcp/internalLoopTools.js +0 -109
  266. package/dist/_members/mcp/prompts.js +0 -45
  267. package/dist/_members/mcp/resources.js +0 -166
  268. package/dist/_members/mcp/server.js +0 -340
  269. package/dist/_members/mcp/wait.js +0 -378
  270. package/dist/_members/mcp/x402Meta.js +0 -66
  271. package/dist/_members/media-model/api.js +0 -175
  272. package/dist/_members/media-model/index.js +0 -1
  273. package/dist/_members/media-model/media-kind.js +0 -116
  274. package/dist/_members/media-model/testing/index.js +0 -1
  275. package/dist/_members/media-model/testing/mediaStoreContract.js +0 -82
  276. package/dist/_members/media-model/transcriptSearch.js +0 -70
  277. package/dist/_members/media-model/transcriptSearchCases.json +0 -79
  278. package/dist/_members/nle-export/compact-timeline.js +0 -73
  279. package/dist/_members/nle-export/compact-timeline.js.map +0 -1
  280. package/dist/_members/nle-export/composition-to-input.js +0 -147
  281. package/dist/_members/nle-export/composition-to-input.js.map +0 -1
  282. package/dist/_members/nle-export/fcpxml.js +0 -159
  283. package/dist/_members/nle-export/fcpxml.js.map +0 -1
  284. package/dist/_members/nle-export/index.js +0 -12
  285. package/dist/_members/nle-export/index.js.map +0 -1
  286. package/dist/_members/nle-export/premiere.js +0 -161
  287. package/dist/_members/nle-export/premiere.js.map +0 -1
  288. package/dist/_members/nle-export/server/index.js +0 -2
  289. package/dist/_members/nle-export/server/index.js.map +0 -1
  290. package/dist/_members/nle-export/server/pack-zip.js +0 -38
  291. package/dist/_members/nle-export/server/pack-zip.js.map +0 -1
  292. package/dist/_members/nle-export/srt.js +0 -50
  293. package/dist/_members/nle-export/srt.js.map +0 -1
  294. package/dist/_members/nle-export/types.js +0 -9
  295. package/dist/_members/nle-export/types.js.map +0 -1
  296. package/dist/_members/nle-export/xml/index.js +0 -11
  297. package/dist/_members/nle-export/xml/index.js.map +0 -1
  298. package/dist/_members/nle-export/xml-utils.js +0 -48
  299. package/dist/_members/nle-export/xml-utils.js.map +0 -1
  300. package/dist/_members/perception/activeSpeaker.js +0 -103
  301. package/dist/_members/perception/audioQuality.js +0 -76
  302. package/dist/_members/perception/energyBeat.js +0 -99
  303. package/dist/_members/perception/identityMatch.js +0 -91
  304. package/dist/_members/perception/index.js +0 -48
  305. package/dist/_members/perception/visualQuality.js +0 -95
  306. package/dist/_members/plane/conformance.js +0 -90
  307. package/dist/_members/plane/contract.js +0 -49
  308. package/dist/_members/plane/index.js +0 -16
  309. package/dist/_members/primitives/backgrounds/index.js +0 -32
  310. package/dist/_members/primitives/backgrounds/index.js.map +0 -1
  311. package/dist/_members/primitives/captions/index.js +0 -398
  312. package/dist/_members/primitives/captions/index.js.map +0 -1
  313. package/dist/_members/primitives/chunk-2LVE4UIT.js +0 -139
  314. package/dist/_members/primitives/chunk-2LVE4UIT.js.map +0 -1
  315. package/dist/_members/primitives/chunk-3IQUH6KK.js +0 -20
  316. package/dist/_members/primitives/chunk-3IQUH6KK.js.map +0 -1
  317. package/dist/_members/primitives/chunk-3OMURV6Q.js +0 -112
  318. package/dist/_members/primitives/chunk-3OMURV6Q.js.map +0 -1
  319. package/dist/_members/primitives/chunk-4IS6TMEG.js +0 -21
  320. package/dist/_members/primitives/chunk-4IS6TMEG.js.map +0 -1
  321. package/dist/_members/primitives/chunk-5MWGAEGQ.js +0 -1644
  322. package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +0 -1
  323. package/dist/_members/primitives/chunk-7RRPFPQK.js +0 -15
  324. package/dist/_members/primitives/chunk-7RRPFPQK.js.map +0 -1
  325. package/dist/_members/primitives/chunk-DH5TRZK2.js +0 -125
  326. package/dist/_members/primitives/chunk-DH5TRZK2.js.map +0 -1
  327. package/dist/_members/primitives/chunk-E3KNUSFG.js +0 -2337
  328. package/dist/_members/primitives/chunk-E3KNUSFG.js.map +0 -1
  329. package/dist/_members/primitives/chunk-G2B3G4HK.js +0 -47
  330. package/dist/_members/primitives/chunk-G2B3G4HK.js.map +0 -1
  331. package/dist/_members/primitives/chunk-HFPFGZXT.js +0 -1494
  332. package/dist/_members/primitives/chunk-HFPFGZXT.js.map +0 -1
  333. package/dist/_members/primitives/chunk-HIWVFZVH.js +0 -19
  334. package/dist/_members/primitives/chunk-HIWVFZVH.js.map +0 -1
  335. package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +0 -1
  336. package/dist/_members/primitives/chunk-KNC6JP5F.js +0 -34
  337. package/dist/_members/primitives/chunk-KNC6JP5F.js.map +0 -1
  338. package/dist/_members/primitives/chunk-KYRDVZST.js +0 -459
  339. package/dist/_members/primitives/chunk-KYRDVZST.js.map +0 -1
  340. package/dist/_members/primitives/chunk-LWLHS2NS.js +0 -3410
  341. package/dist/_members/primitives/chunk-LWLHS2NS.js.map +0 -1
  342. package/dist/_members/primitives/chunk-QAQ3P7DR.js +0 -8855
  343. package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +0 -1
  344. package/dist/_members/primitives/chunk-ROV2ODWC.js +0 -81
  345. package/dist/_members/primitives/chunk-ROV2ODWC.js.map +0 -1
  346. package/dist/_members/primitives/chunk-TCRC2FH3.js +0 -183
  347. package/dist/_members/primitives/chunk-TCRC2FH3.js.map +0 -1
  348. package/dist/_members/primitives/chunk-US4YEDAA.js +0 -96
  349. package/dist/_members/primitives/chunk-US4YEDAA.js.map +0 -1
  350. package/dist/_members/primitives/chunk-UVKRO5ER.js +0 -13
  351. package/dist/_members/primitives/chunk-UVKRO5ER.js.map +0 -1
  352. package/dist/_members/primitives/chunk-W4EIIF2I.js +0 -10
  353. package/dist/_members/primitives/chunk-W4EIIF2I.js.map +0 -1
  354. package/dist/_members/primitives/chunk-WPGKIPCO.js +0 -3563
  355. package/dist/_members/primitives/chunk-WPGKIPCO.js.map +0 -1
  356. package/dist/_members/primitives/chunk-WZFLEGMD.js +0 -1435
  357. package/dist/_members/primitives/chunk-WZFLEGMD.js.map +0 -1
  358. package/dist/_members/primitives/chunk-XHU3WBEI.js +0 -33
  359. package/dist/_members/primitives/chunk-XHU3WBEI.js.map +0 -1
  360. package/dist/_members/primitives/chunk-YN7WTZZ7.js +0 -46
  361. package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +0 -1
  362. package/dist/_members/primitives/effects/index.js +0 -30
  363. package/dist/_members/primitives/effects/index.js.map +0 -1
  364. package/dist/_members/primitives/hero-text/index.js +0 -14
  365. package/dist/_members/primitives/hero-text/index.js.map +0 -1
  366. package/dist/_members/primitives/index.js +0 -64
  367. package/dist/_members/primitives/index.js.map +0 -1
  368. package/dist/_members/primitives/layouts/index.js +0 -24
  369. package/dist/_members/primitives/layouts/index.js.map +0 -1
  370. package/dist/_members/primitives/lib/easings.js +0 -26
  371. package/dist/_members/primitives/lib/easings.js.map +0 -1
  372. package/dist/_members/primitives/lib/index.js +0 -74
  373. package/dist/_members/primitives/lib/index.js.map +0 -1
  374. package/dist/_members/primitives/lib/palette.js +0 -72
  375. package/dist/_members/primitives/lib/palette.js.map +0 -1
  376. package/dist/_members/primitives/lib/preview.js +0 -8
  377. package/dist/_members/primitives/lib/preview.js.map +0 -1
  378. package/dist/_members/primitives/lib/schema.js +0 -12
  379. package/dist/_members/primitives/lib/schema.js.map +0 -1
  380. package/dist/_members/primitives/lib/seeded-random.js +0 -14
  381. package/dist/_members/primitives/lib/seeded-random.js.map +0 -1
  382. package/dist/_members/primitives/lib/text/contrast.js +0 -12
  383. package/dist/_members/primitives/lib/text/contrast.js.map +0 -1
  384. package/dist/_members/primitives/lib/text/fill.js +0 -8
  385. package/dist/_members/primitives/lib/text/fill.js.map +0 -1
  386. package/dist/_members/primitives/lib/text/fitText.js +0 -10
  387. package/dist/_members/primitives/lib/text/fitText.js.map +0 -1
  388. package/dist/_members/primitives/lib/text/marker.js +0 -8
  389. package/dist/_members/primitives/lib/text/marker.js.map +0 -1
  390. package/dist/_members/primitives/lib/text/motion.js +0 -16
  391. package/dist/_members/primitives/lib/text/motion.js.map +0 -1
  392. package/dist/_members/primitives/lib/text/recolor.js +0 -8
  393. package/dist/_members/primitives/lib/text/recolor.js.map +0 -1
  394. package/dist/_members/primitives/lib/text/spec.js +0 -1
  395. package/dist/_members/primitives/lib/text/spec.js.map +0 -1
  396. package/dist/_members/primitives/lib/text/stage.js +0 -8
  397. package/dist/_members/primitives/lib/text/stage.js.map +0 -1
  398. package/dist/_members/primitives/lib/text/typeface.js +0 -8
  399. package/dist/_members/primitives/lib/text/typeface.js.map +0 -1
  400. package/dist/_members/primitives/lib/tokens.js +0 -24
  401. package/dist/_members/primitives/lib/tokens.js.map +0 -1
  402. package/dist/_members/primitives/lib/types.js +0 -1
  403. package/dist/_members/primitives/lib/types.js.map +0 -1
  404. package/dist/_members/primitives/params-required.json +0 -153
  405. package/dist/_members/primitives/scenes/index.js +0 -25
  406. package/dist/_members/primitives/scenes/index.js.map +0 -1
  407. package/dist/_members/primitives/subject-foreground/index.js +0 -30
  408. package/dist/_members/primitives/subject-foreground/index.js.map +0 -1
  409. package/dist/_members/primitives/text/index.js +0 -57
  410. package/dist/_members/primitives/text/index.js.map +0 -1
  411. package/dist/_members/primitives/transitions/index.js +0 -67
  412. package/dist/_members/primitives/transitions/index.js.map +0 -1
  413. package/dist/_members/primitives/ui-blocks/index.js +0 -76
  414. package/dist/_members/primitives/ui-blocks/index.js.map +0 -1
  415. package/dist/_members/primitives/version-map.json +0 -105
  416. package/dist/_members/primitives/workspace.js +0 -60
  417. package/dist/_members/primitives/workspace.js.map +0 -1
  418. package/dist/chunk-7GISRVON.js +0 -14176
  419. package/dist/chunk-DIBOJJMU.js +0 -16838
  420. package/dist/chunk-EAUSEGB7.js +0 -420
  421. package/dist/chunk-FUWJOVVK.js +0 -3633
  422. package/dist/chunk-G75E7YA4.js +0 -11883
  423. package/dist/chunk-JCZQT7K3.js +0 -3266
  424. package/dist/chunk-KF5ETMKB.js +0 -544
  425. package/dist/chunk-NDKERSXY.js +0 -1296
  426. package/dist/chunk-V43Y7IE4.js +0 -3621
  427. package/dist/chunk-VIVQHIGZ.js +0 -4319
  428. package/dist/chunk-YA3OR2KK.js +0 -249
  429. package/dist/hls-HD4C5G6W.js +0 -33000
  430. package/dist/token-RGFIT24D.js +0 -69
  431. package/dist/token-util-GPLSGYVO.js +0 -5
  432. package/dist/vision_bundle-5Y376MAR.js +0 -4084
@@ -1,159 +0,0 @@
1
- import { create } from "xmlbuilder2";
2
- /**
3
- * Generate FCPXML v1.11. Compatible with Final Cut Pro 11 and DaVinci Resolve 19.
4
- *
5
- * Multi-clip, multi-asset composition:
6
- * - One <format> per unique (w, h, fpsNum, fpsDen) across assets + sequence.
7
- * - One <asset> per assets[] entry.
8
- * - One <asset-clip> per spine[] item (offset/duration in sequence rate; start in source rate).
9
- * - Markers with spineItemId render inside the matching <asset-clip>, start
10
- * relativized to the clip's timelineStartFrames.
11
- * - Markers without spineItemId render at spine root, start in sequence-absolute rate.
12
- * - Text overlays overlapping a spine item render as markers inside that clip
13
- * (value = overlay.text). Overlays outside all clips are dropped.
14
- */
15
- export function generateFcpxml(input) {
16
- const { title, sequence, assets, spine, markers, textOverlays } = input;
17
- const doc = create({ version: "1.0", encoding: "UTF-8" })
18
- .dtd({ name: "fcpxml" })
19
- .ele("fcpxml", { version: "1.11" });
20
- // ── Resources ────────────────────────────────────────────
21
- const resources = doc.ele("resources");
22
- // Collect unique formats across sequence + all assets.
23
- const formatKey = (w, h, fpsNum, fpsDen) => `${w}x${h}-${fpsNum}-${fpsDen}`;
24
- const formatSpecs = new Map();
25
- const registerFormat = (w, h, fpsNum, fpsDen) => {
26
- const key = formatKey(w, h, fpsNum, fpsDen);
27
- const existing = formatSpecs.get(key);
28
- if (existing)
29
- return existing.id;
30
- const id = formatId(w, h, fpsNum, fpsDen);
31
- formatSpecs.set(key, { id, width: w, height: h, fpsNum, fpsDen });
32
- return id;
33
- };
34
- const seqFormatId = registerFormat(sequence.width, sequence.height, sequence.fpsNum, sequence.fpsDen);
35
- const assetFormatIds = new Map();
36
- for (const asset of assets) {
37
- const id = registerFormat(asset.width, asset.height, asset.fpsNum, asset.fpsDen);
38
- assetFormatIds.set(asset.id, id);
39
- }
40
- for (const spec of formatSpecs.values()) {
41
- resources.ele("format", {
42
- id: spec.id,
43
- name: formatName(spec.width, spec.height, spec.fpsNum, spec.fpsDen),
44
- frameDuration: frameDuration(spec.fpsNum, spec.fpsDen),
45
- width: String(spec.width),
46
- height: String(spec.height),
47
- });
48
- }
49
- // Assets
50
- for (const asset of assets) {
51
- const assetFormatId = assetFormatIds.get(asset.id);
52
- const durMs = Math.round(asset.durationSec * 1000);
53
- const a = resources.ele("asset", {
54
- id: asset.id,
55
- name: asset.displayName,
56
- start: "0s",
57
- duration: `${durMs}/1000s`,
58
- hasVideo: "1",
59
- hasAudio: "1",
60
- format: assetFormatId,
61
- videoSources: "1",
62
- audioSources: "1",
63
- audioChannels: "2",
64
- });
65
- a.ele("media-rep", {
66
- kind: "original-media",
67
- src: `./${asset.relPath}`,
68
- });
69
- }
70
- // ── Library / Event / Project / Sequence ───────────────
71
- const seqDur = rational(sequence.durationFrames, sequence.fpsNum, sequence.fpsDen);
72
- const spineEl = doc
73
- .ele("library")
74
- .ele("event", { name: title })
75
- .ele("project", { name: title })
76
- .ele("sequence", {
77
- format: seqFormatId,
78
- duration: seqDur,
79
- tcStart: "0s",
80
- tcFormat: "NDF",
81
- audioLayout: "stereo",
82
- audioRate: "48k",
83
- })
84
- .ele("spine");
85
- const assetById = new Map(assets.map((a) => [a.id, a]));
86
- // Spine items → asset-clips
87
- for (const item of spine) {
88
- const asset = assetById.get(item.assetId);
89
- if (!asset)
90
- continue;
91
- const assetFormatId = assetFormatIds.get(asset.id);
92
- const clipEl = spineEl.ele("asset-clip", {
93
- ref: asset.id,
94
- offset: rational(item.timelineStartFrames, sequence.fpsNum, sequence.fpsDen),
95
- name: asset.displayName,
96
- duration: rational(item.timelineDurationFrames, sequence.fpsNum, sequence.fpsDen),
97
- start: rational(item.inFrames, asset.fpsNum, asset.fpsDen),
98
- format: assetFormatId,
99
- tcFormat: "NDF",
100
- });
101
- // Markers attached to this spine item
102
- const clipMarkers = markers.filter((m) => m.spineItemId === item.id);
103
- for (const m of clipMarkers) {
104
- const relFrames = m.startFrames - item.timelineStartFrames;
105
- emitMarker(clipEl, m, relFrames, sequence.fpsNum, sequence.fpsDen);
106
- }
107
- // Text overlays overlapping this spine item (by startFrames)
108
- const itemEnd = item.timelineStartFrames + item.timelineDurationFrames;
109
- const overlappingOverlays = textOverlays.filter((o) => o.startFrames >= item.timelineStartFrames && o.startFrames < itemEnd);
110
- for (const o of overlappingOverlays) {
111
- const relFrames = o.startFrames - item.timelineStartFrames;
112
- emitOverlayMarker(clipEl, o, relFrames, sequence.fpsNum, sequence.fpsDen);
113
- }
114
- }
115
- // Root-level markers (no spineItemId)
116
- const rootMarkers = markers.filter((m) => !m.spineItemId);
117
- for (const m of rootMarkers) {
118
- emitMarker(spineEl, m, m.startFrames, sequence.fpsNum, sequence.fpsDen);
119
- }
120
- return doc.end({ prettyPrint: true, allowEmptyTags: true });
121
- }
122
- // ── helpers ────────────────────────────────────────────────
123
- function rational(frames, fpsNum, fpsDen) {
124
- if (frames === 0)
125
- return "0s";
126
- return `${frames * fpsDen}/${fpsNum}s`;
127
- }
128
- function frameDuration(fpsNum, fpsDen) {
129
- return `${fpsDen}/${fpsNum}s`;
130
- }
131
- function formatId(width, height, fpsNum, fpsDen) {
132
- return `r-${width}x${height}-${fpsNum}-${fpsDen}`;
133
- }
134
- function formatName(_w, h, fpsNum, fpsDen) {
135
- const rate = fpsDen === 1001
136
- ? Math.round((fpsNum / 1000) * 100) / 100
137
- : fpsNum / fpsDen;
138
- return `FFVideoFormat${h}p${String(rate).replace(".", "")}`;
139
- }
140
- function emitMarker(parent, m, startFrames, fpsNum, fpsDen) {
141
- const dur = Math.max(1, m.durationFrames);
142
- const attrs = {
143
- start: rational(startFrames, fpsNum, fpsDen),
144
- duration: rational(dur, fpsNum, fpsDen),
145
- value: m.name,
146
- };
147
- if (m.note)
148
- attrs.note = m.note;
149
- parent.ele("marker", attrs);
150
- }
151
- function emitOverlayMarker(parent, o, startFrames, fpsNum, fpsDen) {
152
- const dur = Math.max(1, o.durationFrames);
153
- parent.ele("marker", {
154
- start: rational(startFrames, fpsNum, fpsDen),
155
- duration: rational(dur, fpsNum, fpsDen),
156
- value: o.text,
157
- });
158
- }
159
- //# sourceMappingURL=fcpxml.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fcpxml.js","sourceRoot":"","sources":["../src/fcpxml.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Root subpath — zero-dep, edge-runtime-safe. Types + pure-TS logic only.
3
- *
4
- * XML generators (which depend on xmlbuilder2) live at `@cueframe/nle-export/xml`.
5
- * Node-only packaging (archiver) lives at `@cueframe/nle-export/server`.
6
- */
7
- export { generateSrt } from "./srt";
8
- export { compositionToClipExportInput } from "./composition-to-input";
9
- export { compactTimeline } from "./compact-timeline";
10
- export { slugify } from "./xml-utils";
11
- export * from "./types";
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,cAAc,SAAS,CAAC"}
@@ -1,161 +0,0 @@
1
- import { create } from "xmlbuilder2";
2
- /**
3
- * xmlbuilder2 escapes &, <, > automatically in text nodes, but leaves
4
- * " and ' unescaped (valid per XML spec since they aren't ambiguous in
5
- * text content). Premiere Pro's xmeml consumers are historically
6
- * conservative — pre-escape " and ' only so xmlbuilder2 can still
7
- * handle the others without double-encoding.
8
- */
9
- function escapeQuotes(s) {
10
- return s.replace(/"/g, "&quot;").replace(/'/g, "&apos;");
11
- }
12
- function displayRate(fpsNum, fpsDen) {
13
- if (fpsDen === 1001) {
14
- return { timebase: Math.round(fpsNum / 1000), ntsc: "TRUE" };
15
- }
16
- return { timebase: Math.round(fpsNum / fpsDen), ntsc: "FALSE" };
17
- }
18
- function findOwningSpineItem(spine, startFrames, durationFrames) {
19
- const overlayStart = startFrames;
20
- const overlayEnd = startFrames + Math.max(1, durationFrames);
21
- for (const item of spine) {
22
- const itemStart = item.timelineStartFrames;
23
- const itemEnd = item.timelineStartFrames + item.timelineDurationFrames;
24
- if (overlayStart < itemEnd && overlayEnd > itemStart) {
25
- return item;
26
- }
27
- }
28
- return null;
29
- }
30
- export function generatePremiereXml(input) {
31
- const { title, sequence, assets, spine, markers, textOverlays } = input;
32
- const assetById = new Map();
33
- for (const a of assets)
34
- assetById.set(a.id, a);
35
- const seqRate = displayRate(sequence.fpsNum, sequence.fpsDen);
36
- const doc = create({ version: "1.0", encoding: "UTF-8" })
37
- .dtd({ name: "xmeml" })
38
- .ele("xmeml", { version: "4" });
39
- const seqEl = doc.ele("sequence", { id: "sequence-1" });
40
- seqEl.ele("name").txt(escapeQuotes(title)).up();
41
- seqEl.ele("duration").txt(String(sequence.durationFrames)).up();
42
- const seqRateEl = seqEl.ele("rate");
43
- seqRateEl.ele("timebase").txt(String(seqRate.timebase)).up();
44
- seqRateEl.ele("ntsc").txt(seqRate.ntsc).up();
45
- seqRateEl.up();
46
- const mediaEl = seqEl.ele("media");
47
- // ── Video ────────────────────────────────────────────────
48
- const videoEl = mediaEl.ele("video");
49
- const videoFormatEl = videoEl.ele("format");
50
- const videoSampEl = videoFormatEl.ele("samplecharacteristics");
51
- videoSampEl.ele("width").txt(String(sequence.width)).up();
52
- videoSampEl.ele("height").txt(String(sequence.height)).up();
53
- videoSampEl.up();
54
- videoFormatEl.up();
55
- const trackEl = videoEl.ele("track");
56
- const seenAssetIds = new Set();
57
- spine.forEach((item, idx) => {
58
- const asset = assetById.get(item.assetId);
59
- if (!asset)
60
- return;
61
- const assetRate = displayRate(asset.fpsNum, asset.fpsDen);
62
- const clipDurationInAssetRate = asset.originOutFrames - asset.originInFrames;
63
- const clipitemEl = trackEl.ele("clipitem", { id: `clipitem-${idx + 1}` });
64
- clipitemEl.ele("name").txt(escapeQuotes(asset.displayName)).up();
65
- clipitemEl.ele("enabled").txt("TRUE").up();
66
- clipitemEl.ele("duration").txt(String(clipDurationInAssetRate)).up();
67
- const rateEl = clipitemEl.ele("rate");
68
- rateEl.ele("timebase").txt(String(assetRate.timebase)).up();
69
- rateEl.ele("ntsc").txt(assetRate.ntsc).up();
70
- rateEl.up();
71
- clipitemEl.ele("in").txt(String(item.inFrames)).up();
72
- clipitemEl.ele("out").txt(String(item.outFrames)).up();
73
- clipitemEl.ele("start").txt(String(item.timelineStartFrames)).up();
74
- clipitemEl
75
- .ele("end")
76
- .txt(String(item.timelineStartFrames + item.timelineDurationFrames))
77
- .up();
78
- // <file>: full body on first occurrence, empty self-close on subsequent.
79
- if (!seenAssetIds.has(asset.id)) {
80
- seenAssetIds.add(asset.id);
81
- const fileEl = clipitemEl.ele("file", { id: asset.id });
82
- fileEl.ele("name").txt(escapeQuotes(asset.displayName)).up();
83
- fileEl.ele("pathurl").txt(escapeQuotes(`file://./${asset.relPath}`)).up();
84
- const fileRateEl = fileEl.ele("rate");
85
- fileRateEl.ele("timebase").txt(String(assetRate.timebase)).up();
86
- fileRateEl.ele("ntsc").txt(assetRate.ntsc).up();
87
- fileRateEl.up();
88
- // Duration in source-rate frames — use the rational rate, not the
89
- // integer timebase. For NTSC 29.97 the integer timebase (30) would
90
- // otherwise overshoot by a frame per every ~1000 frames, showing up
91
- // in Premiere's bin metadata as a 1-frame-off clip length.
92
- const assetDurationFrames = Math.round(asset.durationSec * (asset.fpsNum / asset.fpsDen));
93
- fileEl.ele("duration").txt(String(assetDurationFrames)).up();
94
- const fileMediaEl = fileEl.ele("media");
95
- const fileVideoEl = fileMediaEl.ele("video");
96
- const fileVideoSampEl = fileVideoEl.ele("samplecharacteristics");
97
- fileVideoSampEl.ele("width").txt(String(asset.width)).up();
98
- fileVideoSampEl.ele("height").txt(String(asset.height)).up();
99
- fileVideoSampEl.up();
100
- fileVideoEl.up();
101
- const fileAudioEl = fileMediaEl.ele("audio");
102
- const fileAudioSampEl = fileAudioEl.ele("samplecharacteristics");
103
- fileAudioSampEl.ele("samplerate").txt("48000").up();
104
- fileAudioSampEl.ele("depth").txt("16").up();
105
- fileAudioSampEl.up();
106
- fileAudioEl.ele("channelcount").txt("2").up();
107
- fileAudioEl.up();
108
- fileMediaEl.up();
109
- fileEl.up();
110
- }
111
- else {
112
- clipitemEl.ele("file", { id: asset.id }).up();
113
- }
114
- // Markers belonging to this spine item.
115
- const emitClipMarker = (name, note, startAbsFrames, durationFrames) => {
116
- const markerEl = clipitemEl.ele("marker");
117
- markerEl.ele("name").txt(escapeQuotes(name)).up();
118
- if (note && note.length > 0) {
119
- markerEl.ele("comment").txt(escapeQuotes(note)).up();
120
- }
121
- const relStart = startAbsFrames - item.timelineStartFrames;
122
- const dur = Math.max(1, durationFrames);
123
- markerEl.ele("in").txt(String(relStart)).up();
124
- markerEl.ele("out").txt(String(relStart + dur)).up();
125
- markerEl.up();
126
- };
127
- for (const m of markers) {
128
- if (m.spineItemId === item.id) {
129
- emitClipMarker(m.name, m.note, m.startFrames, m.durationFrames);
130
- }
131
- }
132
- // Overlays overlapping this item.
133
- for (const overlay of textOverlays) {
134
- const owner = findOwningSpineItem(spine, overlay.startFrames, overlay.durationFrames);
135
- if (owner && owner.id === item.id) {
136
- emitClipMarker(overlay.text, undefined, overlay.startFrames, overlay.durationFrames);
137
- }
138
- }
139
- clipitemEl.up();
140
- });
141
- trackEl.up();
142
- videoEl.up();
143
- mediaEl.up();
144
- // Root-level markers (no spineItemId) — emitted AFTER </media> (after all tracks).
145
- for (const m of markers) {
146
- if (m.spineItemId)
147
- continue;
148
- const markerEl = seqEl.ele("marker");
149
- markerEl.ele("name").txt(escapeQuotes(m.name)).up();
150
- if (m.note && m.note.length > 0) {
151
- markerEl.ele("comment").txt(escapeQuotes(m.note)).up();
152
- }
153
- const dur = Math.max(1, m.durationFrames);
154
- markerEl.ele("in").txt(String(m.startFrames)).up();
155
- markerEl.ele("out").txt(String(m.startFrames + dur)).up();
156
- markerEl.up();
157
- }
158
- seqEl.up();
159
- return doc.end({ prettyPrint: true });
160
- }
161
- //# sourceMappingURL=premiere.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"premiere.js","sourceRoot":"","sources":["../src/premiere.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { packExportZip } from "./pack-zip";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -1,38 +0,0 @@
1
- import archiver from "archiver";
2
- import { createWriteStream } from "node:fs";
3
- import { readdir, stat } from "node:fs/promises";
4
- import { join, relative } from "node:path";
5
- export async function packExportZip({ workdir, format, }) {
6
- const outputName = `${format}.zip`;
7
- const zipPath = join(workdir, outputName);
8
- const output = createWriteStream(zipPath);
9
- const archive = archiver("zip", { zlib: { level: 6 } });
10
- const done = new Promise((resolve, reject) => {
11
- output.on("close", () => resolve());
12
- output.on("error", reject);
13
- archive.on("error", reject);
14
- archive.pipe(output);
15
- });
16
- async function addDir(dir) {
17
- const entries = await readdir(dir);
18
- for (const name of entries) {
19
- const full = join(dir, name);
20
- const rel = relative(workdir, full);
21
- if (rel === outputName)
22
- continue; // skip our own zip
23
- const s = await stat(full);
24
- if (s.isDirectory()) {
25
- await addDir(full);
26
- }
27
- else {
28
- const isMp4 = full.toLowerCase().endsWith(".mp4");
29
- archive.file(full, { name: rel, store: isMp4 });
30
- }
31
- }
32
- }
33
- await addDir(workdir);
34
- await archive.finalize();
35
- await done;
36
- return zipPath;
37
- }
38
- //# sourceMappingURL=pack-zip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pack-zip.js","sourceRoot":"","sources":["../../src/server/pack-zip.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAI3C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,OAAO,EACP,MAAM,GAIP;IACC,MAAM,UAAU,GAAG,GAAG,MAAM,MAAM,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,MAAM,CAAC,GAAW;QAC/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,KAAK,UAAU;gBAAE,SAAS,CAAC,mBAAmB;YACrD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpB,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAA2B,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzB,MAAM,IAAI,CAAC;IACX,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,50 +0,0 @@
1
- function formatMs(totalMs) {
2
- const ms = Math.max(0, Math.round(totalMs));
3
- const h = Math.floor(ms / 3600000);
4
- const m = Math.floor((ms % 3600000) / 60000);
5
- const s = Math.floor((ms % 60000) / 1000);
6
- const msPart = ms % 1000;
7
- const pad = (n, w = 2) => String(n).padStart(w, "0");
8
- return `${pad(h)}:${pad(m)}:${pad(s)},${pad(msPart, 3)}`;
9
- }
10
- export function generateSrt(input) {
11
- const { spine, assets, transcriptsBySourceId, sequence } = input;
12
- const seqFps = sequence.fpsNum / sequence.fpsDen;
13
- const assetById = new Map(assets.map((a) => [a.id, a]));
14
- const cues = [];
15
- for (const item of spine) {
16
- const asset = assetById.get(item.assetId);
17
- if (!asset)
18
- continue;
19
- const transcript = transcriptsBySourceId[asset.sourceId];
20
- if (!transcript?.length)
21
- continue;
22
- // Cue times are in **source seconds** (absolute on the original media).
23
- // The clip plays source seconds [sourceInSec, sourceOutSec], which equals
24
- // [asset.originInFrames, asset.originOutFrames] converted to seconds.
25
- // item.inFrames/outFrames are offsets within the *trimmed* file and are
26
- // NOT used here — cue matching happens in source-time.
27
- const assetFps = asset.fpsNum / asset.fpsDen;
28
- const sourceInSec = asset.originInFrames / assetFps;
29
- const sourceOutSec = asset.originOutFrames / assetFps;
30
- const timelineOffsetSec = item.timelineStartFrames / seqFps;
31
- for (const cue of transcript) {
32
- if (cue.endSec <= sourceInSec || cue.startSec >= sourceOutSec)
33
- continue;
34
- const clampStart = Math.max(cue.startSec, sourceInSec);
35
- const clampEnd = Math.min(cue.endSec, sourceOutSec);
36
- cues.push({
37
- startMs: (clampStart - sourceInSec + timelineOffsetSec) * 1000,
38
- endMs: (clampEnd - sourceInSec + timelineOffsetSec) * 1000,
39
- text: cue.text,
40
- });
41
- }
42
- }
43
- cues.sort((a, b) => a.startMs - b.startMs);
44
- if (cues.length === 0)
45
- return "";
46
- return cues
47
- .map((c, i) => `${i + 1}\n${formatMs(c.startMs)} --> ${formatMs(c.endMs)}\n${c.text}\n`)
48
- .join("\n");
49
- }
50
- //# sourceMappingURL=srt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"srt.js","sourceRoot":"","sources":["../src/srt.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export class CompositionValidationError extends Error {
2
- details;
3
- constructor(message, details) {
4
- super(message);
5
- this.details = details;
6
- this.name = "CompositionValidationError";
7
- }
8
- }
9
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAgMA,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAGjC;IAFlB,YACE,OAAe,EACC,OAA0C;QAE1D,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,YAAO,GAAP,OAAO,CAAmC;QAG1D,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF"}
@@ -1,11 +0,0 @@
1
- /**
2
- * NLE XML generators. Pulls `xmlbuilder2` which uses Node's Buffer, so this
3
- * subpath only loads cleanly in Node or full browser bundles — NOT in edge
4
- * runtimes (Convex V8 isolate, Cloudflare Workers without node-compat).
5
- *
6
- * Convex + edge-runtime consumers should import types + converter + srt from
7
- * the package root, which is xmlbuilder2-free.
8
- */
9
- export { generateFcpxml } from "../fcpxml";
10
- export { generatePremiereXml } from "../premiere";
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/xml/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Classify a frame rate. Handles integer fps and NTSC fractional rates
3
- * (23.976, 29.97, 59.94) which use rational time values with 1001 numerator.
4
- */
5
- export function getFrameRateInfo(fps) {
6
- const ntscN = Math.round((fps * 1001) / 1000);
7
- const ntscFps = (ntscN * 1000) / 1001;
8
- const isNtsc = ntscN > 0 &&
9
- fps !== ntscN && // exclude integer rates
10
- Math.abs(fps - ntscFps) < 0.01;
11
- if (isNtsc) {
12
- return {
13
- displayRate: ntscN,
14
- isNtsc: true,
15
- frameDuration: `1001/${ntscN * 1000}s`,
16
- };
17
- }
18
- const rounded = Math.round(fps);
19
- return {
20
- displayRate: rounded,
21
- isNtsc: false,
22
- frameDuration: `1/${rounded}s`,
23
- };
24
- }
25
- /**
26
- * Convert seconds to an FCPXML rational time string.
27
- * For NTSC rates, emits `frames*1001 / displayRate*1000 s` so timing stays exact.
28
- */
29
- export function toRationalTime(seconds, fps) {
30
- const { displayRate, isNtsc } = getFrameRateInfo(fps);
31
- const frames = Math.round(seconds * fps);
32
- if (isNtsc) {
33
- return `${frames * 1001}/${displayRate * 1000}s`;
34
- }
35
- return `${frames}/${displayRate}s`;
36
- }
37
- /** Convert seconds to an integer frame count (display frames). */
38
- export function toFrames(seconds, fps) {
39
- return Math.round(seconds * fps);
40
- }
41
- export function slugify(s) {
42
- return (s
43
- .toLowerCase()
44
- .replace(/[^a-z0-9]+/g, '-')
45
- .replace(/^-+|-+$/g, '')
46
- .slice(0, 64) || 'clip');
47
- }
48
- //# sourceMappingURL=xml-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xml-utils.js","sourceRoot":"","sources":["../src/xml-utils.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,MAAM,GACV,KAAK,GAAG,CAAC;QACT,GAAG,KAAK,KAAK,IAAI,wBAAwB;QACzC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAEjC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,QAAQ,KAAK,GAAG,IAAI,GAAG;SACvC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,KAAK;QACb,aAAa,EAAE,KAAK,OAAO,GAAG;KAC/B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,GAAW;IACzD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,GAAG,MAAM,GAAG,IAAI,IAAI,WAAW,GAAG,IAAI,GAAG,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,MAAM,IAAI,WAAW,GAAG,CAAC;AACrC,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAW;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CACL,CAAC;SACE,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAC1B,CAAC;AACJ,CAAC"}