gitframes 1.2.35 → 1.3.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/dist/audio/index.mjs +4 -4
- package/dist/{audio-C4kiPbrV.mjs → audio-DvL7gQQ8.mjs} +3 -3
- package/dist/{audio-C4kiPbrV.mjs.map → audio-DvL7gQQ8.mjs.map} +1 -1
- package/dist/{audio-CiXUMGyk.mjs → audio-sZdRh_qg.mjs} +3 -3
- package/dist/{audio-CiXUMGyk.mjs.map → audio-sZdRh_qg.mjs.map} +1 -1
- package/dist/{dist-C37594c6.mjs → dist-8vbhZYqX.mjs} +471 -152
- package/dist/dist-8vbhZYqX.mjs.map +1 -0
- package/dist/{dist-CMF9eNLB.mjs → dist-B0vCkDzJ.mjs} +37 -3
- package/dist/dist-B0vCkDzJ.mjs.map +1 -0
- package/dist/effects/index.d.mts +2 -2
- package/dist/effects/index.mjs +3 -3
- package/dist/{effects-4t4qk-BR.mjs → effects-C3nV-k4T.mjs} +949 -1559
- package/dist/effects-C3nV-k4T.mjs.map +1 -0
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-Dn18r_ST.mjs → fonts-dn-pl4Pe.mjs} +3 -3
- package/dist/{fonts-Dn18r_ST.mjs.map → fonts-dn-pl4Pe.mjs.map} +1 -1
- package/dist/{index-YZsTjqut.d.mts → index-D-O2kwLx.d.mts} +3 -3
- package/dist/{index-YZsTjqut.d.mts.map → index-D-O2kwLx.d.mts.map} +1 -1
- package/dist/{index-B1557AUi.d.mts → index-t9GyO4Ei.d.mts} +35 -50
- package/dist/index-t9GyO4Ei.d.mts.map +1 -0
- package/dist/index.d.mts +89 -79
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +142 -126
- package/dist/index.mjs.map +1 -1
- package/dist/react/index.mjs +2 -2
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +3 -3
- package/dist/{renderer-DVi31fSv.mjs → renderer-CMDIVxhv.mjs} +317 -14
- package/dist/renderer-CMDIVxhv.mjs.map +1 -0
- package/dist/{renderers-CLJQRPVU-CMZnHNK0.mjs → renderers-CLJQRPVU-DuQ7-PaC.mjs} +3 -3
- package/dist/{renderers-CLJQRPVU-CMZnHNK0.mjs.map → renderers-CLJQRPVU-DuQ7-PaC.mjs.map} +1 -1
- package/dist/signals/index.mjs +5 -5
- package/dist/{signals-BB_kdndF.mjs → signals-CLaCq092.mjs} +2 -2
- package/dist/{signals-BB_kdndF.mjs.map → signals-CLaCq092.mjs.map} +1 -1
- package/package.json +55 -55
- package/dist/dist-C37594c6.mjs.map +0 -1
- package/dist/dist-CMF9eNLB.mjs.map +0 -1
- package/dist/effects-4t4qk-BR.mjs.map +0 -1
- package/dist/index-B1557AUi.d.mts.map +0 -1
- package/dist/renderer-DVi31fSv.mjs.map +0 -1
package/dist/fonts/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SlugFontCache,
|
|
1
|
+
import { S as SlugFontCache, tt as registerHeadlessFont } from "./dist-8vbhZYqX.mjs";
|
|
2
2
|
import * as fontkit from "fontkit";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import fs from "node:fs/promises";
|
|
@@ -160,7 +160,7 @@ var FontManager = class FontManager {
|
|
|
160
160
|
};
|
|
161
161
|
this.fonts.set(resolvedFamily, registered);
|
|
162
162
|
if (filePath) await registerHeadlessFont(resolvedFamily, filePath);
|
|
163
|
-
SlugFontCache.
|
|
163
|
+
SlugFontCache.setParsed(resolvedFamily, parsedFontkit);
|
|
164
164
|
return registered;
|
|
165
165
|
}
|
|
166
166
|
get(family) {
|
|
@@ -185,4 +185,4 @@ var FontManager = class FontManager {
|
|
|
185
185
|
|
|
186
186
|
//#endregion
|
|
187
187
|
export { FontManager as t };
|
|
188
|
-
//# sourceMappingURL=fonts-
|
|
188
|
+
//# sourceMappingURL=fonts-dn-pl4Pe.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fonts-Dn18r_ST.mjs","names":[],"sources":["../src/fonts/manager.ts"],"sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n\tregisterHeadlessFont,\n\tSlugFontCache,\n} from \"@gitframes/webgpu-renderers\";\nimport * as fontkit from \"fontkit\";\n\nexport interface RegisterFontOptions {\n\tfamily?: string;\n\tsource: string | Uint8Array;\n\tweight?: number | string;\n\tstyle?: \"normal\" | \"italic\" | \"oblique\";\n}\n\nexport interface RegisteredFont {\n\tfamily: string;\n\tsource: string | Uint8Array;\n\tfilePath?: string;\n\tformat: \"truetype\" | \"opentype\";\n\tpostscriptName?: string;\n\tunitsPerEm?: number;\n\tweight?: number | string;\n\tstyle?: string;\n}\n\ninterface ResolvedSource {\n\tbuffer: Uint8Array;\n\tfilePath?: string;\n}\n\nconst SFNT_TRUETYPE_1 = 0x00010000;\nconst SFNT_TRUETYPE_TRUE = 0x74727565; // 'true'\nconst SFNT_TRUETYPE_TYP1 = 0x74797031; // 'typ1'\nconst SFNT_OPENTYPE_CFF = 0x4f54544f; // 'OTTO'\nconst SFNT_COLLECTION = 0x74746366; // 'ttcf'\n\nfunction validateFontBinaryHeader(\n\tbytes: Uint8Array,\n\tsourceLabel: string,\n): \"truetype\" | \"opentype\" {\n\tif (bytes.length < 12) {\n\t\tthrow new Error(\n\t\t\t`Invalid font binary for \"${sourceLabel}\": File size (${bytes.length} bytes) is too small to be a valid TrueType or OpenType font.`,\n\t\t);\n\t}\n\n\tconst tag =\n\t\t((bytes[0] ?? 0) << 24) |\n\t\t((bytes[1] ?? 0) << 16) |\n\t\t((bytes[2] ?? 0) << 8) |\n\t\t(bytes[3] ?? 0);\n\n\tif (\n\t\ttag === SFNT_TRUETYPE_1 ||\n\t\ttag === SFNT_TRUETYPE_TRUE ||\n\t\ttag === SFNT_TRUETYPE_TYP1 ||\n\t\ttag === SFNT_COLLECTION\n\t) {\n\t\treturn \"truetype\";\n\t}\n\n\tif (tag === SFNT_OPENTYPE_CFF) {\n\t\treturn \"opentype\";\n\t}\n\n\tconst hexTag = (tag >>> 0).toString(16).padStart(8, \"0\");\n\tthrow new Error(\n\t\t`Invalid font format for \"${sourceLabel}\": Expected a valid TrueType (.ttf) or OpenType (.otf) font binary. Found header tag: 0x${hexTag}.`,\n\t);\n}\n\nasync function resolveSourceBuffer(\n\tsource: string | Uint8Array,\n): Promise<ResolvedSource> {\n\tif (source instanceof Uint8Array) {\n\t\treturn { buffer: source };\n\t}\n\n\tif (typeof source !== \"string\") {\n\t\tthrow new TypeError(\n\t\t\t`Font source must be a file path string or Uint8Array, received: ${typeof source}`,\n\t\t);\n\t}\n\n\tlet cleanPath = source;\n\tif (cleanPath.startsWith(\"http://\") || cleanPath.startsWith(\"https://\")) {\n\t\tconst res = await fetch(cleanPath);\n\t\tif (!res.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to download font from \"${cleanPath}\": HTTP ${res.status} ${res.statusText}`,\n\t\t\t);\n\t\t}\n\t\tconst arrayBuffer = await res.arrayBuffer();\n\t\treturn {\n\t\t\tbuffer: new Uint8Array(arrayBuffer),\n\t\t\tfilePath: cleanPath,\n\t\t};\n\t}\n\n\tif (cleanPath.startsWith(\"file://\")) {\n\t\ttry {\n\t\t\tcleanPath = new URL(cleanPath).pathname;\n\t\t} catch {\n\t\t\tcleanPath = cleanPath.replace(/^file:\\/\\//, \"\");\n\t\t}\n\t}\n\n\tconst candidates: string[] = [\n\t\tcleanPath,\n\t\tpath.resolve(process.cwd(), cleanPath),\n\t\tpath.resolve(process.cwd(), \"assets/fonts\", cleanPath),\n\t\tpath.resolve(process.cwd(), \"assets/fonts\", path.basename(cleanPath)),\n\t];\n\n\t// Upward traversal to locate fonts in parent monorepo roots\n\tlet currentDir = process.cwd();\n\tfor (let i = 0; i < 5; i++) {\n\t\tcandidates.push(path.resolve(currentDir, cleanPath));\n\t\tcandidates.push(\n\t\t\tpath.resolve(currentDir, \"assets/fonts\", path.basename(cleanPath)),\n\t\t);\n\t\tconst parent = path.dirname(currentDir);\n\t\tif (parent === currentDir) break;\n\t\tcurrentDir = parent;\n\t}\n\n\tlet resolvedPath: string | null = null;\n\tlet fileBuffer: Buffer | null = null;\n\n\tfor (const candidate of candidates) {\n\t\ttry {\n\t\t\tconst stat = await fs.stat(candidate);\n\t\t\tif (stat.isFile()) {\n\t\t\t\tresolvedPath = candidate;\n\t\t\t\tfileBuffer = await fs.readFile(candidate);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Continue searching next candidate\n\t\t}\n\t}\n\n\tif (!resolvedPath || !fileBuffer) {\n\t\tthrow new Error(\n\t\t\t`Font file not found: \"${source}\". Checked candidate locations:\\n - ${candidates.join(\"\\n - \")}`,\n\t\t);\n\t}\n\n\treturn {\n\t\tbuffer: new Uint8Array(\n\t\t\tfileBuffer.buffer,\n\t\t\tfileBuffer.byteOffset,\n\t\t\tfileBuffer.byteLength,\n\t\t),\n\t\tfilePath: resolvedPath,\n\t};\n}\n\n/**\n * Central singleton manager for font registration, TTF validation, and compositor typography binding.\n */\nexport class FontManager {\n\tprivate static instance: FontManager | null = null;\n\tprivate readonly fonts = new Map<string, RegisteredFont>();\n\n\tprivate constructor() {}\n\n\t/**\n\t * Returns the singleton FontManager instance.\n\t */\n\tpublic static getInstance(): FontManager {\n\t\tif (!FontManager.instance) {\n\t\t\tFontManager.instance = new FontManager();\n\t\t}\n\t\treturn FontManager.instance;\n\t}\n\n\t/**\n\t * Registers a TrueType/OpenType font into the Gitframes engine with validation.\n\t */\n\tpublic static async register(\n\t\toptionsOrFamilyOrSource: RegisterFontOptions | string,\n\t\tsource?: string | Uint8Array,\n\t): Promise<RegisteredFont> {\n\t\treturn FontManager.getInstance().register(optionsOrFamilyOrSource, source);\n\t}\n\n\t/**\n\t * Retrieves registered font metadata by family name.\n\t */\n\tpublic static get(family: string): RegisteredFont | undefined {\n\t\treturn FontManager.getInstance().get(family);\n\t}\n\n\t/**\n\t * Checks if a font family has been registered.\n\t */\n\tpublic static has(family: string): boolean {\n\t\treturn FontManager.getInstance().has(family);\n\t}\n\n\t/**\n\t * Returns all currently registered fonts.\n\t */\n\tpublic static getAll(): RegisteredFont[] {\n\t\treturn FontManager.getInstance().getAll();\n\t}\n\n\t/**\n\t * Returns relative or absolute file paths of all registered fonts for composition spec serialization.\n\t */\n\tpublic static getRegisteredFontPaths(): string[] {\n\t\treturn FontManager.getInstance().getRegisteredFontPaths();\n\t}\n\n\t/**\n\t * Clears all registered fonts from the manager.\n\t */\n\tpublic static clear(): void {\n\t\tFontManager.getInstance().clear();\n\t}\n\n\t/**\n\t * Instance registration method with format validation and Slug WebGPU cache population.\n\t */\n\tpublic async register(\n\t\toptionsOrFamilyOrSource: RegisterFontOptions | string,\n\t\tsource?: string | Uint8Array,\n\t): Promise<RegisteredFont> {\n\t\tlet family: string | undefined;\n\t\tlet rawSource: string | Uint8Array;\n\t\tlet weight: number | string | undefined;\n\t\tlet style: \"normal\" | \"italic\" | \"oblique\" | undefined;\n\n\t\tif (\n\t\t\ttypeof optionsOrFamilyOrSource === \"object\" &&\n\t\t\toptionsOrFamilyOrSource !== null\n\t\t) {\n\t\t\tfamily = optionsOrFamilyOrSource.family;\n\t\t\trawSource = optionsOrFamilyOrSource.source;\n\t\t\tweight = optionsOrFamilyOrSource.weight;\n\t\t\tstyle = optionsOrFamilyOrSource.style;\n\t\t} else if (\n\t\t\ttypeof optionsOrFamilyOrSource === \"string\" &&\n\t\t\tsource !== undefined\n\t\t) {\n\t\t\tfamily = optionsOrFamilyOrSource;\n\t\t\trawSource = source;\n\t\t} else if (typeof optionsOrFamilyOrSource === \"string\") {\n\t\t\tfamily = undefined;\n\t\t\trawSource = optionsOrFamilyOrSource;\n\t\t} else {\n\t\t\tthrow new TypeError(\"Invalid arguments passed to FontManager.register\");\n\t\t}\n\n\t\tconst { buffer, filePath } = await resolveSourceBuffer(rawSource);\n\t\tconst sourceLabel =\n\t\t\tfilePath ?? (typeof rawSource === \"string\" ? rawSource : \"Uint8Array\");\n\t\tconst format = validateFontBinaryHeader(buffer, sourceLabel);\n\n\t\tlet parsedFontkit: fontkit.Font;\n\t\ttry {\n\t\t\tconst parsed = fontkit.create(buffer as unknown as Buffer);\n\t\t\tif (\n\t\t\t\tparsed &&\n\t\t\t\t\"fonts\" in parsed &&\n\t\t\t\tArray.isArray(parsed.fonts) &&\n\t\t\t\tparsed.fonts.length > 0\n\t\t\t) {\n\t\t\t\tparsedFontkit = parsed.fonts[0] as fontkit.Font;\n\t\t\t} else {\n\t\t\t\tparsedFontkit = parsed as fontkit.Font;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to parse TrueType/OpenType font binary for \"${sourceLabel}\": ${msg}`,\n\t\t\t);\n\t\t}\n\n\t\tconst detectedFamily =\n\t\t\tparsedFontkit.familyName ||\n\t\t\tparsedFontkit.postscriptName ||\n\t\t\tpath.parse(sourceLabel).name;\n\t\tconst resolvedFamily = family?.trim() || detectedFamily;\n\n\t\tconst registered: RegisteredFont = {\n\t\t\tfamily: resolvedFamily,\n\t\t\tsource: rawSource,\n\t\t\tfilePath,\n\t\t\tformat,\n\t\t\tpostscriptName: parsedFontkit.postscriptName,\n\t\t\tunitsPerEm: parsedFontkit.unitsPerEm,\n\t\t\tweight,\n\t\t\tstyle,\n\t\t};\n\n\t\tthis.fonts.set(resolvedFamily, registered);\n\n\t\t// Populate headless font registries\n\t\tif (filePath) {\n\t\t\tawait registerHeadlessFont(resolvedFamily, filePath);\n\t\t}\n\t\tSlugFontCache.parsedFontCache.set(resolvedFamily, parsedFontkit);\n\n\t\treturn registered;\n\t}\n\n\tpublic get(family: string): RegisteredFont | undefined {\n\t\treturn this.fonts.get(family);\n\t}\n\n\tpublic has(family: string): boolean {\n\t\treturn this.fonts.has(family);\n\t}\n\n\tpublic getAll(): RegisteredFont[] {\n\t\treturn Array.from(this.fonts.values());\n\t}\n\n\tpublic getRegisteredFontPaths(): string[] {\n\t\tconst paths: string[] = [];\n\t\tfor (const font of this.fonts.values()) {\n\t\t\tif (font.filePath) {\n\t\t\t\tpaths.push(font.filePath);\n\t\t\t} else if (typeof font.source === \"string\") {\n\t\t\t\tpaths.push(font.source);\n\t\t\t}\n\t\t}\n\t\treturn paths;\n\t}\n\n\tpublic clear(): void {\n\t\tthis.fonts.clear();\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fonts-dn-pl4Pe.mjs","names":[],"sources":["../src/fonts/manager.ts"],"sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n\tregisterHeadlessFont,\n\tSlugFontCache,\n} from \"@gitframes/webgpu-renderers\";\nimport * as fontkit from \"fontkit\";\n\nexport interface RegisterFontOptions {\n\tfamily?: string;\n\tsource: string | Uint8Array;\n\tweight?: number | string;\n\tstyle?: \"normal\" | \"italic\" | \"oblique\";\n}\n\nexport interface RegisteredFont {\n\tfamily: string;\n\tsource: string | Uint8Array;\n\tfilePath?: string;\n\tformat: \"truetype\" | \"opentype\";\n\tpostscriptName?: string;\n\tunitsPerEm?: number;\n\tweight?: number | string;\n\tstyle?: string;\n}\n\ninterface ResolvedSource {\n\tbuffer: Uint8Array;\n\tfilePath?: string;\n}\n\nconst SFNT_TRUETYPE_1 = 0x00010000;\nconst SFNT_TRUETYPE_TRUE = 0x74727565; // 'true'\nconst SFNT_TRUETYPE_TYP1 = 0x74797031; // 'typ1'\nconst SFNT_OPENTYPE_CFF = 0x4f54544f; // 'OTTO'\nconst SFNT_COLLECTION = 0x74746366; // 'ttcf'\n\nfunction validateFontBinaryHeader(\n\tbytes: Uint8Array,\n\tsourceLabel: string,\n): \"truetype\" | \"opentype\" {\n\tif (bytes.length < 12) {\n\t\tthrow new Error(\n\t\t\t`Invalid font binary for \"${sourceLabel}\": File size (${bytes.length} bytes) is too small to be a valid TrueType or OpenType font.`,\n\t\t);\n\t}\n\n\tconst tag =\n\t\t((bytes[0] ?? 0) << 24) |\n\t\t((bytes[1] ?? 0) << 16) |\n\t\t((bytes[2] ?? 0) << 8) |\n\t\t(bytes[3] ?? 0);\n\n\tif (\n\t\ttag === SFNT_TRUETYPE_1 ||\n\t\ttag === SFNT_TRUETYPE_TRUE ||\n\t\ttag === SFNT_TRUETYPE_TYP1 ||\n\t\ttag === SFNT_COLLECTION\n\t) {\n\t\treturn \"truetype\";\n\t}\n\n\tif (tag === SFNT_OPENTYPE_CFF) {\n\t\treturn \"opentype\";\n\t}\n\n\tconst hexTag = (tag >>> 0).toString(16).padStart(8, \"0\");\n\tthrow new Error(\n\t\t`Invalid font format for \"${sourceLabel}\": Expected a valid TrueType (.ttf) or OpenType (.otf) font binary. Found header tag: 0x${hexTag}.`,\n\t);\n}\n\nasync function resolveSourceBuffer(\n\tsource: string | Uint8Array,\n): Promise<ResolvedSource> {\n\tif (source instanceof Uint8Array) {\n\t\treturn { buffer: source };\n\t}\n\n\tif (typeof source !== \"string\") {\n\t\tthrow new TypeError(\n\t\t\t`Font source must be a file path string or Uint8Array, received: ${typeof source}`,\n\t\t);\n\t}\n\n\tlet cleanPath = source;\n\tif (cleanPath.startsWith(\"http://\") || cleanPath.startsWith(\"https://\")) {\n\t\tconst res = await fetch(cleanPath);\n\t\tif (!res.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to download font from \"${cleanPath}\": HTTP ${res.status} ${res.statusText}`,\n\t\t\t);\n\t\t}\n\t\tconst arrayBuffer = await res.arrayBuffer();\n\t\treturn {\n\t\t\tbuffer: new Uint8Array(arrayBuffer),\n\t\t\tfilePath: cleanPath,\n\t\t};\n\t}\n\n\tif (cleanPath.startsWith(\"file://\")) {\n\t\ttry {\n\t\t\tcleanPath = new URL(cleanPath).pathname;\n\t\t} catch {\n\t\t\tcleanPath = cleanPath.replace(/^file:\\/\\//, \"\");\n\t\t}\n\t}\n\n\tconst candidates: string[] = [\n\t\tcleanPath,\n\t\tpath.resolve(process.cwd(), cleanPath),\n\t\tpath.resolve(process.cwd(), \"assets/fonts\", cleanPath),\n\t\tpath.resolve(process.cwd(), \"assets/fonts\", path.basename(cleanPath)),\n\t];\n\n\t// Upward traversal to locate fonts in parent monorepo roots\n\tlet currentDir = process.cwd();\n\tfor (let i = 0; i < 5; i++) {\n\t\tcandidates.push(path.resolve(currentDir, cleanPath));\n\t\tcandidates.push(\n\t\t\tpath.resolve(currentDir, \"assets/fonts\", path.basename(cleanPath)),\n\t\t);\n\t\tconst parent = path.dirname(currentDir);\n\t\tif (parent === currentDir) break;\n\t\tcurrentDir = parent;\n\t}\n\n\tlet resolvedPath: string | null = null;\n\tlet fileBuffer: Buffer | null = null;\n\n\tfor (const candidate of candidates) {\n\t\ttry {\n\t\t\tconst stat = await fs.stat(candidate);\n\t\t\tif (stat.isFile()) {\n\t\t\t\tresolvedPath = candidate;\n\t\t\t\tfileBuffer = await fs.readFile(candidate);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Continue searching next candidate\n\t\t}\n\t}\n\n\tif (!resolvedPath || !fileBuffer) {\n\t\tthrow new Error(\n\t\t\t`Font file not found: \"${source}\". Checked candidate locations:\\n - ${candidates.join(\"\\n - \")}`,\n\t\t);\n\t}\n\n\treturn {\n\t\tbuffer: new Uint8Array(\n\t\t\tfileBuffer.buffer,\n\t\t\tfileBuffer.byteOffset,\n\t\t\tfileBuffer.byteLength,\n\t\t),\n\t\tfilePath: resolvedPath,\n\t};\n}\n\n/**\n * Central singleton manager for font registration, TTF validation, and compositor typography binding.\n */\nexport class FontManager {\n\tprivate static instance: FontManager | null = null;\n\tprivate readonly fonts = new Map<string, RegisteredFont>();\n\n\tprivate constructor() {}\n\n\t/**\n\t * Returns the singleton FontManager instance.\n\t */\n\tpublic static getInstance(): FontManager {\n\t\tif (!FontManager.instance) {\n\t\t\tFontManager.instance = new FontManager();\n\t\t}\n\t\treturn FontManager.instance;\n\t}\n\n\t/**\n\t * Registers a TrueType/OpenType font into the Gitframes engine with validation.\n\t */\n\tpublic static async register(\n\t\toptionsOrFamilyOrSource: RegisterFontOptions | string,\n\t\tsource?: string | Uint8Array,\n\t): Promise<RegisteredFont> {\n\t\treturn FontManager.getInstance().register(optionsOrFamilyOrSource, source);\n\t}\n\n\t/**\n\t * Retrieves registered font metadata by family name.\n\t */\n\tpublic static get(family: string): RegisteredFont | undefined {\n\t\treturn FontManager.getInstance().get(family);\n\t}\n\n\t/**\n\t * Checks if a font family has been registered.\n\t */\n\tpublic static has(family: string): boolean {\n\t\treturn FontManager.getInstance().has(family);\n\t}\n\n\t/**\n\t * Returns all currently registered fonts.\n\t */\n\tpublic static getAll(): RegisteredFont[] {\n\t\treturn FontManager.getInstance().getAll();\n\t}\n\n\t/**\n\t * Returns relative or absolute file paths of all registered fonts for composition spec serialization.\n\t */\n\tpublic static getRegisteredFontPaths(): string[] {\n\t\treturn FontManager.getInstance().getRegisteredFontPaths();\n\t}\n\n\t/**\n\t * Clears all registered fonts from the manager.\n\t */\n\tpublic static clear(): void {\n\t\tFontManager.getInstance().clear();\n\t}\n\n\t/**\n\t * Instance registration method with format validation and Slug WebGPU cache population.\n\t */\n\tpublic async register(\n\t\toptionsOrFamilyOrSource: RegisterFontOptions | string,\n\t\tsource?: string | Uint8Array,\n\t): Promise<RegisteredFont> {\n\t\tlet family: string | undefined;\n\t\tlet rawSource: string | Uint8Array;\n\t\tlet weight: number | string | undefined;\n\t\tlet style: \"normal\" | \"italic\" | \"oblique\" | undefined;\n\n\t\tif (\n\t\t\ttypeof optionsOrFamilyOrSource === \"object\" &&\n\t\t\toptionsOrFamilyOrSource !== null\n\t\t) {\n\t\t\tfamily = optionsOrFamilyOrSource.family;\n\t\t\trawSource = optionsOrFamilyOrSource.source;\n\t\t\tweight = optionsOrFamilyOrSource.weight;\n\t\t\tstyle = optionsOrFamilyOrSource.style;\n\t\t} else if (\n\t\t\ttypeof optionsOrFamilyOrSource === \"string\" &&\n\t\t\tsource !== undefined\n\t\t) {\n\t\t\tfamily = optionsOrFamilyOrSource;\n\t\t\trawSource = source;\n\t\t} else if (typeof optionsOrFamilyOrSource === \"string\") {\n\t\t\tfamily = undefined;\n\t\t\trawSource = optionsOrFamilyOrSource;\n\t\t} else {\n\t\t\tthrow new TypeError(\"Invalid arguments passed to FontManager.register\");\n\t\t}\n\n\t\tconst { buffer, filePath } = await resolveSourceBuffer(rawSource);\n\t\tconst sourceLabel =\n\t\t\tfilePath ?? (typeof rawSource === \"string\" ? rawSource : \"Uint8Array\");\n\t\tconst format = validateFontBinaryHeader(buffer, sourceLabel);\n\n\t\tlet parsedFontkit: fontkit.Font;\n\t\ttry {\n\t\t\tconst parsed = fontkit.create(buffer as unknown as Buffer);\n\t\t\tif (\n\t\t\t\tparsed &&\n\t\t\t\t\"fonts\" in parsed &&\n\t\t\t\tArray.isArray(parsed.fonts) &&\n\t\t\t\tparsed.fonts.length > 0\n\t\t\t) {\n\t\t\t\tparsedFontkit = parsed.fonts[0] as fontkit.Font;\n\t\t\t} else {\n\t\t\t\tparsedFontkit = parsed as fontkit.Font;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to parse TrueType/OpenType font binary for \"${sourceLabel}\": ${msg}`,\n\t\t\t);\n\t\t}\n\n\t\tconst detectedFamily =\n\t\t\tparsedFontkit.familyName ||\n\t\t\tparsedFontkit.postscriptName ||\n\t\t\tpath.parse(sourceLabel).name;\n\t\tconst resolvedFamily = family?.trim() || detectedFamily;\n\n\t\tconst registered: RegisteredFont = {\n\t\t\tfamily: resolvedFamily,\n\t\t\tsource: rawSource,\n\t\t\tfilePath,\n\t\t\tformat,\n\t\t\tpostscriptName: parsedFontkit.postscriptName,\n\t\t\tunitsPerEm: parsedFontkit.unitsPerEm,\n\t\t\tweight,\n\t\t\tstyle,\n\t\t};\n\n\t\tthis.fonts.set(resolvedFamily, registered);\n\n\t\t// Populate headless font registries\n\t\tif (filePath) {\n\t\t\tawait registerHeadlessFont(resolvedFamily, filePath);\n\t\t}\n\t\tSlugFontCache.setParsed(resolvedFamily, parsedFontkit);\n\n\t\treturn registered;\n\t}\n\n\tpublic get(family: string): RegisteredFont | undefined {\n\t\treturn this.fonts.get(family);\n\t}\n\n\tpublic has(family: string): boolean {\n\t\treturn this.fonts.has(family);\n\t}\n\n\tpublic getAll(): RegisteredFont[] {\n\t\treturn Array.from(this.fonts.values());\n\t}\n\n\tpublic getRegisteredFontPaths(): string[] {\n\t\tconst paths: string[] = [];\n\t\tfor (const font of this.fonts.values()) {\n\t\t\tif (font.filePath) {\n\t\t\t\tpaths.push(font.filePath);\n\t\t\t} else if (typeof font.source === \"string\") {\n\t\t\t\tpaths.push(font.source);\n\t\t\t}\n\t\t}\n\t\treturn paths;\n\t}\n\n\tpublic clear(): void {\n\t\tthis.fonts.clear();\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { initHeadlessWebGPU } from "@gitframes/webgpu-renderers";
|
|
2
2
|
import { VirtualMediaData } from "@gitframes/core";
|
|
3
|
-
import { HeadlessMediaRenderer, HeadlessWebGPURenderer, renderSemaphore } from "@gitframes/renderer";
|
|
3
|
+
import { AudioQaStats, HeadlessMediaRenderer, HeadlessWebGPURenderer, QaIssue, QaSegment, VideoQaOptions, VideoQaReport, VideoQaStats, formatQaReport, renderSemaphore } from "@gitframes/renderer";
|
|
4
4
|
|
|
5
5
|
//#region src/renderer/framegrid.d.ts
|
|
6
6
|
interface FrameSamplePoint {
|
|
@@ -143,5 +143,5 @@ type FrameGridRenderable = {
|
|
|
143
143
|
*/
|
|
144
144
|
declare function renderFrameGrid(target: FrameGridRenderable, options?: FrameGridOptions): Promise<Buffer>;
|
|
145
145
|
//#endregion
|
|
146
|
-
export {
|
|
147
|
-
//# sourceMappingURL=index-
|
|
146
|
+
export { resolveSamplePoints as _, QaSegment as a, VideoQaStats as c, renderSemaphore as d, FrameGridOptions as f, renderFrameGrid as g, computeGridLayout as h, QaIssue as i, formatQaReport as l, FrameSamplePoint as m, HeadlessMediaRenderer as n, VideoQaOptions as o, FrameGridRenderable as p, HeadlessWebGPURenderer as r, VideoQaReport as s, AudioQaStats as t, initHeadlessWebGPU as u };
|
|
147
|
+
//# sourceMappingURL=index-D-O2kwLx.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-D-O2kwLx.d.mts","names":[],"sources":["../src/renderer/framegrid.ts"],"sourcesContent":[],"mappings":";;;;;UAKiB,gBAAA;;;AAAjB;AAKiB,UAAA,gBAAA,CAAgB;EA0HjB;AAsGhB;AAiFA;EACmB,UAAA,CAAA,EAAA,MAAA;EAKN;;;EACD,QAAA,CAAA,EAAA,MAAA;EAWU;;;EAGX,UAAA,CAAA,EAAA,MAAA;EAAR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAlNS;;;;;iBAMI,mBAAA,UACN;WAGI;;;;;;iBAkGE,iBAAA,mDAGN;;;;;;;;;;;KA8EE,mBAAA;oBACO;;;;;eAKN;MACR,QAAQ;;;;;;;;;;iBAWS,eAAA,SACb,+BACC,mBACP,QAAQ"}
|
|
@@ -30,9 +30,9 @@ import shadowsHighlightsRenderer from "@gitframes/node-shadows-highlights/render
|
|
|
30
30
|
import tileOffsetRenderer from "@gitframes/node-tile-offset/renderer";
|
|
31
31
|
import unsharpMaskRenderer from "@gitframes/node-unsharp-mask/renderer";
|
|
32
32
|
import vignetteRenderer from "@gitframes/node-vignette/renderer";
|
|
33
|
-
import
|
|
33
|
+
import visionRenderer from "@gitframes/node-vision/renderer";
|
|
34
34
|
import { Effect, EffectConfigValue } from "@gitframes/core";
|
|
35
|
-
import {
|
|
35
|
+
import { ObjectTrackSignals } from "@gitframes/vision";
|
|
36
36
|
|
|
37
37
|
//#region src/effects/types.d.ts
|
|
38
38
|
/** A prop that accepts a plain value, a reactive signal, or a frame signal. */
|
|
@@ -776,63 +776,55 @@ declare class Crop extends Effect<CropProps> {
|
|
|
776
776
|
mode?: "cropped" | "rest";
|
|
777
777
|
constructor(config?: CropProps);
|
|
778
778
|
}
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
* Legacy option shape, mapped onto YOLO by the `MediaPipe` alias class below.
|
|
782
|
-
*/
|
|
783
|
-
interface MediaPipeProps {
|
|
784
|
-
enablePoseLandmarks?: boolean;
|
|
785
|
-
enableFaceLandmarks?: boolean;
|
|
786
|
-
enableFaceBlendshapes?: boolean;
|
|
787
|
-
enableSegmentation?: boolean;
|
|
788
|
-
mode?: "passthrough" | "mask" | "matte" | "skeleton";
|
|
789
|
-
delegate?: "CPU" | "GPU";
|
|
790
|
-
modelsDir?: string;
|
|
791
|
-
visionBundle?: unknown;
|
|
792
|
-
}
|
|
793
|
-
interface YoloProps {
|
|
779
|
+
interface VisionProps {
|
|
780
|
+
/** Track COCO-80 objects (RTMDet-Ins boxes). Default true. */
|
|
794
781
|
enableDetection?: boolean;
|
|
782
|
+
/** Per-instance masks (RTMDet-Ins). Shares the detection pass. */
|
|
795
783
|
enableSegmentation?: boolean;
|
|
784
|
+
/** COCO-17 keypoints per person (RTMO). */
|
|
796
785
|
enablePose?: boolean;
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
prompts?: readonly string[];
|
|
801
|
-
customModel?: CustomModelConfig;
|
|
786
|
+
/** Fast person-vs-background alpha (Selfie Segmenter). */
|
|
787
|
+
enableMatte?: boolean;
|
|
788
|
+
/** COCO class-name filter (all classes when omitted). */
|
|
802
789
|
classes?: readonly string[];
|
|
790
|
+
/** Minimum detection score, 0..1. Default 0.3. */
|
|
803
791
|
confidence?: number;
|
|
804
|
-
|
|
805
|
-
variant?: "
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
792
|
+
/** Model size: `t` fastest · `s` default · `m` most accurate. */
|
|
793
|
+
variant?: "t" | "s" | "m";
|
|
794
|
+
mode?: "passthrough" | "mask" | "matte" | "crop" | "skeleton" | "boxes" | "tracking";
|
|
795
|
+
/**
|
|
796
|
+
* Subject alpha for mask/matte/crop: instance masks (default; any COCO class) or the
|
|
797
|
+
* selfie matte (fastest, but only reliable when a person fills much of the frame).
|
|
798
|
+
*/
|
|
799
|
+
matteSource?: "instance" | "selfie";
|
|
800
|
+
/** Frames a track may go unseen before it is dropped. Default 15. */
|
|
801
|
+
maxMissedFrames?: number;
|
|
809
802
|
modelsDir?: string;
|
|
810
803
|
baseUrl?: string;
|
|
811
804
|
maskThreshold?: number;
|
|
812
805
|
featherRadius?: number;
|
|
813
|
-
/** Grow the
|
|
806
|
+
/** Grow the subject into connected pixels that stand out from the backdrop. */
|
|
814
807
|
keyBackground?: boolean;
|
|
815
808
|
/** Colour-distance threshold for the background key (lower → more growth). Default 70. */
|
|
816
809
|
backgroundKeyThreshold?: number;
|
|
817
810
|
visionBundle?: unknown;
|
|
818
811
|
}
|
|
819
|
-
|
|
820
|
-
|
|
812
|
+
/**
|
|
813
|
+
* On-device vision: tracks objects, segments instances, estimates pose and mattes people on
|
|
814
|
+
* the rendered frame, feeding reactive signals. Models download lazily on first use.
|
|
815
|
+
*/
|
|
816
|
+
declare class Vision extends Effect<VisionProps> {
|
|
817
|
+
readonly op = "Vision";
|
|
821
818
|
enableDetection?: boolean;
|
|
822
819
|
enableSegmentation?: boolean;
|
|
823
820
|
enablePose?: boolean;
|
|
824
|
-
|
|
825
|
-
enableObb?: boolean;
|
|
826
|
-
enableWorld?: boolean;
|
|
827
|
-
prompts?: readonly string[];
|
|
828
|
-
customModel?: CustomModelConfig;
|
|
821
|
+
enableMatte?: boolean;
|
|
829
822
|
classes?: readonly string[];
|
|
830
823
|
confidence?: number;
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
delegate?: "CPU" | "GPU";
|
|
824
|
+
variant?: VisionProps["variant"];
|
|
825
|
+
mode?: VisionProps["mode"];
|
|
826
|
+
matteSource?: VisionProps["matteSource"];
|
|
827
|
+
maxMissedFrames?: number;
|
|
836
828
|
modelsDir?: string;
|
|
837
829
|
baseUrl?: string;
|
|
838
830
|
maskThreshold?: number;
|
|
@@ -840,14 +832,7 @@ declare class Yolo extends Effect<YoloProps> {
|
|
|
840
832
|
keyBackground?: boolean;
|
|
841
833
|
backgroundKeyThreshold?: number;
|
|
842
834
|
visionBundle?: unknown;
|
|
843
|
-
constructor(config?:
|
|
844
|
-
}
|
|
845
|
-
/**
|
|
846
|
-
* @deprecated Use `Yolo`. Kept as a source-compatible alias that maps the legacy MediaPipe
|
|
847
|
-
* option shape onto the YOLO engine (`op` is `"Yolo"`).
|
|
848
|
-
*/
|
|
849
|
-
declare class MediaPipe extends Yolo {
|
|
850
|
-
constructor(config?: MediaPipeProps);
|
|
835
|
+
constructor(config?: VisionProps);
|
|
851
836
|
}
|
|
852
837
|
interface Relight3DProps {
|
|
853
838
|
lightType?: "Point" | "Spot" | "Directional" | "Rim";
|
|
@@ -924,5 +909,5 @@ declare class Modulate extends Effect<ModulateProps> {
|
|
|
924
909
|
constructor(config?: ModulateProps);
|
|
925
910
|
}
|
|
926
911
|
//#endregion
|
|
927
|
-
export { HalftoneScreen as $, unsharpMaskRenderer as A,
|
|
928
|
-
//# sourceMappingURL=index-
|
|
912
|
+
export { HalftoneScreen as $, unsharpMaskRenderer as A, effectMeta as At, CurvesChannelPoint as B, EffectProp as Bt, patchHealRenderer as C, TileOffsetEdgeMode as Ct, selectiveColorRenderer as D, Vision as Dt, relight3dRenderer as E, UnsharpMaskProps as Et, AudioSignalExtractor as F, ColorKey as Ft, DepthOfFieldProps as G, CustomEffect as H, AudioSignalExtractorProps as I, ColorKeyProps as It, GradientMap as J, FilmGrain as K, Crop as L, TonalShift as Lt, visionRenderer as M, BlurProps as Mt, ApplyLUT as N, ColorBalance as Nt, shadowsHighlightsRenderer as O, VisionProps as Ot, ApplyLUTProps as P, ColorBalanceProps as Pt, HalftoneMode as Q, CropProps as R, Vignette as Rt, paintRenderer as S, TileOffset as St, refractionCausticsRenderer as T, UnsharpMask as Tt, DeflickerProps as U, CurvesProps as V, DepthOfField as W, GradientMapStop as X, GradientMapProps as Y, HalftoneDotShape as Z, levelsRenderer as _, SelectiveColorAdjustment as _t, cornerPinRenderer as a, LevelsProps as at, meshWarpRenderer as b, ShadowsHighlightsProps as bt, deflickerRenderer as c, MotionBlur as ct, flipRenderer as d, PBRGlassProps as dt, HalftoneScreenProps as et, gradientMapRenderer as f, Relight3D as ft, layerStyleRenderer as g, SelectiveColor as gt, kenBurnsRenderer as h, SSAOProps as ht, colorkeyRenderer as i, Levels as it, vignetteRenderer as j, Blur as jt, tileOffsetRenderer as k, effectFactories as kt, displacementMapRenderer as l, MotionBlurProps as lt, highPassRenderer as m, SSAO as mt, blurRenderer as n, HighPassProps as nt, cropRenderer as o, Modulate as ot, halftoneScreenRenderer as p, Relight3DProps as pt, FilmGrainProps as q, colorBalanceRenderer as r, LevelChannel as rt, curvesRenderer as s, ModulateProps as st, applyLutRenderer as t, HighPass as tt, filmGrainRenderer as u, PBRGlass as ut, liquifyRenderer as v, SelectiveColorProps as vt, refineEdgeRenderer as w, TileOffsetProps as wt, modulateRenderer as x, TemporalDeflicker as xt, maskMathRenderer as y, ShadowsHighlights as yt, Curves as z, VignetteProps as zt };
|
|
913
|
+
//# sourceMappingURL=index-t9GyO4Ei.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-t9GyO4Ei.d.mts","names":[],"sources":["../src/effects/types.ts","../src/effects/generated/classes.ts","../src/effects/custom/blur.ts","../src/effects/generated/meta.ts","../src/effects/generated/registry.ts","../src/effects/classes.ts"],"sourcesContent":[],"mappings":"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"}
|