loopwind 0.9.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +40 -48
  2. package/dist/commands/render.d.ts +1 -1
  3. package/dist/commands/render.d.ts.map +1 -1
  4. package/dist/commands/render.js +53 -26
  5. package/dist/commands/render.js.map +1 -1
  6. package/dist/default-templates/AGENTS.md +29 -29
  7. package/dist/default-templates/image-template/template.tsx +15 -0
  8. package/dist/default-templates/video-template/template.tsx +19 -0
  9. package/dist/default-templates/website-template/template.tsx +18 -0
  10. package/dist/lib/utils.d.ts +1 -1
  11. package/dist/lib/utils.d.ts.map +1 -1
  12. package/dist/lib/utils.js +8 -7
  13. package/dist/lib/utils.js.map +1 -1
  14. package/dist/lib/video-renderer.d.ts +6 -0
  15. package/dist/lib/video-renderer.d.ts.map +1 -1
  16. package/dist/lib/video-renderer.js +69 -0
  17. package/dist/lib/video-renderer.js.map +1 -1
  18. package/dist/sdk/index.d.ts.map +1 -1
  19. package/dist/sdk/index.js +8 -8
  20. package/dist/sdk/index.js.map +1 -1
  21. package/package.json +2 -1
  22. package/dist/default-templates/image/meta.json +0 -13
  23. package/dist/default-templates/image-template/meta.json +0 -13
  24. package/dist/default-templates/kitchen-sink/meta.json +0 -13
  25. package/dist/default-templates/page/meta.json +0 -17
  26. package/dist/default-templates/video/meta.json +0 -17
  27. package/dist/default-templates/video-template/meta.json +0 -17
  28. package/dist/default-templates/website/meta.json +0 -16
  29. package/dist/default-templates/website-template/meta.json +0 -16
  30. package/test-templates/compare-svgs.mjs +0 -30
  31. package/test-templates/convert-frames.mjs +0 -15
  32. package/test-templates/debug-rotation.mjs +0 -25
package/README.md CHANGED
@@ -451,33 +451,34 @@ Templates can bundle their own fonts (WOFF, WOFF2, TTF, OTF):
451
451
 
452
452
  ```
453
453
  my-template/
454
- ├── my-template.tsx
455
- ├── meta.json
454
+ ├── template.tsx
456
455
  └── fonts/
457
456
  ├── CustomFont-Regular.woff
458
457
  └── CustomFont-Bold.woff
459
458
  ```
460
459
 
461
- **meta.json:**
462
- ```json
463
- {
464
- "name": "my-template",
465
- "fonts": [
460
+ **template.tsx:**
461
+ ```tsx
462
+ export const meta = {
463
+ name: "my-template",
464
+ // ...
465
+ fonts: [
466
466
  {
467
- "name": "Custom Font",
468
- "path": "fonts/CustomFont-Bold.woff",
469
- "weight": 700,
470
- "style": "normal"
467
+ name: "Custom Font",
468
+ path: "fonts/CustomFont-Bold.woff",
469
+ weight: 700,
470
+ style: "normal"
471
471
  }
472
472
  ]
473
- }
474
- ```
473
+ };
475
474
 
476
- **Template usage:**
477
- ```tsx
478
- <h1 style={{ fontFamily: 'Custom Font', fontWeight: 700 }}>
479
- Branded Typography
480
- </h1>
475
+ export default function Template({ title, tw }) {
476
+ return (
477
+ <h1 style={{ fontFamily: 'Custom Font', fontWeight: 700 }}>
478
+ {title}
479
+ </h1>
480
+ );
481
+ }
481
482
  ```
482
483
 
483
484
  **Use cases:**
@@ -681,7 +682,7 @@ loopwind render composite-card '{
681
682
  - First render pass detects which templates are needed
682
683
  - All templates load in parallel automatically
683
684
  - Second render pass completes with loaded templates
684
- - Each template uses its own `meta.json` for sizing
685
+ - Each template uses its own meta for sizing
685
686
  - Returns JSX directly (not a data URI)
686
687
  - Satori renders everything as a single SVG tree
687
688
 
@@ -854,43 +855,27 @@ Templates are stored in your project's `_loopwind/templates/` directory. You can
854
855
  mkdir -p _loopwind/templates/my-template
855
856
  ```
856
857
 
857
- 2. Create `meta.json`:
858
-
859
- ```json
860
- {
861
- "name": "my-template",
862
- "description": "My custom template",
863
- "type": "image",
864
- "size": { "width": 1200, "height": 630 },
865
- "props": {
866
- "title": "string"
867
- }
868
- }
869
- ```
870
-
871
- 3. Create `my-template.tsx`:
858
+ 2. Create `template.tsx` with exported meta:
872
859
 
