@nodaro/shared 1.4.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.
- package/LICENSE +202 -0
- package/README.md +32 -0
- package/dist/index.cjs +12506 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +12269 -0
- package/dist/index.d.ts +12269 -0
- package/dist/index.js +11831 -0
- package/dist/index.js.map +1 -0
- package/package.json +54 -0
- package/src/__tests__/__snapshots__/prompt-builder-segments.test.ts.snap +65 -0
- package/src/__tests__/ai-avatar-pricing.test.ts +321 -0
- package/src/__tests__/apply-video-negative-prompt.test.ts +76 -0
- package/src/__tests__/attach-columns.test.ts +28 -0
- package/src/__tests__/audio-crossfade-curves.test.ts +33 -0
- package/src/__tests__/build-model-menu.test.ts +58 -0
- package/src/__tests__/character-aspect-defaults.test.ts +142 -0
- package/src/__tests__/character-mention-slug.test.ts +199 -0
- package/src/__tests__/character-reference-photo-kinds.test.ts +32 -0
- package/src/__tests__/character-usage-mode.test.ts +147 -0
- package/src/__tests__/character-variant-assets.test.ts +142 -0
- package/src/__tests__/character-voice.test.ts +130 -0
- package/src/__tests__/cinematic-avatar-pricing.test.ts +119 -0
- package/src/__tests__/combine-transitions.test.ts +137 -0
- package/src/__tests__/component-types.test.ts +87 -0
- package/src/__tests__/condition-variables.test.ts +98 -0
- package/src/__tests__/credit-identifiers.test.ts +811 -0
- package/src/__tests__/default-video-provider.test.ts +63 -0
- package/src/__tests__/entity-image-handle.test.ts +43 -0
- package/src/__tests__/entity-variants.test.ts +33 -0
- package/src/__tests__/fal-lip-sync-sets.test.ts +31 -0
- package/src/__tests__/featured-entities.test.ts +33 -0
- package/src/__tests__/film-pricing.test.ts +64 -0
- package/src/__tests__/filter-condition.test.ts +285 -0
- package/src/__tests__/freecut-protocol.test.ts +35 -0
- package/src/__tests__/generate-text-items.test.ts +19 -0
- package/src/__tests__/generated-results.test.ts +50 -0
- package/src/__tests__/graph-utils.test.ts +618 -0
- package/src/__tests__/group-aggregation.test.ts +83 -0
- package/src/__tests__/i18n-locale-completeness.test.ts +156 -0
- package/src/__tests__/image-critic-node.test.ts +86 -0
- package/src/__tests__/image-mask-mode.test.ts +16 -0
- package/src/__tests__/image-ref-limit.test.ts +78 -0
- package/src/__tests__/inpaint-region.test.ts +24 -0
- package/src/__tests__/input-field-map-parity.test.ts +30 -0
- package/src/__tests__/json-evaluator.test.ts +289 -0
- package/src/__tests__/json-path.test.ts +64 -0
- package/src/__tests__/lip-sync-pricing.test.ts +142 -0
- package/src/__tests__/list-merge.test.ts +96 -0
- package/src/__tests__/list-sort.test.ts +134 -0
- package/src/__tests__/llm-models.test.ts +445 -0
- package/src/__tests__/location-mention-slug.test.ts +246 -0
- package/src/__tests__/locations-coverage-critic-schema.test.ts +92 -0
- package/src/__tests__/loop-delimiter.test.ts +39 -0
- package/src/__tests__/lottie-slots.test.ts +245 -0
- package/src/__tests__/model-catalog-flux2-resolutions.test.ts +21 -0
- package/src/__tests__/model-constants-location.test.ts +20 -0
- package/src/__tests__/model-constants.test.ts +122 -0
- package/src/__tests__/model-tree.test.ts +86 -0
- package/src/__tests__/no-internal-imports.test.ts +25 -0
- package/src/__tests__/node-default-mappings.test.ts +175 -0
- package/src/__tests__/node-mappable-fields.test.ts +7 -0
- package/src/__tests__/node-preset-export.test.ts +46 -0
- package/src/__tests__/node-preset-extract.test.ts +166 -0
- package/src/__tests__/node-refs-canonical.test.ts +54 -0
- package/src/__tests__/node-refs-combine.test.ts +54 -0
- package/src/__tests__/node-refs.test.ts +187 -0
- package/src/__tests__/node-runtime-keys.test.ts +99 -0
- package/src/__tests__/object-aspect-defaults.test.ts +59 -0
- package/src/__tests__/parameter-node-value.test.ts +137 -0
- package/src/__tests__/pinterest-url.test.ts +35 -0
- package/src/__tests__/pipeline-chat.test.ts +110 -0
- package/src/__tests__/pipeline-validation.test.ts +98 -0
- package/src/__tests__/presentation-utils.test.ts +1137 -0
- package/src/__tests__/producer-types.test.ts +47 -0
- package/src/__tests__/prompt-length-limits.test.ts +156 -0
- package/src/__tests__/provider-directive-defaults.test.ts +46 -0
- package/src/__tests__/reduce-strategy-registry.test.ts +43 -0
- package/src/__tests__/reference-board-templates.test.ts +33 -0
- package/src/__tests__/reference-roles.test.ts +36 -0
- package/src/__tests__/resolve-field-mappings.test.ts +110 -0
- package/src/__tests__/resolve-pipeline-model.test.ts +76 -0
- package/src/__tests__/scene-node-types.test.ts +80 -0
- package/src/__tests__/scraper-actors.test.ts +67 -0
- package/src/__tests__/seedance-2-catalog.test.ts +18 -0
- package/src/__tests__/seedance-2-credit-id.test.ts +23 -0
- package/src/__tests__/seedance-aspects.test.ts +52 -0
- package/src/__tests__/selector.test.ts +1151 -0
- package/src/__tests__/settled-with-limit.test.ts +214 -0
- package/src/__tests__/social-media-specs.test.ts +129 -0
- package/src/__tests__/sub-workflow-validation.test.ts +88 -0
- package/src/__tests__/switchx-pricing.test.ts +28 -0
- package/src/__tests__/to-connected-references.test.ts +153 -0
- package/src/__tests__/utilities.test.ts +541 -0
- package/src/__tests__/video-analysis-pricing.test.ts +58 -0
- package/src/__tests__/video-analysis.test.ts +63 -0
- package/src/__tests__/video-audio-capability.test.ts +204 -0
- package/src/__tests__/video-gen-providers.test.ts +28 -0
- package/src/__tests__/video-mode-aliases.test.ts +150 -0
- package/src/__tests__/video-ref-limits.test.ts +72 -0
- package/src/__tests__/video-utils.test.ts +303 -0
- package/src/__tests__/voice-changer-models.test.ts +33 -0
- package/src/__tests__/workflow-export-strip.test.ts +46 -0
- package/src/ai-avatar-pricing.ts +213 -0
- package/src/ancestor-refs.ts +48 -0
- package/src/animals.ts +231 -0
- package/src/audio-crossfade-curves.ts +73 -0
- package/src/audio-fx-presets.ts +64 -0
- package/src/avatar-payload-validators.ts +214 -0
- package/src/caption-styles.ts +31 -0
- package/src/character-aspect-defaults.ts +102 -0
- package/src/character-facets.ts +37 -0
- package/src/character-mention-slug.ts +166 -0
- package/src/character-usage-mode.ts +109 -0
- package/src/character-variant-assets.ts +121 -0
- package/src/character-voice.ts +151 -0
- package/src/cinematic-avatar-pricing.ts +111 -0
- package/src/clone-utils.ts +46 -0
- package/src/combine-transitions.ts +482 -0
- package/src/community.ts +112 -0
- package/src/component-types.ts +127 -0
- package/src/condition-variables.ts +65 -0
- package/src/credit-estimators/index.ts +15 -0
- package/src/credit-estimators/video-utils.ts +165 -0
- package/src/credit-identifiers.ts +304 -0
- package/src/entity-approval-types.ts +31 -0
- package/src/entity-aspect-defaults.ts +82 -0
- package/src/entity-asset-types.ts +296 -0
- package/src/entity-image-handle.ts +36 -0
- package/src/extra-refs.ts +139 -0
- package/src/featured-entities.ts +136 -0
- package/src/film-pricing.ts +117 -0
- package/src/filter-condition.ts +250 -0
- package/src/flux2-pricing.ts +18 -0
- package/src/freecut-protocol.ts +52 -0
- package/src/furniture.ts +167 -0
- package/src/generate-text-items.ts +15 -0
- package/src/generated-results.ts +63 -0
- package/src/group-aggregation.ts +75 -0
- package/src/hint-graph-types.ts +18 -0
- package/src/i18n/action-fx.ar.ts +89 -0
- package/src/i18n/action-fx.de.ts +89 -0
- package/src/i18n/action-fx.es.ts +89 -0
- package/src/i18n/action-fx.fr.ts +89 -0
- package/src/i18n/action-fx.he.ts +89 -0
- package/src/i18n/action-fx.hi.ts +89 -0
- package/src/i18n/action-fx.ja.ts +89 -0
- package/src/i18n/action-fx.ko.ts +89 -0
- package/src/i18n/action-fx.pt-BR.ts +89 -0
- package/src/i18n/action-fx.ru.ts +89 -0
- package/src/i18n/action-fx.zh-CN.ts +89 -0
- package/src/i18n/aesthetic.ar.ts +170 -0
- package/src/i18n/aesthetic.de.ts +48 -0
- package/src/i18n/aesthetic.es.ts +169 -0
- package/src/i18n/aesthetic.fr.ts +52 -0
- package/src/i18n/aesthetic.he.ts +169 -0
- package/src/i18n/aesthetic.hi.ts +55 -0
- package/src/i18n/aesthetic.ja.ts +165 -0
- package/src/i18n/aesthetic.ko.ts +169 -0
- package/src/i18n/aesthetic.pt-BR.ts +148 -0
- package/src/i18n/aesthetic.ru.ts +155 -0
- package/src/i18n/aesthetic.zh-CN.ts +172 -0
- package/src/i18n/animals.ar.ts +145 -0
- package/src/i18n/animals.de.ts +144 -0
- package/src/i18n/animals.es.ts +158 -0
- package/src/i18n/animals.fr.ts +144 -0
- package/src/i18n/animals.he.ts +155 -0
- package/src/i18n/animals.hi.ts +157 -0
- package/src/i18n/animals.ja.ts +159 -0
- package/src/i18n/animals.ko.ts +159 -0
- package/src/i18n/animals.pt-BR.ts +157 -0
- package/src/i18n/animals.ru.ts +155 -0
- package/src/i18n/animals.zh-CN.ts +155 -0
- package/src/i18n/atmosphere.ar.ts +49 -0
- package/src/i18n/atmosphere.de.ts +47 -0
- package/src/i18n/atmosphere.es.ts +50 -0
- package/src/i18n/atmosphere.fr.ts +47 -0
- package/src/i18n/atmosphere.he.ts +47 -0
- package/src/i18n/atmosphere.hi.ts +49 -0
- package/src/i18n/atmosphere.ja.ts +49 -0
- package/src/i18n/atmosphere.ko.ts +49 -0
- package/src/i18n/atmosphere.pt-BR.ts +49 -0
- package/src/i18n/atmosphere.ru.ts +47 -0
- package/src/i18n/atmosphere.zh-CN.ts +152 -0
- package/src/i18n/backdrop.ar.ts +53 -0
- package/src/i18n/backdrop.de.ts +46 -0
- package/src/i18n/backdrop.es.ts +54 -0
- package/src/i18n/backdrop.fr.ts +52 -0
- package/src/i18n/backdrop.he.ts +51 -0
- package/src/i18n/backdrop.hi.ts +59 -0
- package/src/i18n/backdrop.ja.ts +61 -0
- package/src/i18n/backdrop.ko.ts +59 -0
- package/src/i18n/backdrop.pt-BR.ts +59 -0
- package/src/i18n/backdrop.ru.ts +57 -0
- package/src/i18n/backdrop.zh-CN.ts +57 -0
- package/src/i18n/camera-format.ar.ts +40 -0
- package/src/i18n/camera-format.de.ts +37 -0
- package/src/i18n/camera-format.es.ts +41 -0
- package/src/i18n/camera-format.fr.ts +37 -0
- package/src/i18n/camera-format.he.ts +37 -0
- package/src/i18n/camera-format.hi.ts +42 -0
- package/src/i18n/camera-format.ja.ts +37 -0
- package/src/i18n/camera-format.ko.ts +37 -0
- package/src/i18n/camera-format.pt-BR.ts +46 -0
- package/src/i18n/camera-format.ru.ts +42 -0
- package/src/i18n/camera-format.zh-CN.ts +42 -0
- package/src/i18n/camera-motions.ar.ts +86 -0
- package/src/i18n/camera-motions.de.ts +74 -0
- package/src/i18n/camera-motions.es.ts +86 -0
- package/src/i18n/camera-motions.fr.ts +86 -0
- package/src/i18n/camera-motions.he.ts +86 -0
- package/src/i18n/camera-motions.hi.ts +99 -0
- package/src/i18n/camera-motions.ja.ts +99 -0
- package/src/i18n/camera-motions.ko.ts +99 -0
- package/src/i18n/camera-motions.pt-BR.ts +99 -0
- package/src/i18n/camera-motions.ru.ts +99 -0
- package/src/i18n/camera-motions.zh-CN.ts +99 -0
- package/src/i18n/character-fx.ar.ts +72 -0
- package/src/i18n/character-fx.de.ts +72 -0
- package/src/i18n/character-fx.es.ts +72 -0
- package/src/i18n/character-fx.fr.ts +72 -0
- package/src/i18n/character-fx.he.ts +72 -0
- package/src/i18n/character-fx.hi.ts +72 -0
- package/src/i18n/character-fx.ja.ts +72 -0
- package/src/i18n/character-fx.ko.ts +72 -0
- package/src/i18n/character-fx.pt-BR.ts +72 -0
- package/src/i18n/character-fx.ru.ts +72 -0
- package/src/i18n/character-fx.zh-CN.ts +72 -0
- package/src/i18n/color-look.ar.ts +50 -0
- package/src/i18n/color-look.de.ts +47 -0
- package/src/i18n/color-look.es.ts +50 -0
- package/src/i18n/color-look.fr.ts +50 -0
- package/src/i18n/color-look.he.ts +49 -0
- package/src/i18n/color-look.hi.ts +52 -0
- package/src/i18n/color-look.ja.ts +54 -0
- package/src/i18n/color-look.ko.ts +54 -0
- package/src/i18n/color-look.pt-BR.ts +54 -0
- package/src/i18n/color-look.ru.ts +52 -0
- package/src/i18n/color-look.zh-CN.ts +53 -0
- package/src/i18n/composition-effects.ar.ts +26 -0
- package/src/i18n/composition-effects.de.ts +25 -0
- package/src/i18n/composition-effects.es.ts +27 -0
- package/src/i18n/composition-effects.fr.ts +25 -0
- package/src/i18n/composition-effects.he.ts +25 -0
- package/src/i18n/composition-effects.hi.ts +27 -0
- package/src/i18n/composition-effects.ja.ts +27 -0
- package/src/i18n/composition-effects.ko.ts +27 -0
- package/src/i18n/composition-effects.pt-BR.ts +25 -0
- package/src/i18n/composition-effects.ru.ts +82 -0
- package/src/i18n/composition-effects.zh-CN.ts +25 -0
- package/src/i18n/era.ar.ts +37 -0
- package/src/i18n/era.de.ts +34 -0
- package/src/i18n/era.es.ts +37 -0
- package/src/i18n/era.fr.ts +37 -0
- package/src/i18n/era.he.ts +36 -0
- package/src/i18n/era.hi.ts +39 -0
- package/src/i18n/era.ja.ts +41 -0
- package/src/i18n/era.ko.ts +39 -0
- package/src/i18n/era.pt-BR.ts +41 -0
- package/src/i18n/era.ru.ts +121 -0
- package/src/i18n/era.zh-CN.ts +39 -0
- package/src/i18n/exposure-settings.ar.ts +28 -0
- package/src/i18n/exposure-settings.de.ts +26 -0
- package/src/i18n/exposure-settings.es.ts +28 -0
- package/src/i18n/exposure-settings.fr.ts +29 -0
- package/src/i18n/exposure-settings.he.ts +28 -0
- package/src/i18n/exposure-settings.hi.ts +31 -0
- package/src/i18n/exposure-settings.ja.ts +31 -0
- package/src/i18n/exposure-settings.ko.ts +31 -0
- package/src/i18n/exposure-settings.pt-BR.ts +31 -0
- package/src/i18n/exposure-settings.ru.ts +31 -0
- package/src/i18n/exposure-settings.zh-CN.ts +31 -0
- package/src/i18n/framing.ar.ts +78 -0
- package/src/i18n/framing.de.ts +73 -0
- package/src/i18n/framing.es.ts +78 -0
- package/src/i18n/framing.fr.ts +78 -0
- package/src/i18n/framing.he.ts +77 -0
- package/src/i18n/framing.hi.ts +82 -0
- package/src/i18n/framing.ja.ts +84 -0
- package/src/i18n/framing.ko.ts +82 -0
- package/src/i18n/framing.pt-BR.ts +84 -0
- package/src/i18n/framing.ru.ts +82 -0
- package/src/i18n/framing.zh-CN.ts +82 -0
- package/src/i18n/furniture.ar.ts +92 -0
- package/src/i18n/furniture.de.ts +93 -0
- package/src/i18n/furniture.es.ts +101 -0
- package/src/i18n/furniture.fr.ts +93 -0
- package/src/i18n/furniture.he.ts +101 -0
- package/src/i18n/furniture.hi.ts +101 -0
- package/src/i18n/furniture.ja.ts +101 -0
- package/src/i18n/furniture.ko.ts +101 -0
- package/src/i18n/furniture.pt-BR.ts +101 -0
- package/src/i18n/furniture.ru.ts +101 -0
- package/src/i18n/furniture.zh-CN.ts +101 -0
- package/src/i18n/held-prop.ar.ts +74 -0
- package/src/i18n/held-prop.de.ts +65 -0
- package/src/i18n/held-prop.es.ts +83 -0
- package/src/i18n/held-prop.fr.ts +74 -0
- package/src/i18n/held-prop.he.ts +73 -0
- package/src/i18n/held-prop.hi.ts +82 -0
- package/src/i18n/held-prop.ja.ts +84 -0
- package/src/i18n/held-prop.ko.ts +84 -0
- package/src/i18n/held-prop.pt-BR.ts +84 -0
- package/src/i18n/held-prop.ru.ts +82 -0
- package/src/i18n/held-prop.zh-CN.ts +82 -0
- package/src/i18n/index.ts +208 -0
- package/src/i18n/instrumentation.ar.ts +195 -0
- package/src/i18n/instrumentation.de.ts +195 -0
- package/src/i18n/instrumentation.es.ts +195 -0
- package/src/i18n/instrumentation.fr.ts +195 -0
- package/src/i18n/instrumentation.he.ts +195 -0
- package/src/i18n/instrumentation.hi.ts +195 -0
- package/src/i18n/instrumentation.ja.ts +195 -0
- package/src/i18n/instrumentation.ko.ts +195 -0
- package/src/i18n/instrumentation.pt-BR.ts +195 -0
- package/src/i18n/instrumentation.ru.ts +195 -0
- package/src/i18n/instrumentation.zh-CN.ts +195 -0
- package/src/i18n/lens.ar.ts +24 -0
- package/src/i18n/lens.de.ts +24 -0
- package/src/i18n/lens.es.ts +24 -0
- package/src/i18n/lens.fr.ts +24 -0
- package/src/i18n/lens.he.ts +24 -0
- package/src/i18n/lens.hi.ts +24 -0
- package/src/i18n/lens.ja.ts +24 -0
- package/src/i18n/lens.ko.ts +24 -0
- package/src/i18n/lens.pt-BR.ts +24 -0
- package/src/i18n/lens.ru.ts +25 -0
- package/src/i18n/lens.zh-CN.ts +24 -0
- package/src/i18n/lighting.ar.ts +86 -0
- package/src/i18n/lighting.de.ts +84 -0
- package/src/i18n/lighting.es.ts +89 -0
- package/src/i18n/lighting.fr.ts +84 -0
- package/src/i18n/lighting.he.ts +88 -0
- package/src/i18n/lighting.hi.ts +90 -0
- package/src/i18n/lighting.ja.ts +90 -0
- package/src/i18n/lighting.ko.ts +90 -0
- package/src/i18n/lighting.pt-BR.ts +90 -0
- package/src/i18n/lighting.ru.ts +88 -0
- package/src/i18n/lighting.zh-CN.ts +92 -0
- package/src/i18n/loop-subject.ar.ts +39 -0
- package/src/i18n/loop-subject.de.ts +39 -0
- package/src/i18n/loop-subject.es.ts +39 -0
- package/src/i18n/loop-subject.fr.ts +39 -0
- package/src/i18n/loop-subject.he.ts +39 -0
- package/src/i18n/loop-subject.hi.ts +39 -0
- package/src/i18n/loop-subject.ja.ts +39 -0
- package/src/i18n/loop-subject.ko.ts +39 -0
- package/src/i18n/loop-subject.pt-BR.ts +39 -0
- package/src/i18n/loop-subject.ru.ts +39 -0
- package/src/i18n/loop-subject.zh-CN.ts +39 -0
- package/src/i18n/materials.ar.ts +80 -0
- package/src/i18n/materials.de.ts +80 -0
- package/src/i18n/materials.es.ts +87 -0
- package/src/i18n/materials.fr.ts +80 -0
- package/src/i18n/materials.he.ts +86 -0
- package/src/i18n/materials.hi.ts +86 -0
- package/src/i18n/materials.ja.ts +88 -0
- package/src/i18n/materials.ko.ts +88 -0
- package/src/i18n/materials.pt-BR.ts +88 -0
- package/src/i18n/materials.ru.ts +86 -0
- package/src/i18n/materials.zh-CN.ts +86 -0
- package/src/i18n/mood.ar.ts +61 -0
- package/src/i18n/mood.de.ts +61 -0
- package/src/i18n/mood.es.ts +66 -0
- package/src/i18n/mood.fr.ts +61 -0
- package/src/i18n/mood.he.ts +64 -0
- package/src/i18n/mood.hi.ts +66 -0
- package/src/i18n/mood.ja.ts +66 -0
- package/src/i18n/mood.ko.ts +66 -0
- package/src/i18n/mood.pt-BR.ts +64 -0
- package/src/i18n/mood.ru.ts +64 -0
- package/src/i18n/mood.zh-CN.ts +64 -0
- package/src/i18n/music-genre.ar.ts +302 -0
- package/src/i18n/music-genre.de.ts +302 -0
- package/src/i18n/music-genre.es.ts +302 -0
- package/src/i18n/music-genre.fr.ts +302 -0
- package/src/i18n/music-genre.he.ts +302 -0
- package/src/i18n/music-genre.hi.ts +302 -0
- package/src/i18n/music-genre.ja.ts +302 -0
- package/src/i18n/music-genre.ko.ts +302 -0
- package/src/i18n/music-genre.pt-BR.ts +302 -0
- package/src/i18n/music-genre.ru.ts +302 -0
- package/src/i18n/music-genre.zh-CN.ts +302 -0
- package/src/i18n/music-mood.ar.ts +75 -0
- package/src/i18n/music-mood.de.ts +75 -0
- package/src/i18n/music-mood.es.ts +75 -0
- package/src/i18n/music-mood.fr.ts +75 -0
- package/src/i18n/music-mood.he.ts +75 -0
- package/src/i18n/music-mood.hi.ts +75 -0
- package/src/i18n/music-mood.ja.ts +75 -0
- package/src/i18n/music-mood.ko.ts +75 -0
- package/src/i18n/music-mood.pt-BR.ts +75 -0
- package/src/i18n/music-mood.ru.ts +75 -0
- package/src/i18n/music-mood.zh-CN.ts +75 -0
- package/src/i18n/person.ar.ts +638 -0
- package/src/i18n/person.de.ts +629 -0
- package/src/i18n/person.es.ts +645 -0
- package/src/i18n/person.fr.ts +621 -0
- package/src/i18n/person.he.ts +656 -0
- package/src/i18n/person.hi.ts +654 -0
- package/src/i18n/person.ja.ts +662 -0
- package/src/i18n/person.ko.ts +662 -0
- package/src/i18n/person.pt-BR.ts +656 -0
- package/src/i18n/person.ru.ts +656 -0
- package/src/i18n/person.zh-CN.ts +656 -0
- package/src/i18n/photo-genre.ar.ts +58 -0
- package/src/i18n/photo-genre.de.ts +52 -0
- package/src/i18n/photo-genre.es.ts +64 -0
- package/src/i18n/photo-genre.fr.ts +58 -0
- package/src/i18n/photo-genre.he.ts +62 -0
- package/src/i18n/photo-genre.hi.ts +63 -0
- package/src/i18n/photo-genre.ja.ts +65 -0
- package/src/i18n/photo-genre.ko.ts +63 -0
- package/src/i18n/photo-genre.pt-BR.ts +65 -0
- package/src/i18n/photo-genre.ru.ts +63 -0
- package/src/i18n/photo-genre.zh-CN.ts +63 -0
- package/src/i18n/photographer.ar.ts +75 -0
- package/src/i18n/photographer.de.ts +74 -0
- package/src/i18n/photographer.es.ts +77 -0
- package/src/i18n/photographer.fr.ts +77 -0
- package/src/i18n/photographer.he.ts +78 -0
- package/src/i18n/photographer.hi.ts +80 -0
- package/src/i18n/photographer.ja.ts +84 -0
- package/src/i18n/photographer.ko.ts +84 -0
- package/src/i18n/photographer.pt-BR.ts +83 -0
- package/src/i18n/photographer.ru.ts +78 -0
- package/src/i18n/photographer.zh-CN.ts +78 -0
- package/src/i18n/pose.ar.ts +95 -0
- package/src/i18n/pose.de.ts +96 -0
- package/src/i18n/pose.es.ts +104 -0
- package/src/i18n/pose.fr.ts +96 -0
- package/src/i18n/pose.he.ts +104 -0
- package/src/i18n/pose.hi.ts +104 -0
- package/src/i18n/pose.ja.ts +104 -0
- package/src/i18n/pose.ko.ts +104 -0
- package/src/i18n/pose.pt-BR.ts +104 -0
- package/src/i18n/pose.ru.ts +104 -0
- package/src/i18n/pose.zh-CN.ts +104 -0
- package/src/i18n/post-process-effects.ar.ts +25 -0
- package/src/i18n/post-process-effects.de.ts +24 -0
- package/src/i18n/post-process-effects.es.ts +26 -0
- package/src/i18n/post-process-effects.fr.ts +24 -0
- package/src/i18n/post-process-effects.he.ts +24 -0
- package/src/i18n/post-process-effects.hi.ts +26 -0
- package/src/i18n/post-process-effects.ja.ts +26 -0
- package/src/i18n/post-process-effects.ko.ts +26 -0
- package/src/i18n/post-process-effects.pt-BR.ts +24 -0
- package/src/i18n/post-process-effects.ru.ts +24 -0
- package/src/i18n/post-process-effects.zh-CN.ts +24 -0
- package/src/i18n/render-quality.ar.ts +34 -0
- package/src/i18n/render-quality.de.ts +30 -0
- package/src/i18n/render-quality.es.ts +35 -0
- package/src/i18n/render-quality.fr.ts +34 -0
- package/src/i18n/render-quality.he.ts +33 -0
- package/src/i18n/render-quality.hi.ts +39 -0
- package/src/i18n/render-quality.ja.ts +39 -0
- package/src/i18n/render-quality.ko.ts +39 -0
- package/src/i18n/render-quality.pt-BR.ts +37 -0
- package/src/i18n/render-quality.ru.ts +37 -0
- package/src/i18n/render-quality.zh-CN.ts +37 -0
- package/src/i18n/seasons.ar.ts +10 -0
- package/src/i18n/seasons.de.ts +10 -0
- package/src/i18n/seasons.es.ts +10 -0
- package/src/i18n/seasons.fr.ts +10 -0
- package/src/i18n/seasons.he.ts +10 -0
- package/src/i18n/seasons.hi.ts +10 -0
- package/src/i18n/seasons.ja.ts +10 -0
- package/src/i18n/seasons.ko.ts +10 -0
- package/src/i18n/seasons.pt-BR.ts +10 -0
- package/src/i18n/seasons.ru.ts +10 -0
- package/src/i18n/seasons.zh-CN.ts +10 -0
- package/src/i18n/setting.ar.ts +73 -0
- package/src/i18n/setting.de.ts +73 -0
- package/src/i18n/setting.es.ts +77 -0
- package/src/i18n/setting.fr.ts +73 -0
- package/src/i18n/setting.he.ts +76 -0
- package/src/i18n/setting.hi.ts +76 -0
- package/src/i18n/setting.ja.ts +78 -0
- package/src/i18n/setting.ko.ts +76 -0
- package/src/i18n/setting.pt-BR.ts +78 -0
- package/src/i18n/setting.ru.ts +76 -0
- package/src/i18n/setting.zh-CN.ts +76 -0
- package/src/i18n/style.ar.ts +55 -0
- package/src/i18n/style.de.ts +54 -0
- package/src/i18n/style.es.ts +54 -0
- package/src/i18n/style.fr.ts +54 -0
- package/src/i18n/style.he.ts +54 -0
- package/src/i18n/style.hi.ts +54 -0
- package/src/i18n/style.ja.ts +54 -0
- package/src/i18n/style.ko.ts +54 -0
- package/src/i18n/style.pt-BR.ts +56 -0
- package/src/i18n/style.ru.ts +54 -0
- package/src/i18n/style.zh-CN.ts +54 -0
- package/src/i18n/styling.ar.ts +295 -0
- package/src/i18n/styling.de.ts +285 -0
- package/src/i18n/styling.es.ts +317 -0
- package/src/i18n/styling.fr.ts +285 -0
- package/src/i18n/styling.he.ts +307 -0
- package/src/i18n/styling.hi.ts +323 -0
- package/src/i18n/styling.ja.ts +317 -0
- package/src/i18n/styling.ko.ts +311 -0
- package/src/i18n/styling.pt-BR.ts +301 -0
- package/src/i18n/styling.ru.ts +301 -0
- package/src/i18n/styling.zh-CN.ts +307 -0
- package/src/i18n/temporal.ar.ts +31 -0
- package/src/i18n/temporal.de.ts +24 -0
- package/src/i18n/temporal.es.ts +27 -0
- package/src/i18n/temporal.fr.ts +28 -0
- package/src/i18n/temporal.he.ts +31 -0
- package/src/i18n/temporal.hi.ts +31 -0
- package/src/i18n/temporal.ja.ts +31 -0
- package/src/i18n/temporal.ko.ts +31 -0
- package/src/i18n/temporal.pt-BR.ts +31 -0
- package/src/i18n/temporal.ru.ts +31 -0
- package/src/i18n/temporal.zh-CN.ts +31 -0
- package/src/i18n/transitions.ar.ts +97 -0
- package/src/i18n/transitions.de.ts +97 -0
- package/src/i18n/transitions.es.ts +97 -0
- package/src/i18n/transitions.fr.ts +97 -0
- package/src/i18n/transitions.he.ts +97 -0
- package/src/i18n/transitions.hi.ts +97 -0
- package/src/i18n/transitions.ja.ts +97 -0
- package/src/i18n/transitions.ko.ts +97 -0
- package/src/i18n/transitions.pt-BR.ts +97 -0
- package/src/i18n/transitions.ru.ts +97 -0
- package/src/i18n/transitions.zh-CN.ts +97 -0
- package/src/i18n/types.ts +158 -0
- package/src/i18n/vehicles.ar.ts +137 -0
- package/src/i18n/vehicles.de.ts +125 -0
- package/src/i18n/vehicles.es.ts +138 -0
- package/src/i18n/vehicles.fr.ts +125 -0
- package/src/i18n/vehicles.he.ts +136 -0
- package/src/i18n/vehicles.hi.ts +138 -0
- package/src/i18n/vehicles.ja.ts +138 -0
- package/src/i18n/vehicles.ko.ts +138 -0
- package/src/i18n/vehicles.pt-BR.ts +136 -0
- package/src/i18n/vehicles.ru.ts +136 -0
- package/src/i18n/vehicles.zh-CN.ts +136 -0
- package/src/i18n/voice-character.ar.ts +126 -0
- package/src/i18n/voice-character.de.ts +126 -0
- package/src/i18n/voice-character.es.ts +126 -0
- package/src/i18n/voice-character.fr.ts +126 -0
- package/src/i18n/voice-character.he.ts +126 -0
- package/src/i18n/voice-character.hi.ts +126 -0
- package/src/i18n/voice-character.ja.ts +126 -0
- package/src/i18n/voice-character.ko.ts +126 -0
- package/src/i18n/voice-character.pt-BR.ts +126 -0
- package/src/i18n/voice-character.ru.ts +126 -0
- package/src/i18n/voice-character.zh-CN.ts +126 -0
- package/src/i18n/voice-delivery.ar.ts +77 -0
- package/src/i18n/voice-delivery.de.ts +77 -0
- package/src/i18n/voice-delivery.es.ts +77 -0
- package/src/i18n/voice-delivery.fr.ts +77 -0
- package/src/i18n/voice-delivery.he.ts +77 -0
- package/src/i18n/voice-delivery.hi.ts +77 -0
- package/src/i18n/voice-delivery.ja.ts +77 -0
- package/src/i18n/voice-delivery.ko.ts +77 -0
- package/src/i18n/voice-delivery.pt-BR.ts +77 -0
- package/src/i18n/voice-delivery.ru.ts +77 -0
- package/src/i18n/voice-delivery.zh-CN.ts +77 -0
- package/src/i18n/weapons.ar.ts +115 -0
- package/src/i18n/weapons.de.ts +114 -0
- package/src/i18n/weapons.es.ts +116 -0
- package/src/i18n/weapons.fr.ts +103 -0
- package/src/i18n/weapons.he.ts +114 -0
- package/src/i18n/weapons.hi.ts +116 -0
- package/src/i18n/weapons.ja.ts +116 -0
- package/src/i18n/weapons.ko.ts +116 -0
- package/src/i18n/weapons.pt-BR.ts +114 -0
- package/src/i18n/weapons.ru.ts +114 -0
- package/src/i18n/weapons.zh-CN.ts +114 -0
- package/src/image-critic-node.ts +61 -0
- package/src/image-critic-types.ts +40 -0
- package/src/index.ts +866 -0
- package/src/inject-upstream.ts +15 -0
- package/src/inpaint-region.ts +51 -0
- package/src/json-evaluator.ts +732 -0
- package/src/json-path.ts +52 -0
- package/src/lip-sync-pricing.ts +90 -0
- package/src/list-merge.ts +40 -0
- package/src/list-sort.ts +122 -0
- package/src/list-source-resolver.ts +50 -0
- package/src/llm-models.ts +245 -0
- package/src/location-mention-slug.ts +291 -0
- package/src/location-preset-catalog-map.ts +128 -0
- package/src/loop-delimiter.ts +73 -0
- package/src/lora-routing.ts +95 -0
- package/src/lottie-overlay-catalog.ts +175 -0
- package/src/lottie-slots.ts +309 -0
- package/src/model-catalog.ts +2386 -0
- package/src/model-constants.ts +1910 -0
- package/src/model-tree.ts +120 -0
- package/src/monetization.ts +15 -0
- package/src/multi-pick.ts +42 -0
- package/src/node-default-mappings.ts +262 -0
- package/src/node-mappable-fields.ts +70 -0
- package/src/node-preset-export.ts +56 -0
- package/src/node-preset-extract.ts +147 -0
- package/src/node-refs.ts +253 -0
- package/src/node-runtime-keys.ts +117 -0
- package/src/object-aspect-defaults.ts +72 -0
- package/src/object-picker-types.ts +22 -0
- package/src/parameter-node-value.ts +284 -0
- package/src/pinterest-url.ts +28 -0
- package/src/pipeline-chat.ts +72 -0
- package/src/pipeline-defaults.ts +318 -0
- package/src/pipeline-events.ts +162 -0
- package/src/pipeline-state-types.ts +196 -0
- package/src/pipeline-types.ts +647 -0
- package/src/pipeline-validation.ts +87 -0
- package/src/presentation-types.ts +23 -0
- package/src/presentation-utils.ts +397 -0
- package/src/producer-types.ts +188 -0
- package/src/progress-curve.ts +99 -0
- package/src/provider-directive-defaults.ts +69 -0
- package/src/reduce-strategy-registry.ts +121 -0
- package/src/reference-board-templates.ts +81 -0
- package/src/reference-roles.ts +153 -0
- package/src/reference-sheet/__tests__/board-to-column.test.ts +20 -0
- package/src/reference-sheet/__tests__/catalog.test.ts +50 -0
- package/src/reference-sheet/__tests__/cost.test.ts +38 -0
- package/src/reference-sheet/__tests__/no-drift.test.ts +28 -0
- package/src/reference-sheet/__tests__/panel-plan.test.ts +61 -0
- package/src/reference-sheet/__tests__/panel-prompts.test.ts +17 -0
- package/src/reference-sheet/__tests__/plan-generation.test.ts +72 -0
- package/src/reference-sheet/__tests__/presets.test.ts +54 -0
- package/src/reference-sheet/__tests__/types.test.ts +24 -0
- package/src/reference-sheet/catalog.ts +144 -0
- package/src/reference-sheet/cost.ts +37 -0
- package/src/reference-sheet/credit-id.ts +7 -0
- package/src/reference-sheet/index.ts +8 -0
- package/src/reference-sheet/panel-plan.ts +65 -0
- package/src/reference-sheet/panel-prompts.ts +14 -0
- package/src/reference-sheet/plan-generation.ts +79 -0
- package/src/reference-sheet/presets.ts +77 -0
- package/src/reference-sheet/types.ts +92 -0
- package/src/repeat-types.ts +97 -0
- package/src/resolve-field-mappings.ts +119 -0
- package/src/route-filter.ts +80 -0
- package/src/scene-helper-types.ts +249 -0
- package/src/scene-node-types.ts +281 -0
- package/src/scraper-actors.ts +57 -0
- package/src/scraper-output-schemas.ts +25 -0
- package/src/seasons.ts +45 -0
- package/src/selector.ts +864 -0
- package/src/settled-with-limit.ts +42 -0
- package/src/shot-element.ts +43 -0
- package/src/social-media-specs.ts +121 -0
- package/src/social-post.ts +24 -0
- package/src/sub-workflow-validation.ts +78 -0
- package/src/supported-fonts.ts +40 -0
- package/src/surround.ts +113 -0
- package/src/switchx-pricing.ts +33 -0
- package/src/text-separators.ts +59 -0
- package/src/to-connected-references.ts +77 -0
- package/src/types.ts +272 -0
- package/src/variant-job-id.ts +17 -0
- package/src/vehicles.ts +213 -0
- package/src/video-analysis-pricing.ts +74 -0
- package/src/video-analysis.ts +127 -0
- package/src/video-duration.ts +25 -0
- package/src/voice-changer-models.ts +36 -0
- package/src/voice-matcher-types.ts +37 -0
- package/src/voices.ts +92 -0
- package/src/weapons.ts +190 -0
- package/src/workflow-export.ts +153 -0
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Catalog of every transition the combine-videos node supports.
|
|
3
|
+
*
|
|
4
|
+
* `id` is the stable identifier used in workflow JSON, Zod validation, and
|
|
5
|
+
* the preview-CSS class suffix. `xfade` is the FFmpeg `xfade transition=`
|
|
6
|
+
* name (or `null` for `cut`, which goes through the concat demuxer).
|
|
7
|
+
*
|
|
8
|
+
* The 5 original ids (`cut`, `fade`, `dissolve`, `dip-to-black`,
|
|
9
|
+
* `dip-to-white`) are kept for back-compat with workflows saved before the
|
|
10
|
+
* picker shipped.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export type CombineTransitionGroup =
|
|
14
|
+
| "fades"
|
|
15
|
+
| "wipes"
|
|
16
|
+
| "slides"
|
|
17
|
+
| "shapes"
|
|
18
|
+
| "smooth"
|
|
19
|
+
| "slices"
|
|
20
|
+
| "reveals"
|
|
21
|
+
| "covers"
|
|
22
|
+
| "effects"
|
|
23
|
+
|
|
24
|
+
export interface CombineTransition {
|
|
25
|
+
readonly id: string
|
|
26
|
+
readonly label: string
|
|
27
|
+
/** FFmpeg `xfade transition=` name. `null` = special path (concat demuxer for cut). */
|
|
28
|
+
readonly xfade: string | null
|
|
29
|
+
readonly group: CombineTransitionGroup
|
|
30
|
+
readonly common?: boolean
|
|
31
|
+
readonly description: string
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const COMBINE_TRANSITIONS: readonly CombineTransition[] = [
|
|
35
|
+
// ===== Fades & Dips =====
|
|
36
|
+
{
|
|
37
|
+
id: "cut",
|
|
38
|
+
label: "Cut",
|
|
39
|
+
xfade: null,
|
|
40
|
+
group: "fades",
|
|
41
|
+
common: true,
|
|
42
|
+
description: "Hard cut — instant switch with no blend. Default, fastest.",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "fade",
|
|
46
|
+
label: "Fade",
|
|
47
|
+
xfade: "fade",
|
|
48
|
+
group: "fades",
|
|
49
|
+
common: true,
|
|
50
|
+
description: "Smooth alpha cross-fade between two clips. Classic clean blend.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "dissolve",
|
|
54
|
+
label: "Dissolve",
|
|
55
|
+
xfade: "dissolve",
|
|
56
|
+
group: "fades",
|
|
57
|
+
common: true,
|
|
58
|
+
description: "Random-pixel dissolve. Grainy, organic feel — good for memory beats.",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: "dip-to-black",
|
|
62
|
+
label: "Dip to Black",
|
|
63
|
+
xfade: "fadeblack",
|
|
64
|
+
group: "fades",
|
|
65
|
+
common: true,
|
|
66
|
+
description: "Fade through black. Use between scenes or time jumps.",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: "dip-to-white",
|
|
70
|
+
label: "Dip to White",
|
|
71
|
+
xfade: "fadewhite",
|
|
72
|
+
group: "fades",
|
|
73
|
+
common: true,
|
|
74
|
+
description: "Fade through white. Bright, ethereal — flashbacks, dream beats.",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: "fadegrays",
|
|
78
|
+
label: "Fade through Greys",
|
|
79
|
+
xfade: "fadegrays",
|
|
80
|
+
group: "fades",
|
|
81
|
+
description: "Desaturates to grey at the midpoint, then re-saturates into B.",
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
// ===== Wipes =====
|
|
85
|
+
{
|
|
86
|
+
id: "wipe-left",
|
|
87
|
+
label: "Wipe Left",
|
|
88
|
+
xfade: "wipeleft",
|
|
89
|
+
group: "wipes",
|
|
90
|
+
common: true,
|
|
91
|
+
description: "Hard edge sweeps from right to left, revealing the next clip.",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: "wipe-right",
|
|
95
|
+
label: "Wipe Right",
|
|
96
|
+
xfade: "wiperight",
|
|
97
|
+
group: "wipes",
|
|
98
|
+
common: true,
|
|
99
|
+
description: "Hard edge sweeps from left to right.",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: "wipe-up",
|
|
103
|
+
label: "Wipe Up",
|
|
104
|
+
xfade: "wipeup",
|
|
105
|
+
group: "wipes",
|
|
106
|
+
description: "Edge sweeps from bottom to top.",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: "wipe-down",
|
|
110
|
+
label: "Wipe Down",
|
|
111
|
+
xfade: "wipedown",
|
|
112
|
+
group: "wipes",
|
|
113
|
+
description: "Edge sweeps from top to bottom.",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
id: "wipe-tl",
|
|
117
|
+
label: "Wipe Top-Left",
|
|
118
|
+
xfade: "wipetl",
|
|
119
|
+
group: "wipes",
|
|
120
|
+
description: "Diagonal wipe from top-left corner.",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: "wipe-tr",
|
|
124
|
+
label: "Wipe Top-Right",
|
|
125
|
+
xfade: "wipetr",
|
|
126
|
+
group: "wipes",
|
|
127
|
+
description: "Diagonal wipe from top-right corner.",
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: "wipe-bl",
|
|
131
|
+
label: "Wipe Bottom-Left",
|
|
132
|
+
xfade: "wipebl",
|
|
133
|
+
group: "wipes",
|
|
134
|
+
description: "Diagonal wipe from bottom-left corner.",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
id: "wipe-br",
|
|
138
|
+
label: "Wipe Bottom-Right",
|
|
139
|
+
xfade: "wipebr",
|
|
140
|
+
group: "wipes",
|
|
141
|
+
description: "Diagonal wipe from bottom-right corner.",
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// ===== Slides =====
|
|
145
|
+
{
|
|
146
|
+
id: "slide-left",
|
|
147
|
+
label: "Slide Left",
|
|
148
|
+
xfade: "slideleft",
|
|
149
|
+
group: "slides",
|
|
150
|
+
common: true,
|
|
151
|
+
description: "Next clip pushes A off-screen, sliding in from the right.",
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: "slide-right",
|
|
155
|
+
label: "Slide Right",
|
|
156
|
+
xfade: "slideright",
|
|
157
|
+
group: "slides",
|
|
158
|
+
common: true,
|
|
159
|
+
description: "Next clip pushes A off-screen, sliding in from the left.",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: "slide-up",
|
|
163
|
+
label: "Slide Up",
|
|
164
|
+
xfade: "slideup",
|
|
165
|
+
group: "slides",
|
|
166
|
+
description: "Next clip pushes A upward off-screen.",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
id: "slide-down",
|
|
170
|
+
label: "Slide Down",
|
|
171
|
+
xfade: "slidedown",
|
|
172
|
+
group: "slides",
|
|
173
|
+
description: "Next clip pushes A downward off-screen.",
|
|
174
|
+
},
|
|
175
|
+
|
|
176
|
+
// ===== Smooth (gradient-edge wipes) =====
|
|
177
|
+
{
|
|
178
|
+
id: "smooth-left",
|
|
179
|
+
label: "Smooth Left",
|
|
180
|
+
xfade: "smoothleft",
|
|
181
|
+
group: "smooth",
|
|
182
|
+
description: "Soft-edged wipe sweeping leftward — gentler than a hard wipe.",
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
id: "smooth-right",
|
|
186
|
+
label: "Smooth Right",
|
|
187
|
+
xfade: "smoothright",
|
|
188
|
+
group: "smooth",
|
|
189
|
+
description: "Soft-edged wipe sweeping rightward.",
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
id: "smooth-up",
|
|
193
|
+
label: "Smooth Up",
|
|
194
|
+
xfade: "smoothup",
|
|
195
|
+
group: "smooth",
|
|
196
|
+
description: "Soft-edged wipe sweeping upward.",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: "smooth-down",
|
|
200
|
+
label: "Smooth Down",
|
|
201
|
+
xfade: "smoothdown",
|
|
202
|
+
group: "smooth",
|
|
203
|
+
description: "Soft-edged wipe sweeping downward.",
|
|
204
|
+
},
|
|
205
|
+
|
|
206
|
+
// ===== Shapes (circles, rectangles, openings) =====
|
|
207
|
+
{
|
|
208
|
+
id: "circle-open",
|
|
209
|
+
label: "Circle Open",
|
|
210
|
+
xfade: "circleopen",
|
|
211
|
+
group: "shapes",
|
|
212
|
+
common: true,
|
|
213
|
+
description: "Circular iris opens to reveal next clip from the center.",
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
id: "circle-close",
|
|
217
|
+
label: "Circle Close",
|
|
218
|
+
xfade: "circleclose",
|
|
219
|
+
group: "shapes",
|
|
220
|
+
description: "Circular iris closes inward over the current clip.",
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
id: "circle-crop",
|
|
224
|
+
label: "Circle Crop",
|
|
225
|
+
xfade: "circlecrop",
|
|
226
|
+
group: "shapes",
|
|
227
|
+
description: "Circular mask crops A then expands as B.",
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
id: "rect-crop",
|
|
231
|
+
label: "Rectangle Crop",
|
|
232
|
+
xfade: "rectcrop",
|
|
233
|
+
group: "shapes",
|
|
234
|
+
description: "Rectangular mask crops A then expands as B.",
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
id: "horz-open",
|
|
238
|
+
label: "Horizontal Open",
|
|
239
|
+
xfade: "horzopen",
|
|
240
|
+
group: "shapes",
|
|
241
|
+
description: "Two horizontal bars split apart from the center to reveal B.",
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
id: "horz-close",
|
|
245
|
+
label: "Horizontal Close",
|
|
246
|
+
xfade: "horzclose",
|
|
247
|
+
group: "shapes",
|
|
248
|
+
description: "Top and bottom bars meet at the center.",
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
id: "vert-open",
|
|
252
|
+
label: "Vertical Open",
|
|
253
|
+
xfade: "vertopen",
|
|
254
|
+
group: "shapes",
|
|
255
|
+
description: "Two vertical bars split apart from the center to reveal B.",
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
id: "vert-close",
|
|
259
|
+
label: "Vertical Close",
|
|
260
|
+
xfade: "vertclose",
|
|
261
|
+
group: "shapes",
|
|
262
|
+
description: "Left and right bars meet at the center.",
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
id: "diag-tl",
|
|
266
|
+
label: "Diagonal Top-Left",
|
|
267
|
+
xfade: "diagtl",
|
|
268
|
+
group: "shapes",
|
|
269
|
+
description: "Diagonal slash sweep originating top-left.",
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
id: "diag-tr",
|
|
273
|
+
label: "Diagonal Top-Right",
|
|
274
|
+
xfade: "diagtr",
|
|
275
|
+
group: "shapes",
|
|
276
|
+
description: "Diagonal slash sweep originating top-right.",
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
id: "diag-bl",
|
|
280
|
+
label: "Diagonal Bottom-Left",
|
|
281
|
+
xfade: "diagbl",
|
|
282
|
+
group: "shapes",
|
|
283
|
+
description: "Diagonal slash sweep originating bottom-left.",
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
id: "diag-br",
|
|
287
|
+
label: "Diagonal Bottom-Right",
|
|
288
|
+
xfade: "diagbr",
|
|
289
|
+
group: "shapes",
|
|
290
|
+
description: "Diagonal slash sweep originating bottom-right.",
|
|
291
|
+
},
|
|
292
|
+
|
|
293
|
+
// ===== Slices =====
|
|
294
|
+
{
|
|
295
|
+
id: "hl-slice",
|
|
296
|
+
label: "Horizontal Left Slice",
|
|
297
|
+
xfade: "hlslice",
|
|
298
|
+
group: "slices",
|
|
299
|
+
description: "Horizontal strips slice in from the left.",
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
id: "hr-slice",
|
|
303
|
+
label: "Horizontal Right Slice",
|
|
304
|
+
xfade: "hrslice",
|
|
305
|
+
group: "slices",
|
|
306
|
+
description: "Horizontal strips slice in from the right.",
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
id: "vu-slice",
|
|
310
|
+
label: "Vertical Up Slice",
|
|
311
|
+
xfade: "vuslice",
|
|
312
|
+
group: "slices",
|
|
313
|
+
description: "Vertical strips slice in from the bottom.",
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
id: "vd-slice",
|
|
317
|
+
label: "Vertical Down Slice",
|
|
318
|
+
xfade: "vdslice",
|
|
319
|
+
group: "slices",
|
|
320
|
+
description: "Vertical strips slice in from the top.",
|
|
321
|
+
},
|
|
322
|
+
|
|
323
|
+
// ===== Reveals =====
|
|
324
|
+
{
|
|
325
|
+
id: "reveal-left",
|
|
326
|
+
label: "Reveal Left",
|
|
327
|
+
xfade: "revealleft",
|
|
328
|
+
group: "reveals",
|
|
329
|
+
description: "A slides leftward off-screen, revealing the static B underneath.",
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
id: "reveal-right",
|
|
333
|
+
label: "Reveal Right",
|
|
334
|
+
xfade: "revealright",
|
|
335
|
+
group: "reveals",
|
|
336
|
+
description: "A slides rightward off-screen, revealing B.",
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
id: "reveal-up",
|
|
340
|
+
label: "Reveal Up",
|
|
341
|
+
xfade: "revealup",
|
|
342
|
+
group: "reveals",
|
|
343
|
+
description: "A slides upward, revealing B.",
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
id: "reveal-down",
|
|
347
|
+
label: "Reveal Down",
|
|
348
|
+
xfade: "revealdown",
|
|
349
|
+
group: "reveals",
|
|
350
|
+
description: "A slides downward, revealing B.",
|
|
351
|
+
},
|
|
352
|
+
|
|
353
|
+
// ===== Covers =====
|
|
354
|
+
{
|
|
355
|
+
id: "cover-left",
|
|
356
|
+
label: "Cover Left",
|
|
357
|
+
xfade: "coverleft",
|
|
358
|
+
group: "covers",
|
|
359
|
+
description: "B slides in from the right and covers A in place.",
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
id: "cover-right",
|
|
363
|
+
label: "Cover Right",
|
|
364
|
+
xfade: "coverright",
|
|
365
|
+
group: "covers",
|
|
366
|
+
description: "B slides in from the left and covers A.",
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
id: "cover-up",
|
|
370
|
+
label: "Cover Up",
|
|
371
|
+
xfade: "coverup",
|
|
372
|
+
group: "covers",
|
|
373
|
+
description: "B slides up from below and covers A.",
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
id: "cover-down",
|
|
377
|
+
label: "Cover Down",
|
|
378
|
+
xfade: "coverdown",
|
|
379
|
+
group: "covers",
|
|
380
|
+
description: "B slides down from above and covers A.",
|
|
381
|
+
},
|
|
382
|
+
|
|
383
|
+
// ===== Effects =====
|
|
384
|
+
{
|
|
385
|
+
id: "pixelize",
|
|
386
|
+
label: "Pixelize",
|
|
387
|
+
xfade: "pixelize",
|
|
388
|
+
group: "effects",
|
|
389
|
+
description: "Both clips pixelate to chunky blocks at the midpoint, then sharpen into B.",
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
id: "radial",
|
|
393
|
+
label: "Radial Wipe",
|
|
394
|
+
xfade: "radial",
|
|
395
|
+
group: "effects",
|
|
396
|
+
description: "Clock-hand sweep around the center.",
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
id: "hblur",
|
|
400
|
+
label: "Blur",
|
|
401
|
+
xfade: "hblur",
|
|
402
|
+
group: "effects",
|
|
403
|
+
description: "Heavy horizontal blur at midpoint — dreamy speed-blur look.",
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
id: "distance",
|
|
407
|
+
label: "Distance",
|
|
408
|
+
xfade: "distance",
|
|
409
|
+
group: "effects",
|
|
410
|
+
description: "Distance-field morph between A and B. Subtle dimensional warp.",
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
id: "zoom-in",
|
|
414
|
+
label: "Zoom In",
|
|
415
|
+
xfade: "zoomin",
|
|
416
|
+
group: "effects",
|
|
417
|
+
description: "B zooms outward from a point in A.",
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
id: "squeeze-h",
|
|
421
|
+
label: "Squeeze Horizontal",
|
|
422
|
+
xfade: "squeezeh",
|
|
423
|
+
group: "effects",
|
|
424
|
+
description: "A squeezes horizontally to a line, then B expands.",
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
id: "squeeze-v",
|
|
428
|
+
label: "Squeeze Vertical",
|
|
429
|
+
xfade: "squeezev",
|
|
430
|
+
group: "effects",
|
|
431
|
+
description: "A squeezes vertically to a line, then B expands.",
|
|
432
|
+
},
|
|
433
|
+
]
|
|
434
|
+
|
|
435
|
+
/** All valid transition ids, sorted in catalog order. Use this for Zod enums. */
|
|
436
|
+
export const COMBINE_TRANSITION_IDS: readonly string[] = COMBINE_TRANSITIONS.map((t) => t.id)
|
|
437
|
+
|
|
438
|
+
/** Ordered list of group tab keys. `common` is a virtual tab, prepended in UI. */
|
|
439
|
+
export const COMBINE_TRANSITION_GROUP_ORDER: readonly CombineTransitionGroup[] = [
|
|
440
|
+
"fades",
|
|
441
|
+
"wipes",
|
|
442
|
+
"slides",
|
|
443
|
+
"smooth",
|
|
444
|
+
"shapes",
|
|
445
|
+
"slices",
|
|
446
|
+
"reveals",
|
|
447
|
+
"covers",
|
|
448
|
+
"effects",
|
|
449
|
+
]
|
|
450
|
+
|
|
451
|
+
export const COMBINE_TRANSITION_GROUP_LABELS: Record<CombineTransitionGroup, string> = {
|
|
452
|
+
fades: "Fades & Dips",
|
|
453
|
+
wipes: "Wipes",
|
|
454
|
+
slides: "Slides",
|
|
455
|
+
smooth: "Smooth",
|
|
456
|
+
shapes: "Shapes",
|
|
457
|
+
slices: "Slices",
|
|
458
|
+
reveals: "Reveals",
|
|
459
|
+
covers: "Covers",
|
|
460
|
+
effects: "Effects",
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
const TRANSITIONS_BY_ID: ReadonlyMap<string, CombineTransition> = new Map(
|
|
464
|
+
COMBINE_TRANSITIONS.map((t) => [t.id, t]),
|
|
465
|
+
)
|
|
466
|
+
|
|
467
|
+
export function getCombineTransition(id: string): CombineTransition | undefined {
|
|
468
|
+
return TRANSITIONS_BY_ID.get(id)
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Resolve the FFmpeg `xfade transition=` name for a given transition id.
|
|
473
|
+
* Returns `null` for `cut` (handled via the concat demuxer instead of xfade).
|
|
474
|
+
* Throws for unknown ids — callers validate input via Zod first.
|
|
475
|
+
*/
|
|
476
|
+
export function resolveXfadeName(id: string): string | null {
|
|
477
|
+
const entry = TRANSITIONS_BY_ID.get(id)
|
|
478
|
+
if (!entry) {
|
|
479
|
+
throw new Error(`Unknown combine-videos transition: ${id}`)
|
|
480
|
+
}
|
|
481
|
+
return entry.xfade
|
|
482
|
+
}
|
package/src/community.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared community-sharing types — the public "listing" shape for shared
|
|
3
|
+
* characters/locations/objects, re-used by the backend API response, the
|
|
4
|
+
* `@nodaro/sdk` SDK, the frontend, and the CLI so they can't drift.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** The kind of shared asset a community listing wraps. */
|
|
8
|
+
export type CommunityEntityType = "character" | "location" | "object" | "creature"
|
|
9
|
+
|
|
10
|
+
/** How `browse` orders results. `newest` (default) or most-cloned first. */
|
|
11
|
+
export type CommunitySort = "newest" | "popular"
|
|
12
|
+
|
|
13
|
+
/** Why a listing is being reported. Mirrors the backend's accepted reasons. */
|
|
14
|
+
export type CommunityReportReason =
|
|
15
|
+
| "real_person_no_consent"
|
|
16
|
+
| "inappropriate"
|
|
17
|
+
| "ip_violation"
|
|
18
|
+
| "other"
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A public community listing. Field names mirror the backend row shape
|
|
22
|
+
* (snake_case) exactly — this is the single source of truth for that shape.
|
|
23
|
+
*/
|
|
24
|
+
export interface CommunityCard {
|
|
25
|
+
id: string
|
|
26
|
+
entity_type: CommunityEntityType
|
|
27
|
+
creator_display_name: string | null
|
|
28
|
+
slug: string
|
|
29
|
+
title: string
|
|
30
|
+
description: string | null
|
|
31
|
+
category: string | null
|
|
32
|
+
style: string | null
|
|
33
|
+
tags: string[]
|
|
34
|
+
preview_media_url: string | null
|
|
35
|
+
preview_images: { url: string }[]
|
|
36
|
+
clone_count: number
|
|
37
|
+
favorite_count: number
|
|
38
|
+
created_at: string
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface BrowseCommunityParams {
|
|
42
|
+
entityType?: CommunityEntityType
|
|
43
|
+
q?: string
|
|
44
|
+
category?: string
|
|
45
|
+
sort?: CommunitySort
|
|
46
|
+
cursor?: string
|
|
47
|
+
limit?: number
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface BrowseCommunityResult {
|
|
51
|
+
data: CommunityCard[]
|
|
52
|
+
nextCursor: string | null
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface CloneListingResult {
|
|
56
|
+
entityType: CommunityEntityType
|
|
57
|
+
id: string
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface FavoriteListingResult {
|
|
61
|
+
favorited: boolean
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface ReportListingResult {
|
|
65
|
+
ok: boolean
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Body for publishing (sharing) an entity to the community. */
|
|
69
|
+
export interface PublishListingParams {
|
|
70
|
+
title: string
|
|
71
|
+
description?: string
|
|
72
|
+
category?: string
|
|
73
|
+
style?: string
|
|
74
|
+
tags?: string[]
|
|
75
|
+
attestation: true
|
|
76
|
+
likenessAttestation?: boolean
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Result of publishing — the new listing's slug + id. */
|
|
80
|
+
export interface PublishListingResult {
|
|
81
|
+
slug: string
|
|
82
|
+
id: string
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** A creator's own listing for one source entity (from the by-source lookup). */
|
|
86
|
+
export interface SharedListing {
|
|
87
|
+
id: string
|
|
88
|
+
slug: string
|
|
89
|
+
entity_type: CommunityEntityType
|
|
90
|
+
title: string
|
|
91
|
+
is_active: boolean
|
|
92
|
+
is_listed: boolean
|
|
93
|
+
clone_count: number
|
|
94
|
+
favorite_count: number
|
|
95
|
+
created_at: string
|
|
96
|
+
updated_at: string
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Full read-only detail for a community listing: the card identity plus the
|
|
101
|
+
* stored public `snapshot`. The snapshot is an opaque per-entity-type JSON blob
|
|
102
|
+
* (asset URLs + public text + reduced voice); consumers map it to their own
|
|
103
|
+
* shape. Backed by `GET /v1/community/detail/:slug/full`.
|
|
104
|
+
*/
|
|
105
|
+
export interface CommunityFullDetail {
|
|
106
|
+
id: string
|
|
107
|
+
slug: string
|
|
108
|
+
entity_type: CommunityEntityType
|
|
109
|
+
title: string
|
|
110
|
+
creator_display_name: string | null
|
|
111
|
+
snapshot: Record<string, unknown>
|
|
112
|
+
}
|