@haibun/utils 1.49.0 → 1.50.3

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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/walkthrough-container/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env node
2
+ import { getPackageLocation } from '@haibun/core/build/lib/util/workspace-lib.js';
3
+ import { execSync } from 'child_process';
4
+ import { resolve } from 'path';
5
+ import { writeFileSync, unlinkSync, readFileSync, mkdirSync, existsSync } from 'fs';
6
+ import { tmpdir } from 'os';
7
+ import { HOST_PROJECT_DIR } from '@haibun/core/build/lib/defs.js';
8
+ const runContainer = (testToRun, filter, includeDirs = [], recreate) => {
9
+ try {
10
+ const utilDir = resolve(getPackageLocation(import.meta), '..', '..', 'walkthrough-container');
11
+ const projectDir = process.cwd();
12
+ const tmpFile = resolve(tmpdir(), `docker-compose.override-${Date.now()}.yml`);
13
+ const envs = readFileSync(`${projectDir}/.env`, 'utf8').split('\n').join(',');
14
+ const haibunEnvc = (envs.length > 0) ? `HAIBUN_ENV=${envs} ` : '';
15
+ // Ensure capture directory exists
16
+ const captureDir = resolve(projectDir, 'capture');
17
+ if (!existsSync(captureDir)) {
18
+ console.log('Creating capture directory');
19
+ mkdirSync(captureDir, { recursive: true });
20
+ }
21
+ // Add capture to directories to mount
22
+ const dirsToMount = [...includeDirs, 'capture'];
23
+ // Create docker compose config file with volumes
24
+ const volumeConfig = dirsToMount.map(dir => {
25
+ const sourcePath = resolve(projectDir, dir);
26
+ return ` - ${sourcePath}:/app/${dir}`;
27
+ }).join('\n');
28
+ const buildContextDir = resolve(tmpdir(), `build-context-${Date.now()}`);
29
+ mkdirSync(buildContextDir, { recursive: true });
30
+ // Copy project's package files to build context
31
+ execSync(`cp ${projectDir}/package*.json ${buildContextDir}/`);
32
+ // Copy container files to build context
33
+ execSync(`cp ${utilDir}/speak-to-wav.sh ${utilDir}/kokoro-speak.cjs ${utilDir}/entrypoint.sh ${buildContextDir}/`);
34
+ const composeFile = `
35
+ services:
36
+ haibun-recorder:
37
+ build:
38
+ context: ${buildContextDir}
39
+ dockerfile: ${utilDir}/Dockerfile
40
+ volumes:
41
+ - ${projectDir}/capture:/app/capture
42
+ - ${projectDir}:/app/output
43
+ ${volumeConfig}
44
+ environment:
45
+ - DISPLAY=:99
46
+ - HAIBUN_O_HAIBUN_TTS_CMD=/app/speak-to-wav.sh @WHAT@
47
+ - HAIBUN_O_HAIBUN_TTS_PLAY=aplay @WHAT@
48
+ - ${HOST_PROJECT_DIR}=${projectDir}
49
+ - COMMAND_TO_RECORD=${HOST_PROJECT_DIR}="${projectDir}" HAIBUN_LOG_LEVEL=log ${haibunEnvc} npm run ${testToRun} ${filter}
50
+ `;
51
+ writeFileSync(tmpFile, composeFile);
52
+ console.log(`Building then starting walkthrough container using ${utilDir}`);
53
+ console.log(`Mounting directories:\n${volumeConfig}`);
54
+ try {
55
+ execSync(`docker compose -f docker-compose.yml -f ${tmpFile} up --build ${recreate ? '--force-recreate' : ''}`, {
56
+ cwd: utilDir,
57
+ stdio: 'inherit',
58
+ env: {
59
+ ...process.env,
60
+ CURRENT_DIR: projectDir,
61
+ }
62
+ });
63
+ }
64
+ finally {
65
+ unlinkSync(tmpFile);
66
+ execSync(`rm -rf ${buildContextDir}`);
67
+ }
68
+ }
69
+ catch (error) {
70
+ console.error('Error:', error.stderr?.toString() || error.message);
71
+ process.exit(1);
72
+ }
73
+ };
74
+ let recreate = false;
75
+ const args = process.argv.slice(2).reduce((acc, arg) => {
76
+ if (arg === '--recreate') {
77
+ recreate = true;
78
+ return acc;
79
+ }
80
+ else if (arg === '--help') {
81
+ printHelp();
82
+ }
83
+ return [...acc, arg];
84
+ }, []);
85
+ const [testToRun, filter, ...includeDirs] = args;
86
+ if (!testToRun || includeDirs.length === 0) {
87
+ printHelp();
88
+ }
89
+ runContainer(testToRun, filter, includeDirs, recreate);
90
+ function printHelp() {
91
+ console.error('Usage: ${process.argv[1] [--rebuild] script filter features files ...');
92
+ process.exit(1);
93
+ }
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/walkthrough-container/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,20 @@
1
1
  {
2
2
  "name": "@haibun/utils",
3
3
  "type": "module",
4
- "version": "1.49.0",
4
+ "version": "1.50.3",
5
5
  "description": "",
6
6
  "main": "index.js",
7
- "files": ["ref.package.json", "build/**", "scaffold/**"],
7
+ "files": [
8
+ "ref.package.json",
9
+ "build/**",
10
+ "scaffold/**",
11
+ "walkthrough-container/**"
12
+ ],
8
13
  "bin": {
9
14
  "scaffold": "build/scaffold/index.js",
10
15
  "version": "build/version.js",
11
16
  "link": "build/npm-link-haibuns.js",
12
- "generate-video": "bin/generate-video.sh"
17
+ "run-walkthrough-container": "build/walkthrough-container/index.js"
13
18
  },
14
19
  "scripts": {
15
20
  "test": "vitest run",
@@ -22,5 +27,5 @@
22
27
  "author": "",
23
28
  "license": "ISC",
24
29
  "gitHead": "7cf9680bd922fb622fb59f1e6bf5b65284cb8fd5",
25
- "dependencies": { "@haibun/cli": "1.49.0", "@haibun/core": "1.49.0" }
30
+ "dependencies": { "@haibun/cli": "1.50.3", "@haibun/core": "1.50.3" }
26
31
  }
@@ -17,7 +17,7 @@ class WTWStepper extends AStepper {
17
17
  return OK;
18
18
  }
19
19
  const { message } = value.error;
20
- return actionNotOK(message, { topics: { WTW: { summary: message, details: value } } });
20
+ return actionNotOK(message } });
21
21
  }