873
860
  ```tsx
874
- export default function MyTemplate({ title }) {
861
+ export const meta = {
862
+ name: "my-template",
863
+ description: "My custom template",
864
+ type: "image",
865
+ size: { width: 1200, height: 630 },
866
+ props: { title: "string" }
867
+ };
868
+
869
+ export default function MyTemplate({ title, tw }) {
875
870
  return (
876
- <div style={{
877
- display: 'flex',
878
- width: '100%',
879
- height: '100%',
880
- background: '#000',
881
- color: '#fff',
882
- justifyContent: 'center',
883
- alignItems: 'center',
884
- fontSize: '48px',
885
- fontFamily: 'sans-serif',
886
- }}>
871
+ <div style={tw('flex items-center justify-center w-full h-full bg-black text-white text-5xl')}>
887
872
  {title}
888
873
  </div>
889
874
  );
890
875
  }
891
876
  ```
892
877
 
893
- 4. Validate and render:
878
+ 3. Validate and render:
894
879
 
895
880
  ```bash
896
881
  loopwind validate my-template
@@ -955,9 +940,12 @@ export default function Template({ title, frame, progress, tw, qr, template }) {
955
940
  ### Rendering Videos
956
941
 
957
942
  ```bash
958
- # Render to MP4
943
+ # Render to MP4 (default)
959
944
  loopwind render my-video '{"title":"Animated Title"}' -o output.mp4
960
945
 
946
+ # Render to GIF (great for emails, GitHub, Slack)
947
+ loopwind render my-video '{"title":"Animated Title"}' --format gif -o output.gif
948
+
961
949
  # With custom quality settings
962
950
  loopwind render my-video props.json --crf 18 # Higher quality (lower CRF = better quality)
963
951
 
@@ -965,6 +953,10 @@ loopwind render my-video props.json --crf 18 # Higher quality (lower CRF = bet
965
953
  loopwind render my-video props.json --frames-only -o frames/
