@spark-apps/quickpeek 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +200 -101
- package/dist/assets/qp.wm +0 -0
- package/dist/highlight.css +15 -0
- package/dist/qp.js +6143 -0
- package/package.json +64 -46
- package/dist/api-client.d.ts +0 -61
- package/dist/api-client.d.ts.map +0 -1
- package/dist/api-client.js +0 -180
- package/dist/api-client.js.map +0 -1
- package/dist/config.d.ts +0 -69
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -43
- package/dist/config.js.map +0 -1
- package/dist/crawl.d.ts +0 -18
- package/dist/crawl.d.ts.map +0 -1
- package/dist/crawl.js +0 -175
- package/dist/crawl.js.map +0 -1
- package/dist/cursor.d.ts +0 -6
- package/dist/cursor.d.ts.map +0 -1
- package/dist/cursor.js +0 -6
- package/dist/cursor.js.map +0 -1
- package/dist/ffmpeg.d.ts +0 -50
- package/dist/ffmpeg.d.ts.map +0 -1
- package/dist/ffmpeg.js +0 -224
- package/dist/ffmpeg.js.map +0 -1
- package/dist/index.d.ts +0 -15
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
- package/dist/prompts.d.ts +0 -13
- package/dist/prompts.d.ts.map +0 -1
- package/dist/prompts.js +0 -91
- package/dist/prompts.js.map +0 -1
- package/dist/styles.d.ts +0 -16
- package/dist/styles.d.ts.map +0 -1
- package/dist/styles.js +0 -66
- package/dist/styles.js.map +0 -1
- package/dist/tts.d.ts +0 -64
- package/dist/tts.d.ts.map +0 -1
- package/dist/tts.js +0 -236
- package/dist/tts.js.map +0 -1
- package/dist/utils.d.ts +0 -25
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -106
- package/dist/utils.js.map +0 -1
- package/dist/voices.d.ts +0 -2
- package/dist/voices.d.ts.map +0 -1
- package/dist/voices.js +0 -73
- package/dist/voices.js.map +0 -1
- package/dist/watermark.d.ts +0 -27
- package/dist/watermark.d.ts.map +0 -1
- package/dist/watermark.js +0 -57
- package/dist/watermark.js.map +0 -1
package/dist/voices.d.ts
DELETED
package/dist/voices.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoElD,CAAC"}
|
package/dist/voices.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
// Default Edge TTS voice per language
|
|
2
|
-
// Format: ISO 639-1 language code -> Edge TTS voice name
|
|
3
|
-
// Voice list: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/language-support?tabs=tts
|
|
4
|
-
export const LANGUAGE_VOICES = {
|
|
5
|
-
en: 'en-GB-SoniaNeural',
|
|
6
|
-
ar: 'ar-LB-LaylaNeural',
|
|
7
|
-
es: 'es-ES-ElviraNeural',
|
|
8
|
-
fr: 'fr-FR-DeniseNeural',
|
|
9
|
-
de: 'de-DE-KatjaNeural',
|
|
10
|
-
it: 'it-IT-ElsaNeural',
|
|
11
|
-
pt: 'pt-BR-FranciscaNeural',
|
|
12
|
-
ru: 'ru-RU-SvetlanaNeural',
|
|
13
|
-
zh: 'zh-CN-XiaoxiaoNeural',
|
|
14
|
-
ja: 'ja-JP-NanamiNeural',
|
|
15
|
-
ko: 'ko-KR-SunHiNeural',
|
|
16
|
-
hi: 'hi-IN-SwaraNeural',
|
|
17
|
-
tr: 'tr-TR-EmelNeural',
|
|
18
|
-
nl: 'nl-NL-ColetteNeural',
|
|
19
|
-
pl: 'pl-PL-AgnieszkaNeural',
|
|
20
|
-
sv: 'sv-SE-SofieNeural',
|
|
21
|
-
he: 'he-IL-HilaNeural',
|
|
22
|
-
th: 'th-TH-PremwadeeNeural',
|
|
23
|
-
vi: 'vi-VN-HoaiMyNeural',
|
|
24
|
-
id: 'id-ID-GadisNeural',
|
|
25
|
-
ms: 'ms-MY-YasminNeural',
|
|
26
|
-
fil: 'fil-PH-BlessicaNeural',
|
|
27
|
-
uk: 'uk-UA-PolinaNeural',
|
|
28
|
-
cs: 'cs-CZ-VlastaNeural',
|
|
29
|
-
el: 'el-GR-AthinaNeural',
|
|
30
|
-
ro: 'ro-RO-AlinaNeural',
|
|
31
|
-
hu: 'hu-HU-NoemiNeural',
|
|
32
|
-
da: 'da-DK-ChristelNeural',
|
|
33
|
-
fi: 'fi-FI-NooraNeural',
|
|
34
|
-
no: 'nb-NO-PernilleNeural',
|
|
35
|
-
sk: 'sk-SK-ViktoriaNeural',
|
|
36
|
-
bg: 'bg-BG-KalinaNeural',
|
|
37
|
-
hr: 'hr-HR-GabrijelaNeural',
|
|
38
|
-
sl: 'sl-SI-PetraNeural',
|
|
39
|
-
et: 'et-EE-AnuNeural',
|
|
40
|
-
lv: 'lv-LV-EveritaNeural',
|
|
41
|
-
lt: 'lt-LT-OnaNeural',
|
|
42
|
-
bn: 'bn-IN-TanishaaNeural',
|
|
43
|
-
ta: 'ta-IN-PallaviNeural',
|
|
44
|
-
te: 'te-IN-ShrutiNeural',
|
|
45
|
-
mr: 'mr-IN-AarohiNeural',
|
|
46
|
-
gu: 'gu-IN-DhwaniNeural',
|
|
47
|
-
kn: 'kn-IN-SapnaNeural',
|
|
48
|
-
ml: 'ml-IN-SobhanaNeural',
|
|
49
|
-
ur: 'ur-PK-UzmaNeural',
|
|
50
|
-
fa: 'fa-IR-DilaraNeural',
|
|
51
|
-
sw: 'sw-KE-ZuriNeural',
|
|
52
|
-
af: 'af-ZA-AdriNeural',
|
|
53
|
-
ca: 'ca-ES-JoanaNeural',
|
|
54
|
-
cy: 'cy-GB-NiaNeural',
|
|
55
|
-
ga: 'ga-IE-OrlaNeural',
|
|
56
|
-
mt: 'mt-MT-GraceNeural',
|
|
57
|
-
is: 'is-IS-GudrunNeural',
|
|
58
|
-
mk: 'mk-MK-MarijaNeural',
|
|
59
|
-
sr: 'sr-RS-SophieNeural',
|
|
60
|
-
bs: 'bs-BA-VesnaNeural',
|
|
61
|
-
sq: 'sq-AL-AnilaNeural',
|
|
62
|
-
am: 'am-ET-MekdesNeural',
|
|
63
|
-
az: 'az-AZ-BabekNeural',
|
|
64
|
-
ka: 'ka-GE-EkaNeural',
|
|
65
|
-
kk: 'kk-KZ-AigulNeural',
|
|
66
|
-
mn: 'mn-MN-YesUINeural',
|
|
67
|
-
ne: 'ne-NP-HemkalaNeural',
|
|
68
|
-
ps: 'ps-AF-LatifaNeural',
|
|
69
|
-
si: 'si-LK-ThiliniNeural',
|
|
70
|
-
so: 'so-SO-UbaxNeural',
|
|
71
|
-
zu: 'zu-ZA-ThandoNeural',
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=voices.js.map
|
package/dist/voices.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"voices.js","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,yDAAyD;AACzD,2GAA2G;AAE3G,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,uBAAuB;IAC3B,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,uBAAuB;IAC3B,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,uBAAuB;IAC3B,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,oBAAoB;IACxB,GAAG,EAAE,uBAAuB;IAC5B,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,uBAAuB;IAC3B,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,oBAAoB;CACzB,CAAC"}
|
package/dist/watermark.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FFmpeg watermark filter generation for QuickPeek
|
|
3
|
-
* Applies watermarks to free tier videos longer than 20 seconds
|
|
4
|
-
*/
|
|
5
|
-
import type { UserTier } from './config.js';
|
|
6
|
-
export interface WatermarkOptions {
|
|
7
|
-
tier: UserTier;
|
|
8
|
-
videoDuration: number;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Build FFmpeg drawtext filters for watermarks
|
|
12
|
-
* Returns empty string if no watermark needed (pro tier or short video)
|
|
13
|
-
*/
|
|
14
|
-
export declare function buildWatermarkFilters(opts: WatermarkOptions): string;
|
|
15
|
-
/**
|
|
16
|
-
* Check if watermark should be applied based on tier and duration
|
|
17
|
-
*/
|
|
18
|
-
export declare function shouldApplyWatermark(tier: UserTier, videoDurationSeconds: number): boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Get watermark configuration for display purposes
|
|
21
|
-
*/
|
|
22
|
-
export declare function getWatermarkInfo(): {
|
|
23
|
-
threshold: number;
|
|
24
|
-
cornerText: string;
|
|
25
|
-
endText: string;
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=watermark.d.ts.map
|
package/dist/watermark.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"watermark.d.ts","sourceRoot":"","sources":["../src/watermark.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAWD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAmCpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAE1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAMA"}
|
package/dist/watermark.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FFmpeg watermark filter generation for QuickPeek
|
|
3
|
-
* Applies watermarks to free tier videos longer than 20 seconds
|
|
4
|
-
*/
|
|
5
|
-
// Watermark threshold: only apply to videos longer than 20 seconds
|
|
6
|
-
const WATERMARK_THRESHOLD_SECONDS = 20;
|
|
7
|
-
// End text appears in the last 3 seconds
|
|
8
|
-
const END_TEXT_DURATION = 3;
|
|
9
|
-
// Fade-in duration for end text
|
|
10
|
-
const END_TEXT_FADE_IN = 1;
|
|
11
|
-
/**
|
|
12
|
-
* Build FFmpeg drawtext filters for watermarks
|
|
13
|
-
* Returns empty string if no watermark needed (pro tier or short video)
|
|
14
|
-
*/
|
|
15
|
-
export function buildWatermarkFilters(opts) {
|
|
16
|
-
const { tier, videoDuration } = opts;
|
|
17
|
-
// No watermark for pro tier
|
|
18
|
-
if (tier === 'pro') {
|
|
19
|
-
return '';
|
|
20
|
-
}
|
|
21
|
-
// No watermark for videos 20 seconds or shorter
|
|
22
|
-
if (videoDuration <= WATERMARK_THRESHOLD_SECONDS) {
|
|
23
|
-
return '';
|
|
24
|
-
}
|
|
25
|
-
const filters = [];
|
|
26
|
-
// Corner "qp" watermark - always visible (bottom-right)
|
|
27
|
-
// White text at 30% opacity, small and subtle
|
|
28
|
-
filters.push(`drawtext=text='qp':fontsize=24:fontcolor=white@0.3:x=w-tw-20:y=h-th-20`);
|
|
29
|
-
// End text - "Video made with QuickPeek" in last 3 seconds
|
|
30
|
-
// Centered at bottom, with fade-in effect
|
|
31
|
-
const endTextStart = Math.max(0, videoDuration - END_TEXT_DURATION);
|
|
32
|
-
const fadeEndTime = endTextStart + END_TEXT_FADE_IN;
|
|
33
|
-
// Build alpha expression for fade-in:
|
|
34
|
-
// - Before endTextStart: 0 (invisible)
|
|
35
|
-
// - During fade-in: linear ramp from 0 to 0.6
|
|
36
|
-
// - After fade-in: 0.6 (full opacity)
|
|
37
|
-
const alphaExpr = `if(lt(t,${endTextStart}),0,if(lt(t,${fadeEndTime}),(t-${endTextStart})*0.6,0.6))`;
|
|
38
|
-
filters.push(`drawtext=text='Video made with QuickPeek':fontsize=32:fontcolor=white:x=(w-tw)/2:y=h-80:alpha='${alphaExpr}'`);
|
|
39
|
-
return filters.join(',');
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Check if watermark should be applied based on tier and duration
|
|
43
|
-
*/
|
|
44
|
-
export function shouldApplyWatermark(tier, videoDurationSeconds) {
|
|
45
|
-
return tier === 'free' && videoDurationSeconds > WATERMARK_THRESHOLD_SECONDS;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get watermark configuration for display purposes
|
|
49
|
-
*/
|
|
50
|
-
export function getWatermarkInfo() {
|
|
51
|
-
return {
|
|
52
|
-
threshold: WATERMARK_THRESHOLD_SECONDS,
|
|
53
|
-
cornerText: 'qp',
|
|
54
|
-
endText: 'Video made with QuickPeek',
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=watermark.js.map
|
package/dist/watermark.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"watermark.js","sourceRoot":"","sources":["../src/watermark.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,mEAAmE;AACnE,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC,yCAAyC;AACzC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,gCAAgC;AAChC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAsB;IAC1D,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAErC,4BAA4B;IAC5B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,gDAAgD;IAChD,IAAI,aAAa,IAAI,2BAA2B,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,wDAAwD;IACxD,8CAA8C;IAC9C,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IAEvF,2DAA2D;IAC3D,0CAA0C;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,YAAY,GAAG,gBAAgB,CAAC;IAEpD,sCAAsC;IACtC,uCAAuC;IACvC,8CAA8C;IAC9C,sCAAsC;IACtC,MAAM,SAAS,GAAG,WAAW,YAAY,eAAe,WAAW,QAAQ,YAAY,aAAa,CAAC;IAErG,OAAO,CAAC,IAAI,CACV,kGAAkG,SAAS,GAAG,CAC/G,CAAC;IAEF,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAc,EAAE,oBAA4B;IAC/E,OAAO,IAAI,KAAK,MAAM,IAAI,oBAAoB,GAAG,2BAA2B,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAK9B,OAAO;QACL,SAAS,EAAE,2BAA2B;QACtC,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,2BAA2B;KACrC,CAAC;AACJ,CAAC"}
|