22
22
  },
23
23
  }
@@ -0,0 +1,46 @@
1
+ FROM mcr.microsoft.com/playwright:v1.52.0-noble
2
+
3
+ # Set non-interactive mode to avoid prompts
4
+ ENV DEBIAN_FRONTEND=noninteractive
5
+
6
+ RUN apt-get update && apt-get install -y \
7
+ alsa-utils \
8
+ psmisc \
9
+ procps \
10
+ wget \
11
+ xdg-utils \
12
+ xvfb \
13
+ ffmpeg \
14
+ curl \
15
+ bash \
16
+ software-properties-common \
17
+ dbus-x11 \
18
+ dbus-user-session \
19
+ x11vnc \
20
+ x11-utils \
21
+ vlc \
22
+ pipewire \
23
+ pipewire-pulse \
24
+ wireplumber \
25
+ pipewire-audio-client-libraries \
26
+ pulseaudio-utils \
27
+ libportaudio2 \
28
+ && rm -rf /var/lib/apt/lists/*
29
+
30
+ RUN sed -i 's/geteuid/getppid/' /usr/bin/vlc
31
+
32
+ WORKDIR /app
33
+
34
+ # Copy all needed files at once
35
+ COPY package*.json kokoro-speak.cjs speak-to-wav.sh ./
36
+
37
+ # Single npm install for everything
38
+ RUN npm i && \
39
+ npm install kokoro-js
40
+
41
+ RUN mkdir -p /run/user/1000 && chmod 700 /run/user/1000
42
+
43
+ COPY entrypoint.sh ./
44
+ RUN chmod +x speak-to-wav.sh entrypoint.sh
45
+
46
+ ENTRYPOINT ["./entrypoint.sh"]
@@ -0,0 +1,8 @@
1
+ services:
2
+ haibun-recorder:
3
+ build:
4
+ context: .
5
+ dockerfile: Dockerfile
6
+ working_dir: /app
7
+ ports:
8
+ - "5900:5900"
@@ -0,0 +1,85 @@
1
+ #!/bin/bash
2
+
3
+ LOGFILE=./output/container-setup.log
4
+
5
+ rm output/walkthrough.webm 2> /dev/null
6
+
7
+ echo "entrypoint is setting up the environment (logfile is $LOGFILE)"
8
+ {
9
+ mkdir -p /run/dbus
10
+ dbus-daemon --system --fork
11
+
12
+ export XDG_RUNTIME_DIR=/tmp
13
+
14
+ # Start Xvfb in the background
15
+ echo "Setup Xvfb..."
16
+ export RES=1280x800
17
+ Xvfb $DISPLAY -screen 0 ${RES}x24 -ac +extension GLX +render -noreset &
18
+
19
+ # Start x11vnc
20
+ echo "Setup x11vnc..."
21
+ x11vnc -display $DISPLAY -forever -noxdamage -shared -nopw -quiet &
22
+
23
+ # Start pipewire server
24
+ echo "Starting pipewire..."
25
+ pipewire &
26
+ wireplumber &
27
+ pipewire-pulse &
28
+
29
+ echo "Waiting for audio services to be ready..."
30
+ max_attempts=10
31
+ attempt=1
32
+ while ! pactl info >/dev/null 2>&1; do
33
+ echo "Waiting for audio services... attempt $attempt of $max_attempts"
34
+ if [ $attempt -ge $max_attempts ]; then
35
+ echo "Audio services failed to start after $max_attempts attempts"
36
+ cat "$LOGFILE"
37
+ exit 1
38
+ fi
39
+ sleep 1
40
+ attempt=$((attempt + 1))
41
+ done
42
+ pactl info
43
+
44
+ # Load the virtual sink and set it as default
45
+ echo "Setting up virtual sink..."
46
+ pactl load-module module-virtual-sink sink_name=v1
47
+ pactl set-default-sink v1
48
+ pactl set-default-source v1.monitor
49
+ sleep 1
50
+
51
+ # Start recording
52
+ ffmpeg \
53
+ -f x11grab \
54
+ -r 30 \
55
+ -thread_queue_size 512 \
56
+ -s "$RES" \
57
+ -i "$DISPLAY" \
58
+ -f pulse \
59
+ -thread_queue_size 512 \
60
+ -i default \
61
+ -c:v libvpx-vp9 \
62
+ -deadline realtime \
63
+ -speed 6 \
64
+ -c:a libopus \
65
+ -flush_packets 1 \
66
+ "output/walkthrough.webm" &
67
+
68
+ FFMPEG_PID=$!
69
+ } > "$LOGFILE" 2>&1
70
+
71
+ # Check if ffmpeg started successfully
72
+ sleep 1
73
+ if ! ps -p "$FFMPEG_PID" > /dev/null; then
74
+ echo "FFmpeg failed to start"
75
+ cat "$LOGFILE"
76
+ exit 1
77
+ fi
78
+
79
+ echo "About to run $COMMAND_TO_RECORD"
80
+ eval "$COMMAND_TO_RECORD"
81
+ echo "finalizing file://${HOST_PROJECT_DIR}/walkthrough.webm"
82
+ sleep 5
83
+
84
+ kill -SIGHUP "$FFMPEG_PID"
85
+
@@ -0,0 +1,17 @@
1
+ const { KokoroTTS } = require("kokoro-js");
2
+
3
+ async function writeTextToWav(fn, tospeak) {
4
+ const model_id = "onnx-community/Kokoro-82M-v1.0-ONNX";
5
+ const tts = await KokoroTTS.from_pretrained(model_id, {
6
+ dtype: "q8", // Options: "fp32", "fp16", "q8", "q4", "q4f16"
7
+ device: "cpu", // Options: "wasm", "webgpu" (web) or "cpu" (node). If using "webgpu", we recommend using dtype="fp32".
8
+ });
9
+
10
+ const audio = await tts.generate(tospeak, {
11
+ // Use `tts.list_voices()` to list all available voices
12
+ voice: "af_heart",
13
+ });
14
+ audio.save(fn);
15
+ }
16
+ const [fn, tospeak] = process.argv.slice(2);
17
+ writeTextToWav(fn, tospeak);
Binary file
@@ -0,0 +1,953 @@
1
+ {
2
+ "name": "walkthrough-container",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "dependencies": {
8
+ "kokoro-js": "^1.2.1"
9
+ }
10
+ },
11
+ "node_modules/@emnapi/runtime": {
12
+ "version": "1.4.3",
13
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",
14
+ "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
15
+ "optional": true,
16
+ "dependencies": {
17
+ "tslib": "^2.4.0"
18
+ }
19
+ },
20
+ "node_modules/@huggingface/jinja": {
21
+ "version": "0.4.1",
22
+ "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.4.1.tgz",
23
+ "integrity": "sha512-3WXbMFaPkk03LRCM0z0sylmn8ddDm4ubjU7X+Hg4M2GOuMklwoGAFXp9V2keq7vltoB/c7McE5aHUVVddAewsw==",
24
+ "engines": {
25
+ "node": ">=18"
26
+ }
27
+ },
28
+ "node_modules/@huggingface/transformers": {
29
+ "version": "3.5.1",
30
+ "resolved": "https://registry.npmjs.org/@huggingface/transformers/-/transformers-3.5.1.tgz",
31
+ "integrity": "sha512-qWsPoJMBPYcrGuzRMVL//3dwcLXED9r+j+Hzw+hZpBfrMPdyq57ehNs7lew0D34Paj0DO0E0kZQjOZcIVN17hQ==",
32
+ "dependencies": {
33
+ "@huggingface/jinja": "^0.4.1",
34
+ "onnxruntime-node": "1.21.0",
35
+ "onnxruntime-web": "1.22.0-dev.20250409-89f8206ba4",
36
+ "sharp": "^0.34.1"
37
+ }
38
+ },
39
+ "node_modules/@img/sharp-darwin-arm64": {
40
+ "version": "0.34.1",
41
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz",
42
+ "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==",
43
+ "cpu": [
44
+ "arm64"
45
+ ],
46
+ "optional": true,
47
+ "os": [
48
+ "darwin"
49
+ ],
50
+ "engines": {
51
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
52
+ },
53
+ "funding": {
54
+ "url": "https://opencollective.com/libvips"
55
+ },
56
+ "optionalDependencies": {
57
+ "@img/sharp-libvips-darwin-arm64": "1.1.0"
58
+ }
59
+ },
60
+ "node_modules/@img/sharp-darwin-x64": {
61
+ "version": "0.34.1",
62
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz",
63
+ "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==",
64
+ "cpu": [
65
+ "x64"
66
+ ],
67
+ "optional": true,
68
+ "os": [
69
+ "darwin"
70
+ ],
71
+ "engines": {
72
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
73
+ },
74
+ "funding": {
75
+ "url": "https://opencollective.com/libvips"
76
+ },
77
+ "optionalDependencies": {
78
+ "@img/sharp-libvips-darwin-x64": "1.1.0"
79
+ }
80
+ },
81
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
82
+ "version": "1.1.0",
83
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz",
84
+ "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==",
85
+ "cpu": [
86
+ "arm64"
87
+ ],
88
+ "optional": true,
89
+ "os": [
90
+ "darwin"
91
+ ],
92
+ "funding": {
93
+ "url": "https://opencollective.com/libvips"
94
+ }
95
+ },
96
+ "node_modules/@img/sharp-libvips-darwin-x64": {
97
+ "version": "1.1.0",
98
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz",
99
+ "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==",
100
+ "cpu": [
101
+ "x64"
102
+ ],
103
+ "optional": true,
104
+ "os": [
105
+ "darwin"
106
+ ],
107
+ "funding": {
108
+ "url": "https://opencollective.com/libvips"
109
+ }
110
+ },
111
+ "node_modules/@img/sharp-libvips-linux-arm": {
112
+ "version": "1.1.0",
113
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz",
114
+ "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==",
115
+ "cpu": [
116
+ "arm"
117
+ ],
118
+ "optional": true,
119
+ "os": [
120
+ "linux"
121
+ ],
122
+ "funding": {
123
+ "url": "https://opencollective.com/libvips"
124
+ }
125
+ },
126
+ "node_modules/@img/sharp-libvips-linux-arm64": {
127
+ "version": "1.1.0",
128
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz",
129
+ "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==",
130
+ "cpu": [
131
+ "arm64"
132
+ ],
133
+ "optional": true,
134
+ "os": [
135
+ "linux"
136
+ ],
137
+ "funding": {
138
+ "url": "https://opencollective.com/libvips"
139
+ }
140
+ },
141
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
142
+ "version": "1.1.0",
143
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz",
144
+ "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==",
145
+ "cpu": [
146
+ "ppc64"
147
+ ],
148
+ "optional": true,
149
+ "os": [
150
+ "linux"
151
+ ],
152
+ "funding": {
153
+ "url": "https://opencollective.com/libvips"
154
+ }
155
+ },
156
+ "node_modules/@img/sharp-libvips-linux-s390x": {
157
+ "version": "1.1.0",
158
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz",
159
+ "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==",
160
+ "cpu": [
161
+ "s390x"
162
+ ],
163
+ "optional": true,
164
+ "os": [
165
+ "linux"
166
+ ],
167
+ "funding": {
168
+ "url": "https://opencollective.com/libvips"
169
+ }
170
+ },
171
+ "node_modules/@img/sharp-libvips-linux-x64": {
172
+ "version": "1.1.0",
173
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz",
174
+ "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==",
175
+ "cpu": [
176
+ "x64"
177
+ ],
178
+ "optional": true,
179
+ "os": [
180
+ "linux"
181
+ ],
182
+ "funding": {
183
+ "url": "https://opencollective.com/libvips"
184
+ }
185
+ },
186
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
187
+ "version": "1.1.0",
188
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz",
189
+ "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==",
190
+ "cpu": [
191
+ "arm64"
192
+ ],
193
+ "optional": true,
194
+ "os": [
195
+ "linux"
196
+ ],
197
+ "funding": {
198
+ "url": "https://opencollective.com/libvips"
199
+ }
200
+ },
201
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
202
+ "version": "1.1.0",
203
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz",
204
+ "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==",
205
+ "cpu": [
206
+ "x64"
207
+ ],
208
+ "optional": true,
209
+ "os": [
210
+ "linux"
211
+ ],
212
+ "funding": {
213
+ "url": "https://opencollective.com/libvips"
214
+ }
215
+ },
216
+ "node_modules/@img/sharp-linux-arm": {
217
+ "version": "0.34.1",
218
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz",
219
+ "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==",
220
+ "cpu": [
221
+ "arm"
222
+ ],
223
+ "optional": true,
224
+ "os": [
225
+ "linux"
226
+ ],
227
+ "engines": {
228
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
229
+ },
230
+ "funding": {
231
+ "url": "https://opencollective.com/libvips"
232
+ },
233
+ "optionalDependencies": {
234
+ "@img/sharp-libvips-linux-arm": "1.1.0"
235
+ }
236
+ },
237
+ "node_modules/@img/sharp-linux-arm64": {
238
+ "version": "0.34.1",
239
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz",
240
+ "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==",
241
+ "cpu": [
242
+ "arm64"
243
+ ],
244
+ "optional": true,
245
+ "os": [
246
+ "linux"
247
+ ],
248
+ "engines": {
249
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
250
+ },
251
+ "funding": {
252
+ "url": "https://opencollective.com/libvips"
253
+ },
254
+ "optionalDependencies": {
255
+ "@img/sharp-libvips-linux-arm64": "1.1.0"
256
+ }
257
+ },
258
+ "node_modules/@img/sharp-linux-s390x": {
259
+ "version": "0.34.1",
260
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz",
261
+ "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==",
262
+ "cpu": [
263
+ "s390x"
264
+ ],
265
+ "optional": true,
266
+ "os": [
267
+ "linux"
268
+ ],
269
+ "engines": {
270
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
271
+ },
272
+ "funding": {
273
+ "url": "https://opencollective.com/libvips"
274
+ },
275
+ "optionalDependencies": {
276
+ "@img/sharp-libvips-linux-s390x": "1.1.0"
277
+ }
278
+ },
279
+ "node_modules/@img/sharp-linux-x64": {
280
+ "version": "0.34.1",
281
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz",
282
+ "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==",
283
+ "cpu": [
284
+ "x64"
285
+ ],
286
+ "optional": true,
287
+ "os": [
288
+ "linux"
289
+ ],
290
+ "engines": {
291
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
292
+ },
293
+ "funding": {
294
+ "url": "https://opencollective.com/libvips"
295
+ },
296
+ "optionalDependencies": {
297
+ "@img/sharp-libvips-linux-x64": "1.1.0"
298
+ }
299
+ },
300
+ "node_modules/@img/sharp-linuxmusl-arm64": {
301
+ "version": "0.34.1",
302
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz",
303
+ "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==",
304
+ "cpu": [
305
+ "arm64"
306
+ ],
307
+ "optional": true,
308
+ "os": [
309
+ "linux"
310
+ ],
311
+ "engines": {
312
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
313
+ },
314
+ "funding": {
315
+ "url": "https://opencollective.com/libvips"
316
+ },
317
+ "optionalDependencies": {
318
+ "@img/sharp-libvips-linuxmusl-arm64": "1.1.0"
319
+ }
320
+ },
321
+ "node_modules/@img/sharp-linuxmusl-x64": {
322
+ "version": "0.34.1",
323
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz",
324
+ "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==",
325
+ "cpu": [
326
+ "x64"
327
+ ],
328
+ "optional": true,
329
+ "os": [
330
+ "linux"
331
+ ],
332
+ "engines": {
333
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
334
+ },
335
+ "funding": {
336
+ "url": "https://opencollective.com/libvips"
337
+ },
338
+ "optionalDependencies": {
339
+ "@img/sharp-libvips-linuxmusl-x64": "1.1.0"
340
+ }
341
+ },
342
+ "node_modules/@img/sharp-wasm32": {
343
+ "version": "0.34.1",
344
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz",
345
+ "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==",
346
+ "cpu": [
347
+ "wasm32"
348
+ ],
349
+ "optional": true,
350
+ "dependencies": {
351
+ "@emnapi/runtime": "^1.4.0"
352
+ },
353
+ "engines": {
354
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
355
+ },
356
+ "funding": {
357
+ "url": "https://opencollective.com/libvips"
358
+ }
359
+ },
360
+ "node_modules/@img/sharp-win32-ia32": {
361
+ "version": "0.34.1",
362
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz",
363
+ "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==",
364
+ "cpu": [
365
+ "ia32"
366
+ ],
367
+ "optional": true,
368
+ "os": [
369
+ "win32"
370
+ ],
371
+ "engines": {
372
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
373
+ },
374
+ "funding": {
375
+ "url": "https://opencollective.com/libvips"
376
+ }
377
+ },
378
+ "node_modules/@img/sharp-win32-x64": {
379
+ "version": "0.34.1",
380
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz",
381
+ "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==",
382
+ "cpu": [
383
+ "x64"
384
+ ],
385
+ "optional": true,
386
+ "os": [
387
+ "win32"
388
+ ],
389
+ "engines": {
390
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
391
+ },
392
+ "funding": {
393
+ "url": "https://opencollective.com/libvips"
394
+ }
395
+ },
396
+ "node_modules/@isaacs/fs-minipass": {
397
+ "version": "4.0.1",
398
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
399
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
400
+ "dependencies": {
401
+ "minipass": "^7.0.4"
402
+ },
403
+ "engines": {
404
+ "node": ">=18.0.0"
405
+ }
406
+ },
407
+ "node_modules/@protobufjs/aspromise": {
408
+ "version": "1.1.2",
409
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
410
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
411
+ },
412
+ "node_modules/@protobufjs/base64": {
413
+ "version": "1.1.2",
414
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
415
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
416
+ },
417
+ "node_modules/@protobufjs/codegen": {
418
+ "version": "2.0.4",
419
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
420
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
421
+ },
422
+ "node_modules/@protobufjs/eventemitter": {
423
+ "version": "1.1.0",
424
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
425
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
426
+ },
427
+ "node_modules/@protobufjs/fetch": {
428
+ "version": "1.1.0",
429
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
430
+ "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
431
+ "dependencies": {
432
+ "@protobufjs/aspromise": "^1.1.1",
433
+ "@protobufjs/inquire": "^1.1.0"
434
+ }
435
+ },
436
+ "node_modules/@protobufjs/float": {
437
+ "version": "1.0.2",
438
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
439
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
440
+ },
441
+ "node_modules/@protobufjs/inquire": {
442
+ "version": "1.1.0",
443
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
444
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
445
+ },
446
+ "node_modules/@protobufjs/path": {
447
+ "version": "1.1.2",
448
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
449
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
450
+ },
451
+ "node_modules/@protobufjs/pool": {
452
+ "version": "1.1.0",
453
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
454
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
455
+ },
456
+ "node_modules/@protobufjs/utf8": {
457
+ "version": "1.1.0",
458
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
459
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
460
+ },
461
+ "node_modules/@types/node": {
462
+ "version": "22.15.17",
463
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz",
464
+ "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==",
465
+ "dependencies": {
466
+ "undici-types": "~6.21.0"
467
+ }
468
+ },
469
+ "node_modules/boolean": {
470
+ "version": "3.2.0",
471
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
472
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
473
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."
474
+ },
475
+ "node_modules/chownr": {
476
+ "version": "3.0.0",
477
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
478
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
479
+ "engines": {
480
+ "node": ">=18"
481
+ }
482
+ },
483
+ "node_modules/color": {
484
+ "version": "4.2.3",
485
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
486
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
487
+ "dependencies": {
488
+ "color-convert": "^2.0.1",
489
+ "color-string": "^1.9.0"
490
+ },
491
+ "engines": {
492
+ "node": ">=12.5.0"
493
+ }
494
+ },
495
+ "node_modules/color-convert": {
496
+ "version": "2.0.1",
497
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
498
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
499
+ "dependencies": {
500
+ "color-name": "~1.1.4"
501
+ },
502
+ "engines": {
503
+ "node": ">=7.0.0"
504
+ }
505
+ },
506
+ "node_modules/color-name": {
507
+ "version": "1.1.4",
508
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
509
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
510
+ },
511
+ "node_modules/color-string": {
512
+ "version": "1.9.1",
513
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
514
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
515
+ "dependencies": {
516
+ "color-name": "^1.0.0",
517
+ "simple-swizzle": "^0.2.2"
518
+ }
519
+ },
520
+ "node_modules/define-data-property": {
521
+ "version": "1.1.4",
522
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
523
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
524
+ "dependencies": {
525
+ "es-define-property": "^1.0.0",
526
+ "es-errors": "^1.3.0",
527
+ "gopd": "^1.0.1"
528
+ },
529
+ "engines": {
530
+ "node": ">= 0.4"
531
+ },
532
+ "funding": {
533
+ "url": "https://github.com/sponsors/ljharb"
534
+ }
535
+ },
536
+ "node_modules/define-properties": {
537
+ "version": "1.2.1",
538
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
539
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
540
+ "dependencies": {
541
+ "define-data-property": "^1.0.1",
542
+ "has-property-descriptors": "^1.0.0",
543
+ "object-keys": "^1.1.1"
544
+ },
545
+ "engines": {
546
+ "node": ">= 0.4"
547
+ },
548
+ "funding": {
549
+ "url": "https://github.com/sponsors/ljharb"
550
+ }
551
+ },
552
+ "node_modules/detect-libc": {
553
+ "version": "2.0.4",
554
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
555
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
556
+ "engines": {
557
+ "node": ">=8"
558
+ }
559
+ },
560
+ "node_modules/detect-node": {
561
+ "version": "2.1.0",
562
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
563
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
564
+ },
565
+ "node_modules/es-define-property": {
566
+ "version": "1.0.1",
567
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
568
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
569
+ "engines": {
570
+ "node": ">= 0.4"
571
+ }
572
+ },
573
+ "node_modules/es-errors": {
574
+ "version": "1.3.0",
575
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
576
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
577
+ "engines": {
578
+ "node": ">= 0.4"
579
+ }
580
+ },
581
+ "node_modules/es6-error": {
582
+ "version": "4.1.1",
583
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
584
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg=="
585
+ },
586
+ "node_modules/escape-string-regexp": {
587
+ "version": "4.0.0",
588
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
589
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
590
+ "engines": {
591
+ "node": ">=10"
592
+ },
593
+ "funding": {
594
+ "url": "https://github.com/sponsors/sindresorhus"
595
+ }
596
+ },
597
+ "node_modules/flatbuffers": {
598
+ "version": "25.2.10",
599
+ "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-25.2.10.tgz",
600
+ "integrity": "sha512-7JlN9ZvLDG1McO3kbX0k4v+SUAg48L1rIwEvN6ZQl/eCtgJz9UylTMzE9wrmYrcorgxm3CX/3T/w5VAub99UUw=="
601
+ },
602
+ "node_modules/global-agent": {
603
+ "version": "3.0.0",
604
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
605
+ "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
606
+ "dependencies": {
607
+ "boolean": "^3.0.1",
608
+ "es6-error": "^4.1.1",
609
+ "matcher": "^3.0.0",
610
+ "roarr": "^2.15.3",
611
+ "semver": "^7.3.2",
612
+ "serialize-error": "^7.0.1"
613
+ },
614
+ "engines": {
615
+ "node": ">=10.0"
616
+ }
617
+ },
618
+ "node_modules/globalthis": {
619
+ "version": "1.0.4",
620
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
621
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
622
+ "dependencies": {
623
+ "define-properties": "^1.2.1",
624
+ "gopd": "^1.0.1"
625
+ },
626
+ "engines": {
627
+ "node": ">= 0.4"
628
+ },
629
+ "funding": {
630
+ "url": "https://github.com/sponsors/ljharb"
631
+ }
632
+ },
633
+ "node_modules/gopd": {
634
+ "version": "1.2.0",
635
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
636
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
637
+ "engines": {
638
+ "node": ">= 0.4"
639
+ },
640
+ "funding": {
641
+ "url": "https://github.com/sponsors/ljharb"
642
+ }
643
+ },
644
+ "node_modules/guid-typescript": {
645
+ "version": "1.0.9",
646
+ "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz",
647
+ "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ=="
648
+ },
649
+ "node_modules/has-property-descriptors": {
650
+ "version": "1.0.2",
651
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
652
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
653
+ "dependencies": {
654
+ "es-define-property": "^1.0.0"
655
+ },
656
+ "funding": {
657
+ "url": "https://github.com/sponsors/ljharb"
658
+ }
659
+ },
660
+ "node_modules/is-arrayish": {
661
+ "version": "0.3.2",
662
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
663
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
664
+ },
665
+ "node_modules/json-stringify-safe": {
666
+ "version": "5.0.1",
667
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
668
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
669
+ },
670
+ "node_modules/kokoro-js": {
671
+ "version": "1.2.1",
672
+ "resolved": "https://registry.npmjs.org/kokoro-js/-/kokoro-js-1.2.1.tgz",
673
+ "integrity": "sha512-oq0HZJWis3t8lERkMJh84WLU86dpYD0EuBPtqYnLlQzyFP1OkyBRDcweAqCfhNOpltyN9j/azp1H6uuC47gShw==",
674
+ "dependencies": {
675
+ "@huggingface/transformers": "^3.5.1",
676
+ "phonemizer": "^1.2.1"
677
+ }
678
+ },
679
+ "node_modules/long": {
680
+ "version": "5.3.2",
681
+ "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
682
+ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="
683
+ },
684
+ "node_modules/matcher": {
685
+ "version": "3.0.0",
686
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
687
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
688
+ "dependencies": {
689
+ "escape-string-regexp": "^4.0.0"
690
+ },
691
+ "engines": {
692
+ "node": ">=10"
693
+ }
694
+ },
695
+ "node_modules/minipass": {
696
+ "version": "7.1.2",
697
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
698
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
699
+ "engines": {
700
+ "node": ">=16 || 14 >=14.17"
701
+ }
702
+ },
703
+ "node_modules/minizlib": {
704
+ "version": "3.0.2",
705
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
706
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
707
+ "dependencies": {
708
+ "minipass": "^7.1.2"
709
+ },
710
+ "engines": {
711
+ "node": ">= 18"
712
+ }
713
+ },
714
+ "node_modules/mkdirp": {
715
+ "version": "3.0.1",
716
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
717
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
718
+ "bin": {
719
+ "mkdirp": "dist/cjs/src/bin.js"
720
+ },
721
+ "engines": {
722
+ "node": ">=10"
723
+ },
724
+ "funding": {
725
+ "url": "https://github.com/sponsors/isaacs"
726
+ }
727
+ },
728
+ "node_modules/object-keys": {
729
+ "version": "1.1.1",
730
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
731
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
732
+ "engines": {
733
+ "node": ">= 0.4"
734
+ }
735
+ },
736
+ "node_modules/onnxruntime-common": {
737
+ "version": "1.21.0",
738
+ "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.21.0.tgz",
739
+ "integrity": "sha512-Q632iLLrtCAVOTO65dh2+mNbQir/QNTVBG3h/QdZBpns7mZ0RYbLRBgGABPbpU9351AgYy7SJf1WaeVwMrBFPQ=="
740
+ },
741
+ "node_modules/onnxruntime-node": {
742
+ "version": "1.21.0",
743
+ "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.21.0.tgz",
744
+ "integrity": "sha512-NeaCX6WW2L8cRCSqy3bInlo5ojjQqu2fD3D+9W5qb5irwxhEyWKXeH2vZ8W9r6VxaMPUan+4/7NDwZMtouZxEw==",
745
+ "hasInstallScript": true,
746
+ "os": [
747
+ "win32",
748
+ "darwin",
749
+ "linux"
750
+ ],
751
+ "dependencies": {
752
+ "global-agent": "^3.0.0",
753
+ "onnxruntime-common": "1.21.0",
754
+ "tar": "^7.0.1"
755
+ }
756
+ },
757
+ "node_modules/onnxruntime-web": {
758
+ "version": "1.22.0-dev.20250409-89f8206ba4",
759
+ "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.22.0-dev.20250409-89f8206ba4.tgz",
760
+ "integrity": "sha512-0uS76OPgH0hWCPrFKlL8kYVV7ckM7t/36HfbgoFw6Nd0CZVVbQC4PkrR8mBX8LtNUFZO25IQBqV2Hx2ho3FlbQ==",
761
+ "dependencies": {
762
+ "flatbuffers": "^25.1.24",
763
+ "guid-typescript": "^1.0.9",
764
+ "long": "^5.2.3",
765
+ "onnxruntime-common": "1.22.0-dev.20250409-89f8206ba4",
766
+ "platform": "^1.3.6",
767
+ "protobufjs": "^7.2.4"
768
+ }
769
+ },
770
+ "node_modules/onnxruntime-web/node_modules/onnxruntime-common": {
771
+ "version": "1.22.0-dev.20250409-89f8206ba4",
772
+ "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.22.0-dev.20250409-89f8206ba4.tgz",
773
+ "integrity": "sha512-vDJMkfCfb0b1A836rgHj+ORuZf4B4+cc2bASQtpeoJLueuFc5DuYwjIZUBrSvx/fO5IrLjLz+oTrB3pcGlhovQ=="
774
+ },
775
+ "node_modules/phonemizer": {
776
+ "version": "1.2.1",
777
+ "resolved": "https://registry.npmjs.org/phonemizer/-/phonemizer-1.2.1.tgz",
778
+ "integrity": "sha512-v0KJ4mi2T4Q7eJQ0W15Xd4G9k4kICSXE8bpDeJ8jisL4RyJhNWsweKTOi88QXFc4r4LZlz5jVL5lCHhkpdT71A=="
779
+ },
780
+ "node_modules/platform": {
781
+ "version": "1.3.6",
782
+ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
783
+ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
784
+ },
785
+ "node_modules/protobufjs": {
786
+ "version": "7.5.1",
787
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.1.tgz",
788
+ "integrity": "sha512-3qx3IRjR9WPQKagdwrKjO3Gu8RgQR2qqw+1KnigWhoVjFqegIj1K3bP11sGqhxrO46/XL7lekuG4jmjL+4cLsw==",
789
+ "hasInstallScript": true,
790
+ "dependencies": {
791
+ "@protobufjs/aspromise": "^1.1.2",
792
+ "@protobufjs/base64": "^1.1.2",
793
+ "@protobufjs/codegen": "^2.0.4",
794
+ "@protobufjs/eventemitter": "^1.1.0",
795
+ "@protobufjs/fetch": "^1.1.0",
796
+ "@protobufjs/float": "^1.0.2",
797
+ "@protobufjs/inquire": "^1.1.0",
798
+ "@protobufjs/path": "^1.1.2",
799
+ "@protobufjs/pool": "^1.1.0",
800
+ "@protobufjs/utf8": "^1.1.0",
801
+ "@types/node": ">=13.7.0",
802
+ "long": "^5.0.0"
803
+ },
804
+ "engines": {
805
+ "node": ">=12.0.0"
806
+ }
807
+ },
808
+ "node_modules/roarr": {
809
+ "version": "2.15.4",
810
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
811
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
812
+ "dependencies": {
813
+ "boolean": "^3.0.1",
814
+ "detect-node": "^2.0.4",
815
+ "globalthis": "^1.0.1",
816
+ "json-stringify-safe": "^5.0.1",
817
+ "semver-compare": "^1.0.0",
818
+ "sprintf-js": "^1.1.2"
819
+ },
820
+ "engines": {
821
+ "node": ">=8.0"
822
+ }
823
+ },
824
+ "node_modules/semver": {
825
+ "version": "7.7.1",
826
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
827
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
828
+ "bin": {
829
+ "semver": "bin/semver.js"
830
+ },
831
+ "engines": {
832
+ "node": ">=10"
833
+ }
834
+ },
835
+ "node_modules/semver-compare": {
836
+ "version": "1.0.0",
837
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
838
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="
839
+ },
840
+ "node_modules/serialize-error": {
841
+ "version": "7.0.1",
842
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
843
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
844
+ "dependencies": {
845
+ "type-fest": "^0.13.1"
846
+ },
847
+ "engines": {
848
+ "node": ">=10"
849
+ },
850
+ "funding": {
851
+ "url": "https://github.com/sponsors/sindresorhus"
852
+ }
853
+ },
854
+ "node_modules/sharp": {
855
+ "version": "0.34.1",
856
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz",
857
+ "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==",
858
+ "hasInstallScript": true,
859
+ "dependencies": {
860
+ "color": "^4.2.3",
861
+ "detect-libc": "^2.0.3",
862
+ "semver": "^7.7.1"
863
+ },
864
+ "engines": {
865
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
866
+ },
867
+ "funding": {
868
+ "url": "https://opencollective.com/libvips"
869
+ },
870
+ "optionalDependencies": {
871
+ "@img/sharp-darwin-arm64": "0.34.1",
872
+ "@img/sharp-darwin-x64": "0.34.1",
873
+ "@img/sharp-libvips-darwin-arm64": "1.1.0",
874
+ "@img/sharp-libvips-darwin-x64": "1.1.0",
875
+ "@img/sharp-libvips-linux-arm": "1.1.0",
876
+ "@img/sharp-libvips-linux-arm64": "1.1.0",
877
+ "@img/sharp-libvips-linux-ppc64": "1.1.0",
878
+ "@img/sharp-libvips-linux-s390x": "1.1.0",
879
+ "@img/sharp-libvips-linux-x64": "1.1.0",
880
+ "@img/sharp-libvips-linuxmusl-arm64": "1.1.0",
881
+ "@img/sharp-libvips-linuxmusl-x64": "1.1.0",
882
+ "@img/sharp-linux-arm": "0.34.1",
883
+ "@img/sharp-linux-arm64": "0.34.1",
884
+ "@img/sharp-linux-s390x": "0.34.1",
885
+ "@img/sharp-linux-x64": "0.34.1",
886
+ "@img/sharp-linuxmusl-arm64": "0.34.1",
887
+ "@img/sharp-linuxmusl-x64": "0.34.1",
888
+ "@img/sharp-wasm32": "0.34.1",
889
+ "@img/sharp-win32-ia32": "0.34.1",
890
+ "@img/sharp-win32-x64": "0.34.1"
891
+ }
892
+ },
893
+ "node_modules/simple-swizzle": {
894
+ "version": "0.2.2",
895
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
896
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
897
+ "dependencies": {
898
+ "is-arrayish": "^0.3.1"
899
+ }
900
+ },
901
+ "node_modules/sprintf-js": {
902
+ "version": "1.1.3",
903
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
904
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
905
+ },
906
+ "node_modules/tar": {
907
+ "version": "7.4.3",
908
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
909
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
910
+ "dependencies": {
911
+ "@isaacs/fs-minipass": "^4.0.0",
912
+ "chownr": "^3.0.0",
913
+ "minipass": "^7.1.2",
914
+ "minizlib": "^3.0.1",
915
+ "mkdirp": "^3.0.1",
916
+ "yallist": "^5.0.0"
917
+ },
918
+ "engines": {
919
+ "node": ">=18"
920
+ }
921
+ },
922
+ "node_modules/tslib": {
923
+ "version": "2.8.1",
924
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
925
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
926
+ "optional": true
927
+ },
928
+ "node_modules/type-fest": {
929
+ "version": "0.13.1",
930
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
931
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
932
+ "engines": {
933
+ "node": ">=10"
934
+ },
935
+ "funding": {
936
+ "url": "https://github.com/sponsors/sindresorhus"
937
+ }
938
+ },
939
+ "node_modules/undici-types": {
940
+ "version": "6.21.0",
941
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
942
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
943
+ },
944
+ "node_modules/yallist": {
945
+ "version": "5.0.0",
946
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
947
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
948
+ "engines": {
949
+ "node": ">=18"
950
+ }
951
+ }
952
+ }
953
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "dependencies": {
3
+ "kokoro-js": "^1.2.1"
4
+ }
5
+ }
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/sh
2
+
3
+ set -e
4
+ node ./kokoro-speak.cjs output.wav "$*"; echo `pwd`/output.wav
@@ -1,39 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -e
4
-
5
- # Function to handle errors
6
- handle_error() {
7
- echo "ERROR: Video generation failed!"
8
- echo "Reason: $1"
9
- exit 1
10
- }
11
-
12
- # Set up directories needed for Docker volume mounting
13
- echo "Setting up environment..."
14
- mkdir -p assets 2>/dev/null || true
15
-
16
- # Find the installed package location
17
- PACKAGE_DIR=$(npm root)/@haibun/utils
18
-
19
- # Generate editly configuration from monitor.json
20
- echo "Generating editly configuration..."
21
- # Use the correct path to the built JS file
22
- node "$PACKAGE_DIR/build/generate-video.js" $* || handle_error "Failed to generate editly configuration"
23
-
24
- # Run editly using Docker directly instead of alias
25
- echo "Generating video with editly..."
26
-
27
- # Run Docker command with proper error handling
28
- if ! docker run --rm -u $(id -u):$(id -g) -v $PWD:/data vimagick/editly editly-config.json; then
29
- handle_error "Docker editly command failed. Check docker installation and permissions."
30
- fi
31
-
32
- # Verify output file exists
33
- OUTPUT_FILE=${2:-haibun-test-video.mp4}
34
- if [ -f "$OUTPUT_FILE" ]; then
35
- echo "Video generation complete!"
36
- echo "Output file: $OUTPUT_FILE"
37
- else
38
- handle_error "Output video file was not created"
39
- fi