966
954
  ```
967
955
 
956
+ **Output formats:**
957
+ - **MP4** - H.264 codec, smaller files, best quality (default)
958
+ - **GIF** - Animated, works everywhere (emails, GitHub READMEs, Slack)
959
+
968
960
  **How it works:**
969
961
  1. **SVG Generation**: All frames generated in parallel (~0.8s for 90 frames)
970
962
  2. **WASM Encoding**: Frames encoded to H.264 MP4 using pure JavaScript (~1.2s for 90 frames)
@@ -1,7 +1,7 @@
1
1
  interface RenderOptions {
2
2
  props?: string;
3
3
  out?: string;
4
- format?: 'png' | 'svg' | 'webp' | 'jpg' | 'jpeg';
4
+ format?: 'png' | 'svg' | 'webp' | 'jpg' | 'jpeg' | 'mp4' | 'gif';
5
5
  framesOnly?: boolean;
6
6
  crf?: number;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAgOf"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAwPf"}
@@ -4,7 +4,7 @@ import gradient from 'gradient-string';
4
4
  import path from 'path';
5
5
  import { isTemplateInstalled, parseProps, ensureOutputDir, loadTemplateMeta } from '../lib/utils.js';
6
6
  import { render } from '../lib/renderer.js';
7
- import { renderVideo, renderVideoFrames } from '../lib/video-renderer.js';
7
+ import { renderVideo, renderVideoFrames, renderVideoToGif } from '../lib/video-renderer.js';
8
8
  import { validateTemplateForRendering, enhanceSatoriError } from '../lib/template-validator.js';
9
9
  import { getResolvedPaths } from '../lib/config.js';
10
10
  import { checkForUpdates } from '../lib/version-check.js';
@@ -76,17 +76,24 @@ export async function renderCommand(templateName, propsArg, options) {
76
76
  const paths = await getResolvedPaths();
77
77
  // Handle video templates
78
78
  if (templateType === 'video') {
79
- const defaultFileName = `${templateName}-${Date.now()}.mp4`;
79
+ // Determine video format (mp4 or gif)
80
+ const videoFormat = options.format === 'gif' ? 'gif' : 'mp4';
81
+ const defaultFileName = `${templateName}-${Date.now()}.${videoFormat}`;
80
82
  let outputPath = options.out
81
83
  ? options.out
82
84
  : path.join(paths.outputs, defaultFileName);
83
85
  // Auto-correct extension if user provided wrong format
84
- if (options.out && !outputPath.endsWith('.mp4')) {
85
- const wrongExt = path.extname(outputPath);
86
- outputPath = outputPath.replace(/\.[^.]+$/, '.mp4');
87
- spinner.warn(chalk.yellow(`Video templates must output to .mp4 (changed ${wrongExt} → .mp4)`));
86
+ const validVideoExts = ['.mp4', '.gif'];
87
+ const currentExt = path.extname(outputPath).toLowerCase();
88
+ if (options.out && !validVideoExts.includes(currentExt)) {
89
+ outputPath = outputPath.replace(/\.[^.]+$/, `.${videoFormat}`);
90
+ spinner.warn(chalk.yellow(`Video templates must output to .mp4 or .gif (changed ${currentExt} → .${videoFormat})`));
88
91
  spinner.start();
89
92
  }
93
+ else if (options.out && currentExt === '.gif') {
94
+ // If user specified .gif extension, use gif format
95
+ // videoFormat is already set based on options.format
96
+ }
90
97
  // Frames-only mode
91
98
  if (options.framesOnly) {
92
99
  const framesDir = options.out || path.join(paths.outputs, `${templateName}-frames-${Date.now()}`);
@@ -121,46 +128,66 @@ export async function renderCommand(templateName, propsArg, options) {
121
128
  return;
122
129
  }
123
130
  // Render video (no ffmpeg required - uses WASM encoder!)
124
- spinner.text = 'Rendering video...';
131
+ spinner.text = `Rendering ${videoFormat.toUpperCase()}...`;
125
132
  let lastUpdate = Date.now();
126
- await renderVideo(templateName, props, outputPath, {
127
- quality: options.crf ? parseInt(String(options.crf), 10) : undefined,
128
- onFrameProgress: (frame, total, phase) => {
129
- if (Date.now() - lastUpdate > 100) {
130
- if (phase === 'svg') {
131
- spinner.text = `Generating SVGs: ${frame}/${total} (${Math.round((frame / total) * 100)}%)`;
133
+ if (videoFormat === 'gif') {
134
+ await renderVideoToGif(templateName, props, outputPath, {
135
+ onFrameProgress: (frame, total, phase) => {
136
+ if (Date.now() - lastUpdate > 100) {
137
+ if (phase === 'svg') {
138
+ spinner.text = `Generating SVGs: ${frame}/${total} (${Math.round((frame / total) * 100)}%)`;
139
+ }
140
+ else if (phase === 'encode') {
141
+ spinner.text = `Encoding GIF: ${frame}/${total} (${Math.round((frame / total) * 100)}%)`;
142
+ }
143
+ lastUpdate = Date.now();
132
144
  }
133
- else if (phase === 'encode') {
134
- spinner.text = `Encoding video: ${frame}/${total} (${Math.round((frame / total) * 100)}%)`;
145
+ },
146
+ });
147
+ }
148
+ else {
149
+ await renderVideo(templateName, props, outputPath, {
150
+ quality: options.crf ? parseInt(String(options.crf), 10) : undefined,
151
+ onFrameProgress: (frame, total, phase) => {
152
+ if (Date.now() - lastUpdate > 100) {
153
+ if (phase === 'svg') {
154
+ spinner.text = `Generating SVGs: ${frame}/${total} (${Math.round((frame / total) * 100)}%)`;
155
+ }
156
+ else if (phase === 'encode') {
157
+ spinner.text = `Encoding video: ${frame}/${total} (${Math.round((frame / total) * 100)}%)`;
158
+ }
159
+ lastUpdate = Date.now();
135
160
  }
136
- lastUpdate = Date.now();
137
- }
138
- },
139
- });
140
- spinner.succeed(chalk.green(`Successfully rendered video to ${chalk.bold(outputPath)}`));
161
+ },
162
+ });
163
+ }
164
+ spinner.succeed(chalk.green(`Successfully rendered ${videoFormat.toUpperCase()} to ${chalk.bold(outputPath)}`));
141
165
  console.log(chalk.dim(`\nTemplate: ${templateName}`));
142
- console.log(chalk.dim(`Format: MP4`));
166
+ console.log(chalk.dim(`Format: ${videoFormat.toUpperCase()}`));
143
167
  console.log(chalk.dim(`Output: ${path.resolve(outputPath)}\n`));
144
168
  await showUpdateNotification();
145
169
  return;
146
170
  }
147
171
  // Handle image templates
148
- const format = options.format || 'png';
149
- const defaultFileName = `${templateName}-${Date.now()}.${format}`;
172
+ // Filter out video formats for image templates
173
+ const imageFormat = (options.format === 'mp4' || options.format === 'gif')
174
+ ? 'png'
175
+ : (options.format || 'png');
176
+ const defaultFileName = `${templateName}-${Date.now()}.${imageFormat}`;
150
177
  const outputPath = options.out
151
178
  ? options.out
152
179
  : path.join(paths.outputs, defaultFileName);
153
180
  // Render
154
- spinner.text = `Rendering to ${format.toUpperCase()}...`;
181
+ spinner.text = `Rendering to ${imageFormat.toUpperCase()}...`;
155
182
  await render({
156
183
  templateName,
157
184
  props,
158
185
  outputPath,
159
- format,
186
+ format: imageFormat,
160
187
  });
161
188
  spinner.succeed(chalk.green(`Successfully rendered to ${chalk.bold(outputPath)}`));
162
189
  console.log(chalk.dim(`\nTemplate: ${templateName}`));
163
- console.log(chalk.dim(`Format: ${format.toUpperCase()}`));
190
+ console.log(chalk.dim(`Format: ${imageFormat.toUpperCase()}`));
164
191
  console.log(chalk.dim(`Output: ${path.resolve(outputPath)}\n`));
165
192
  await showUpdateNotification();
166
193
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"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"}
@@ -36,19 +36,24 @@ loopwind render banner-hero props.json --out output.png --format png
36
36
 
37
37
  ### 5. Render Videos
38
38
  ```bash
