@gannochenko/staticstripes 0.0.22 → 0.0.24
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/Makefile +8 -0
- package/dist/app-builder.d.ts +18 -0
- package/dist/app-builder.d.ts.map +1 -0
- package/dist/app-builder.js +94 -0
- package/dist/app-builder.js.map +1 -0
- package/dist/cli/commands/filters.d.ts +3 -0
- package/dist/cli/commands/filters.d.ts.map +1 -0
- package/dist/cli/commands/filters.js +21 -0
- package/dist/cli/commands/filters.js.map +1 -0
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +6 -1
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/instagram/instagram-upload-strategy.d.ts +5 -0
- package/dist/cli/instagram/instagram-upload-strategy.d.ts.map +1 -1
- package/dist/cli/instagram/instagram-upload-strategy.js +46 -3
- package/dist/cli/instagram/instagram-upload-strategy.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/ffmpeg.d.ts +32 -0
- package/dist/ffmpeg.d.ts.map +1 -1
- package/dist/ffmpeg.js +118 -0
- package/dist/ffmpeg.js.map +1 -1
- package/dist/html-project-parser.d.ts +36 -1
- package/dist/html-project-parser.d.ts.map +1 -1
- package/dist/html-project-parser.js +332 -15
- package/dist/html-project-parser.js.map +1 -1
- package/dist/project.d.ts +4 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +50 -1
- package/dist/project.js.map +1 -1
- package/dist/sample-sequences.d.ts.map +1 -1
- package/dist/sample-sequences.js +293 -0
- package/dist/sample-sequences.js.map +1 -1
- package/dist/sequence.d.ts +4 -1
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +71 -21
- package/dist/sequence.js.map +1 -1
- package/dist/stream.d.ts +17 -0
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +28 -0
- package/dist/stream.js.map +1 -1
- package/dist/type.d.ts +29 -2
- package/dist/type.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/app-builder.ts +113 -0
- package/src/cli/commands/filters.ts +21 -0
- package/src/cli/commands/generate.ts +10 -1
- package/src/cli/instagram/instagram-upload-strategy.ts +61 -1
- package/src/cli.ts +2 -0
- package/src/ffmpeg.ts +161 -0
- package/src/html-project-parser.ts +410 -28
- package/src/project.ts +62 -0
- package/src/sample-sequences.ts +300 -0
- package/src/sequence.ts +78 -22
- package/src/stream.ts +50 -0
- package/src/type.ts +31 -2
package/src/type.ts
CHANGED
|
@@ -47,7 +47,7 @@ export type Fragment = {
|
|
|
47
47
|
id: string;
|
|
48
48
|
enabled: boolean;
|
|
49
49
|
assetName: string;
|
|
50
|
-
duration: number; // calculated, in seconds (can come from CSS or from the asset's duration)
|
|
50
|
+
duration: number | CompiledExpression; // calculated, in seconds (can come from CSS or from the asset's duration, or be a calc() expression)
|
|
51
51
|
trimLeft: number; // in seconds (skip first N seconds of asset via -trim-start)
|
|
52
52
|
overlayLeft: number | CompiledExpression; // amount of seconds to overlay with the previous fragment (normalized from margin-left + prev margin-right)
|
|
53
53
|
overlayZIndex: number;
|
|
@@ -55,17 +55,28 @@ export type Fragment = {
|
|
|
55
55
|
transitionInDuration: number; // how long the transition in lasts
|
|
56
56
|
transitionOut: string; // how to transition out of the fragment
|
|
57
57
|
transitionOutDuration: number; // how long the transition out lasts
|
|
58
|
-
objectFit: 'cover' | 'contain';
|
|
58
|
+
objectFit: 'cover' | 'contain' | 'ken-burns';
|
|
59
59
|
objectFitContain: 'ambient' | 'pillarbox';
|
|
60
60
|
objectFitContainAmbientBlurStrength: number;
|
|
61
61
|
objectFitContainAmbientBrightness: number;
|
|
62
62
|
objectFitContainAmbientSaturation: number;
|
|
63
63
|
objectFitContainPillarboxColor: string;
|
|
64
|
+
objectFitKenBurns: 'zoom-in' | 'zoom-out' | 'pan-left' | 'pan-right' | 'pan-top' | 'pan-bottom';
|
|
65
|
+
objectFitKenBurnsZoom: number; // zoom percentage (e.g., 30 = 30% zoom, applies to all effects)
|
|
66
|
+
objectFitKenBurnsEffectDuration: number; // duration of the ken burns effect in milliseconds
|
|
67
|
+
objectFitKenBurnsEasing: 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out';
|
|
68
|
+
objectFitKenBurnsFocalX: number; // focal point X in percent (0-100, for zoom effects)
|
|
69
|
+
objectFitKenBurnsFocalY: number; // focal point Y in percent (0-100, for zoom effects)
|
|
70
|
+
objectFitKenBurnsPanStartX: number; // pan start position X in percent (0-100, for horizontal pan effects)
|
|
71
|
+
objectFitKenBurnsPanStartY: number; // pan start position Y in percent (0-100, for vertical pan effects)
|
|
72
|
+
objectFitKenBurnsPanEndX: number; // pan end position X in percent (0-100, for horizontal pan effects)
|
|
73
|
+
objectFitKenBurnsPanEndY: number; // pan end position Y in percent (0-100, for vertical pan effects)
|
|
64
74
|
chromakey: boolean;
|
|
65
75
|
chromakeyBlend: number;
|
|
66
76
|
chromakeySimilarity: number;
|
|
67
77
|
chromakeyColor: string;
|
|
68
78
|
visualFilter?: string; // Optional visual filter (e.g., 'instagram-nashville')
|
|
79
|
+
sound: 'on' | 'off'; // Whether to use asset audio or replace with silence (default: 'on')
|
|
69
80
|
container?: Container; // Optional container attached to this fragment
|
|
70
81
|
app?: App; // Optional app attached to this fragment
|
|
71
82
|
timecodeLabel?: string; // Optional label for timecode (from data-timecode attribute)
|
|
@@ -75,6 +86,23 @@ export type SequenceDefinition = {
|
|
|
75
86
|
fragments: Fragment[];
|
|
76
87
|
};
|
|
77
88
|
|
|
89
|
+
export type FragmentDebugInfo = {
|
|
90
|
+
id: string;
|
|
91
|
+
assetName: string;
|
|
92
|
+
startTime: number; // absolute start time in seconds
|
|
93
|
+
endTime: number; // absolute end time in seconds
|
|
94
|
+
duration: number; // fragment duration in seconds
|
|
95
|
+
trimLeft: number; // trim from asset start in seconds
|
|
96
|
+
overlayLeft: number; // overlay with previous fragment in seconds
|
|
97
|
+
enabled: boolean;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export type SequenceDebugInfo = {
|
|
101
|
+
sequenceIndex: number;
|
|
102
|
+
totalDuration: number; // total duration of the sequence in seconds
|
|
103
|
+
fragments: FragmentDebugInfo[];
|
|
104
|
+
};
|
|
105
|
+
|
|
78
106
|
export type Output = {
|
|
79
107
|
name: string; // e.g. "youtube"
|
|
80
108
|
path: string; // e.g. "./output/video.mp4"
|
|
@@ -118,6 +146,7 @@ export type Upload = {
|
|
|
118
146
|
thumbOffset?: number; // Thumbnail frame location in milliseconds
|
|
119
147
|
coverUrl?: string; // Optional cover image URL
|
|
120
148
|
videoUrl?: string; // Public URL to video (if not auto-generated from S3)
|
|
149
|
+
locationId?: string; // Facebook Page location ID for geotagging
|
|
121
150
|
};
|
|
122
151
|
};
|
|
123
152
|
|