39
- # Requires ffmpeg installed
39
+ # Render to MP4 (default)
40
40
  loopwind render my-video '{"title":"Video Title"}'
41
41
 
42
- # With options
43
- loopwind render my-video props.json --preset fast --crf 23
42
+ # Render to GIF (great for emails, GitHub, Slack)
43
+ loopwind render my-video '{"title":"Video Title"}' --format gif
44
44
 
45
- # Export frames only (no ffmpeg needed)
45
+ # With quality options
46
+ loopwind render my-video props.json --crf 23
47
+
48
+ # Export frames only
46
49
  loopwind render my-video props.json --frames-only
47
50
 
48
51
  # Keep frames after encoding
49
52
  loopwind render my-video props.json --keep-frames
50
53
  ```
51
54
 
55
+ **Formats:** MP4 (default), GIF
56
+
52
57
  ### 6. Validate Templates
53
58
  ```bash
54
59
  loopwind validate [template] # Validate one or all templates
@@ -68,18 +73,15 @@ project/
68
73
  ## Template Types
69
74
 
70
75
  ### Image Template
71
- **meta.json:**
72
- ```json
73
- {
74
- "name": "my-template",
75
- "type": "image",
76
- "size": { "width": 1200, "height": 630 },
77
- "props": { "title": "string" }
78
- }
79
- ```
80
-
81
- **template.tsx:**
82
76
  ```tsx
77
+ // template.tsx
78
+ export const meta = {
79
+ name: "my-template",
80
+ type: "image",
81
+ size: { width: 1200, height: 630 },
82
+ props: { title: "string" }
83
+ };
84
+
83
85
  export default function Template({ title, tw }) {
84
86
  return (
85
87
  <div style={tw('flex items-center justify-center w-full h-full bg-primary')}>
@@ -90,19 +92,16 @@ export default function Template({ title, tw }) {
90
92
  ```
91
93
 
92
94
  ### Video Template
93
- **meta.json:**
94
- ```json
95
- {
96
- "name": "my-video",
97
- "type": "video",
98
- "size": { "width": 1920, "height": 1080 },
99
- "video": { "fps": 30, "duration": 3 },
100
- "props": { "title": "string" }
101
- }
102
- ```
103
-
104
- **template.tsx:**
105
95
  ```tsx
96
+ // template.tsx
97
+ export const meta = {
98
+ name: "my-video",
99
+ type: "video",
100
+ size: { width: 1920, height: 1080 },
101
+ video: { fps: 30, duration: 3 },
102
+ props: { title: "string" }
103
+ };
104
+
106
105
  export default function VideoTemplate({ title, tw, progress }) {
107
106
  const opacity = progress < 0.2 ? progress / 0.2 : 1;
108
107
 
@@ -189,7 +188,8 @@ loopwind render banner-hero '{"title":"Hello","subtitle":"World"}'
189
188
  ### Generate Video
190
189
  ```bash
191
190
  loopwind add my-video
192
- loopwind render my-video '{"title":"Amazing Video"}' # Requires ffmpeg
191
+ loopwind render my-video '{"title":"Amazing Video"}' # MP4 output
192
+ loopwind render my-video '{"title":"Amazing Video"}' --format gif # GIF output
193
193
  ```
194
194
 
195
195
  ### Use Custom Branding
@@ -216,7 +216,7 @@ loopwind render og-image '{"title":"My Page"}'
216
216
 
217
217
  1. Always run `loopwind init` first in new projects
218
218
  2. Check `loopwind list` to see available templates
219
- 3. Video rendering requires ffmpeg (or use `--frames-only`)
219
+ 3. Videos can be rendered to MP4 or GIF (use `--format gif`)
220
220
  4. Image props are auto-detected (any prop ending in .jpg, .png, etc.)
221
221
  5. Video props are extracted at template FPS and cached
222
222
  6. Use `tw()` for all styling - it uses project's Tailwind config
@@ -1,4 +1,19 @@
1
1
 
2
+
3
+ export const meta = {
4
+ "name": "image",
5
+ "description": "Simple image starter template",
6
+ "type": "image",
7
+ "size": {
8
+ "width": 1200,
9
+ "height": 630
10
+ },
11
+ "props": {
12
+ "title": "string",
13
+ "description": "string?"
14
+ }
15
+ };
16
+
2
17
  // Template metadata is defined in meta.json
3
18
 
4
19
  export default function Template({ title, description, tw }) {
@@ -1,4 +1,23 @@
1
1
 
2
+
3
+ export const meta = {
4
+ "name": "video",
5
+ "description": "Animated video starter template",
6
+ "type": "video",
7
+ "size": {
8
+ "width": 1200,
9
+ "height": 630
10
+ },
11
+ "props": {
12
+ "title": "string",
13
+ "description": "string?"
14
+ },
15
+ "video": {
16
+ "fps": 30,
17
+ "duration": 3
18
+ }
19
+ };
20
+
2
21
  // Template metadata is defined in meta.json
3
22
 
4
23
  export default function Template({ title, description, frame, progress, tw }) {
@@ -1,4 +1,22 @@
1
1
 
2
+
3
+ export const meta = {
4
+ "name": "website",
5
+ "description": "Generate websites",
6
+ "type": "website",
7
+ "size": {
8
+ "width": 1200
9
+ },
10
+ "props": {
11
+ "title": "string",
12
+ "description": "string?"
13
+ },
14
+ "url": {
15
+ "fps": 30,
16
+ "duration": 3
17
+ }
18
+ };
19
+
2
20
  // Template metadata is defined in meta.json
3
21
 
4
22
  export default function Template({ title, description}) {
@@ -33,7 +33,7 @@ export declare function getTemplatePath(name: string): string;
33
33
  */
34
34
  export declare function getTemplatePathAsync(name: string, relativeTo?: string): Promise<string>;
35
35
  /**
36
- * Load template metadata from meta.json
36
+ * Load template metadata from exported meta in template file
37
37
  * Supports relative paths when relativeTo is provided
38
38
  */
39
39
  export declare function loadTemplateMeta(name: string, relativeTo?: string): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGvD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGxD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAW/D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASxE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmE7F;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAQtF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAsDlF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGvD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGxD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAW/D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASxE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmE7F;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAWtF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAsDlF"}
package/dist/lib/utils.js CHANGED
@@ -143,16 +143,17 @@ export async function getTemplatePathAsync(name, relativeTo) {
143
143
  }
144
144
  }
145
145
  /**
146
- * Load template metadata from meta.json
146
+ * Load template metadata from exported meta in template file
147
147
  * Supports relative paths when relativeTo is provided
148
148
  */
149
149
  export async function loadTemplateMeta(name, relativeTo) {
150
- // Get the template path to determine where meta.json should be
151
- const templatePath = await getTemplatePathAsync(name, relativeTo);
152
- const templateDir = path.dirname(templatePath);
153
- const metaPath = path.join(templateDir, 'meta.json');
154
- const content = await fs.readFile(metaPath, 'utf-8');
155
- return JSON.parse(content);
150
+ // Import loadTemplate dynamically to avoid circular dependency
151
+ const { loadTemplate } = await import('./renderer.js');
152
+ const { module } = await loadTemplate(name, relativeTo);
153
+ if (!module.meta) {
154
+ throw new Error(`Template "${name}" does not export a 'meta' object. Add 'export const meta = { ... }' to your template.`);
155
+ }
156
+ return module.meta;
156
157
  }
157
158
  /**
158
159
  * Parse props from JSON file or string
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -29,4 +29,10 @@ export declare function renderVideo(templateName: string, props: TemplateProps,
29
29
  quality?: number;
30
30
  onFrameProgress?: (frame: number, total: number, phase?: 'svg' | 'encode') => void;
31
31
  }): Promise<void>;
32
+ /**
33
+ * Render a video template to GIF using gifenc (pure JS, no ffmpeg required)
34
+ */
35
+ export declare function renderVideoToGif(templateName: string, props: TemplateProps, outputPath: string, options?: {
36
+ onFrameProgress?: (frame: number, total: number, phase?: 'svg' | 'encode') => void;
37
+ }): Promise<void>;
32
38
  //# sourceMappingURL=video-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"video-renderer.d.ts","sourceRoot":"","sources":["../../src/lib/video-renderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8H9E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,GACA,OAAO,CAAC,IAAI,CAAC,CA2Df;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;CAC/E,GACL,OAAO,CAAC,IAAI,CAAC,CA6Ef"}
1
+ {"version":3,"file":"video-renderer.d.ts","sourceRoot":"","sources":["../../src/lib/video-renderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8H9E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,GACA,OAAO,CAAC,IAAI,CAAC,CA2Df;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;CAC/E,GACL,OAAO,CAAC,IAAI,CAAC,CA6Ef;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;CAC/E,GACL,OAAO,CAAC,IAAI,CAAC,CAsFf"}
@@ -223,4 +223,73 @@ export async function renderVideo(templateName, props, outputPath, options = {})
223
223
  encoder.delete();
224
224
  console.log(`H.264 encoding: ${Date.now() - startEncoding}ms`);
225
225
  }
226
+ /**
227
+ * Render a video template to GIF using gifenc (pure JS, no ffmpeg required)
228
+ */
229
+ export async function renderVideoToGif(templateName, props, outputPath, options = {}) {
230
+ const { onFrameProgress } = options;
231
+ // Load template metadata
232
+ const meta = await loadTemplateMeta(templateName);
233
+ if (meta.type !== 'video') {
234
+ throw new Error(`Template "${templateName}" is not a video template (type: ${meta.type || 'image'})`);
235
+ }
236
+ if (!meta.video) {
237
+ throw new Error(`Template "${templateName}" is missing video metadata`);
238
+ }
239
+ const { fps, duration } = meta.video;
240
+ const totalFrames = Math.floor(fps * duration);
241
+ const { width, height } = meta.size;
242
+ // Step 1: Generate ALL SVGs in parallel
243
+ const startTotal = Date.now();
244
+ const svgs = new Array(totalFrames);
245
+ const svgPromises = [];
246
+ for (let frame = 0; frame < totalFrames; frame++) {
247
+ const progress = frame / (totalFrames - 1);
248
+ const frameProps = { ...props, frame, progress };
249
+ svgPromises.push(renderToSVG(templateName, frameProps).then(svg => {
250
+ svgs[frame] = svg;
251
+ }));
252
+ }
253
+ await Promise.all(svgPromises);
254
+ // Step 2: Convert ALL SVGs to raw RGBA buffers in parallel
255
+ const rgbaBuffers = new Array(totalFrames);
256
+ const rgbaPromises = [];
257
+ for (let i = 0; i < totalFrames; i++) {
258
+ rgbaPromises.push(sharp(Buffer.from(svgs[i]))
259
+ .resize(width, height, { fit: 'fill' })
260
+ .ensureAlpha()
261
+ .raw()
262
+ .toBuffer()
263
+ .then((buffer) => {
264
+ rgbaBuffers[i] = new Uint8Array(buffer);
265
+ }));
266
+ }
267
+ await Promise.all(rgbaPromises);
268
+ console.log(`SVG + RGBA: ${Date.now() - startTotal}ms`);
269
+ // Step 3: Create animated GIF using gifenc
270
+ const startEncoding = Date.now();
271
+ const gifenc = (await import('gifenc')).default;
272
+ const { GIFEncoder, quantize, applyPalette } = gifenc;
273
+ const gif = GIFEncoder();
274
+ // Calculate delay in centiseconds (GIF uses 1/100th of a second)
275
+ const delay = Math.round(100 / fps);
276
+ // Add each frame to the GIF
277
+ for (let i = 0; i < totalFrames; i++) {
278
+ const rgba = rgbaBuffers[i];
279
+ // Quantize the RGBA data to a 256-color palette
280
+ const palette = quantize(rgba, 256);
281
+ // Apply the palette to get indexed pixel data
282
+ const index = applyPalette(rgba, palette);
283
+ // Write frame to GIF
284
+ gif.writeFrame(index, width, height, {
285
+ palette,
286
+ delay,
287
+ });
288
+ }
289
+ // Finish and write to file
290
+ gif.finish();
291
+ const output = gif.bytes();
292
+ await fs.writeFile(outputPath, output);
293
+ console.log(`GIF encoding: ${Date.now() - startEncoding}ms`);
294
+ }
226
295
  //# sourceMappingURL=video-renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"video-renderer.js","sourceRoot":"","sources":["../../src/lib/video-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-renderer.js","sourceRoot":"","sources":["../../src/lib/video-renderer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAQxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;CAC/E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAG,GAAG,EAC5C,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CA0CjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAG,GAAG,EAC5C,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAQxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;CAC/E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAG,GAAG,EAC5C,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAyCjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAG,GAAG,EAC5C,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
package/dist/sdk/index.js CHANGED
@@ -29,14 +29,14 @@ export async function renderImage(template, props, options = {}) {
29
29
  // Save template to temp file so we can use the existing renderer
30
30
  const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'loopwind-sdk-'));
31
31
  const templatePath = path.join(tempDir, 'template.tsx');
32
- const metaPath = path.join(tempDir, 'meta.json');
33
32
  try {
34
- // Write template component to file
33
+ // Write template component with embedded meta
35
34
  const templateContent = `import React from 'react';
35
+
36
+ export const meta = ${JSON.stringify(meta, null, 2)};
37
+
36
38
  export default ${template.render.toString()};`;
37
39
  await fs.writeFile(templatePath, templateContent);
38
- // Write meta.json
39
- await fs.writeFile(metaPath, JSON.stringify(meta, null, 2));
40
40
  // Use existing renderer - pass temp dir as template name
41
41
  if (format === 'svg') {
42
42
  const svg = await renderToSVG(tempDir, props);
@@ -96,15 +96,15 @@ export async function renderVideo(template, props, options = {}) {
96
96
  // Save template to temp file so we can use the existing renderer
97
97
  const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'loopwind-sdk-'));
98
98
  const templatePath = path.join(tempDir, 'template.tsx');
99
- const metaPath = path.join(tempDir, 'meta.json');
100
99
  const outputPath = path.join(tempDir, 'output.mp4');
101
100
  try {
102
- // Write template component to file
101
+ // Write template component with embedded meta
103
102
  const templateContent = `import React from 'react';
103
+
104
+ export const meta = ${JSON.stringify(meta, null, 2)};
105
+
104
106
  export default ${template.render.toString()};`;
105
107
  await fs.writeFile(templatePath, templateContent);
106
- // Write meta.json
107
- await fs.writeFile(metaPath, JSON.stringify(meta, null, 2));
108
108
  // Use existing video renderer
109
109
  await renderVideoInternal(tempDir, props, outputPath, options);
110
110
  // Read the generated MP4
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG1F,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAmB/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAoC,EACpC,KAAa,EACb,UAA8B,EAAE;IAEhC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,iEAAiE;IACjE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,mCAAmC;QACnC,MAAM,eAAe,GAAG;iBACX,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC;QAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAElD,kBAAkB;QAClB,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5D,yDAAyD;QACzD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAY,CAAC,CAAC;YACrD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,KAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,KAAY,CAAC,CAAC;YACzD,+DAA+D;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAY,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,qBAAqB;QACrB,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAoC,EACpC,KAAa,EACb,UAA8B,EAAE;IAEhC,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,iEAAiE;IACjE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,mCAAmC;QACnC,MAAM,eAAe,GAAG;iBACX,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC;QAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAElD,kBAAkB;QAClB,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5D,8BAA8B;QAC9B,MAAM,mBAAmB,CAAC,OAAO,EAAE,KAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAEtE,yBAAyB;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,qBAAqB;QACrB,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loopwind",
3
- "version": "0.9.3",
3
+ "version": "0.10.0",
4
4
  "description": "A CLI tool for AI code agents and developers for generating images and videos.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -54,6 +54,7 @@
54
54
  "commander": "^12.0.0",
55
55
  "esbuild": "^0.27.0",
56
56
  "express": "^5.1.0",
57
+ "gifenc": "^1.0.3",
57
58
  "gradient-string": "^3.0.0",
58
59
  "h264-mp4-encoder": "^1.0.12",
59
60
  "mediabunny": "^1.25.0",
@@ -1,13 +0,0 @@
1
- {
2
- "name": "image",
3
- "description": "Simple image starter template",
4
- "type": "image",
5
- "size": {
6
- "width": 1200,
7
- "height": 630
8
- },
9
- "props": {
10
- "title": "string",
11
- "description": "string?"
12
- }
13
- }
@@ -1,13 +0,0 @@
1
- {
2
- "name": "image",
3
- "description": "Simple image starter template",
4
- "type": "image",
5
- "size": {
6
- "width": 1200,
7
- "height": 630
8
- },
9
- "props": {
10
- "title": "string",
11
- "description": "string?"
12
- }
13
- }
@@ -1,13 +0,0 @@
1
- {
2
- "name": "kitchen-sink",
3
- "description": "Comprehensive example showcasing all supported Tailwind features",
4
- "type": "image",
5
- "size": {
6
- "width": 1200,
7
- "height": 630
8
- },
9
- "props": {
10
- "title": "string",
11
- "subtitle": "string?"
12
- }
13
- }
@@ -1,17 +0,0 @@
1
- {
2
- "name": "video",
3
- "description": "Animated video starter template",
4
- "type": "video",
5
- "size": {
6
- "width": 1200,
7
- "height": 630
8
- },
9
- "props": {
10
- "title": "string",
11
- "description": "string?"
12
- },
13
- "video": {
14
- "fps": 30,
15
- "duration": 3
16
- }
17
- }
@@ -1,17 +0,0 @@
1
- {
2
- "name": "video",
3
- "description": "Animated video starter template",
4
- "type": "video",
5
- "size": {
6
- "width": 1200,
7
- "height": 630
8
- },
9
- "props": {
10
- "title": "string",
11
- "description": "string?"
12
- },
13
- "video": {
14
- "fps": 30,
15
- "duration": 3
16
- }
17
- }
@@ -1,17 +0,0 @@
1
- {
2
- "name": "video",
3
- "description": "Animated video starter template",
4
- "type": "video",
5
- "size": {
6
- "width": 1200,
7
- "height": 630
8
- },
9
- "props": {
10
- "title": "string",
11
- "description": "string?"
12
- },
13
- "video": {
14
- "fps": 30,
15
- "duration": 3
16
- }
17
- }
@@ -1,16 +0,0 @@
1
- {
2
- "name": "website",
3
- "description": "Generate websites",
4
- "type": "website",
5
- "size": {
6
- "width": 1200
7
- },
8
- "props": {
9
- "title": "string",
10
- "description": "string?"
11
- },
12
- "url": {
13
- "fps": 30,
14
- "duration": 3
15
- }
16
- }
@@ -1,16 +0,0 @@
1
- {
2
- "name": "website",
3
- "description": "Generate websites",
4
- "type": "website",
5
- "size": {
6
- "width": 1200
7
- },
8
- "props": {
9
- "title": "string",
10
- "description": "string?"
11
- },
12
- "url": {
13
- "fps": 30,
14
- "duration": 3
15
- }
16
- }
@@ -1,30 +0,0 @@
1
- import { renderToSVG } from '../dist/lib/renderer.js';
2
- import fs from 'fs/promises';
3
-
4
- async function compare() {
5
- console.log('=== MINIMAL-SPIN (works) ===\n');
6
-
7
- for (let frame = 0; frame < 3; frame++) {
8
- const progress = frame / 89;
9
- const svg = await renderToSVG('minimal-spin', { frame, progress });
10
- await fs.writeFile(`output/compare-minimal-${frame}.svg`, svg);
11
-
12
- // Extract the transform from the blue square
13
- const match = svg.match(/fill="#3b82f6"[^>]*transform="([^"]+)"/);
14
- console.log(`Frame ${frame}: ${match ? match[1] : 'no transform'}`);
15
- }
16
-
17
- console.log('\n=== CENTERED-SPIN (jitters) ===\n');
18
-
19
- for (let frame = 0; frame < 3; frame++) {
20
- const progress = frame / 89;
21
- const svg = await renderToSVG('centered-spin', { frame, progress });
22
- await fs.writeFile(`output/compare-centered-${frame}.svg`, svg);
23
-
24
- // Extract the transform from the blue square
25
- const match = svg.match(/fill="#3b82f6"[^>]*transform="([^"]+)"/);
26
- console.log(`Frame ${frame}: ${match ? match[1] : 'no transform'}`);
27
- }
28
- }
29
-
30
- compare().catch(console.error);
@@ -1,15 +0,0 @@
1
- import sharp from 'sharp';
2
- import fs from 'fs/promises';
3
-
4
- async function convert() {
5
- // Convert centered-spin SVG frames to PNG
6
- for (let i = 0; i < 10; i++) {
7
- const svg = await fs.readFile(`output/centered-frame-${i}.svg`);
8
- await sharp(svg)
9
- .png()
10
- .toFile(`output/centered-frame-${i}.png`);
11
- console.log(`Converted frame ${i}`);
12
- }
13
- }
14
-
15
- convert().catch(console.error);
@@ -1,25 +0,0 @@
1
- import { renderToSVG } from '../dist/lib/renderer.js';
2
- import fs from 'fs/promises';
3
-
4
- async function debug() {
5
- // Generate frames and diff
6
- console.log('Generating centered-spin frames:\n');
7
-
8
- for (let frame = 0; frame < 5; frame++) {
9
- const progress = frame / 89;
10
- const svg = await renderToSVG('centered-spin', { frame, progress });
11
- await fs.writeFile(`output/centered-frame-${frame}.svg`, svg);
12
- console.log(`Frame ${frame} saved`);
13
- }
14
-
15
- // Show the full SVG for frame 0 and 1
16
- console.log('\n--- Frame 0 ---');
17
- const svg0 = await fs.readFile('output/centered-frame-0.svg', 'utf-8');
18
- console.log(svg0);
19
-
20
- console.log('\n--- Frame 1 ---');
21
- const svg1 = await fs.readFile('output/centered-frame-1.svg', 'utf-8');
22
- console.log(svg1);
23
- }
24
-
25
- debug().catch(console.error);