@sealpixel/core 1.0.0-rc.13 → 1.0.0-rc.15
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/assets.d.ts +0 -1
- package/dist/assets.js.map +1 -1
- package/dist/canonical-json.d.ts +0 -1
- package/dist/canonical-json.js.map +1 -1
- package/dist/compile.d.ts +0 -1
- package/dist/compile.js.map +1 -1
- package/dist/embedded.d.ts +0 -1
- package/dist/embedded.js.map +1 -1
- package/dist/errors.d.ts +0 -1
- package/dist/errors.js.map +1 -1
- package/dist/external-kernel.d.ts +0 -1
- package/dist/external-kernel.js.map +1 -1
- package/dist/generated/geometry.d.ts +0 -1
- package/dist/generated/geometry.js.map +1 -1
- package/dist/generated/output.d.ts +0 -1
- package/dist/generated/output.js.map +1 -1
- package/dist/generated/plan.d.ts +0 -1
- package/dist/generated/plan.js.map +1 -1
- package/dist/history.d.ts +0 -1
- package/dist/history.js.map +1 -1
- package/dist/image-size.d.ts +0 -1
- package/dist/image-size.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js.map +1 -1
- package/dist/inline-renderer.d.ts +0 -1
- package/dist/inline-renderer.js.map +1 -1
- package/dist/options.d.ts +0 -1
- package/dist/options.js.map +1 -1
- package/dist/plan.d.ts +0 -1
- package/dist/plan.js.map +1 -1
- package/dist/plugin.d.ts +0 -1
- package/dist/plugin.js.map +1 -1
- package/dist/registry.d.ts +0 -1
- package/dist/registry.js.map +1 -1
- package/dist/render.d.ts +0 -1
- package/dist/render.js.map +1 -1
- package/dist/renderer-core.d.ts +2 -2
- package/dist/renderer-core.js.map +1 -1
- package/dist/renderer.d.ts +0 -1
- package/dist/renderer.js.map +1 -1
- package/dist/session.d.ts +0 -1
- package/dist/session.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js.map +1 -1
- package/dist/worker-protocol.d.ts +0 -1
- package/dist/worker-protocol.js.map +1 -1
- package/dist/worker-renderer.d.ts +0 -1
- package/dist/worker-renderer.js.map +1 -1
- package/dist/worker.d.ts +0 -1
- package/dist/worker.js.map +1 -1
- package/package.json +2 -2
- package/dist/assets.d.ts.map +0 -1
- package/dist/canonical-json.d.ts.map +0 -1
- package/dist/compile.d.ts.map +0 -1
- package/dist/embedded.d.ts.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/external-kernel.d.ts.map +0 -1
- package/dist/generated/geometry.d.ts.map +0 -1
- package/dist/generated/output.d.ts.map +0 -1
- package/dist/generated/plan.d.ts.map +0 -1
- package/dist/history.d.ts.map +0 -1
- package/dist/image-size.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/inline-renderer.d.ts.map +0 -1
- package/dist/options.d.ts.map +0 -1
- package/dist/plan.d.ts.map +0 -1
- package/dist/plugin.d.ts.map +0 -1
- package/dist/registry.d.ts.map +0 -1
- package/dist/render.d.ts.map +0 -1
- package/dist/renderer-core.d.ts.map +0 -1
- package/dist/renderer.d.ts.map +0 -1
- package/dist/session.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/worker-protocol.d.ts.map +0 -1
- package/dist/worker-renderer.d.ts.map +0 -1
- package/dist/worker.d.ts.map +0 -1
package/dist/assets.d.ts
CHANGED
|
@@ -34,4 +34,3 @@ export declare function missingAssetId(error: unknown): string | null;
|
|
|
34
34
|
export declare function withAssets<T>(fn: () => Promise<T>, resolver: AssetResolver | undefined, put: (id: string, bytes: Uint8Array) => Promise<void> | void, limit?: number): Promise<T>;
|
|
35
35
|
/** Uses a loaded core to hash, so the value equals the core's own sha256. */
|
|
36
36
|
export declare function wasmSha256(wasm: SealpixelWasm): (bytes: Uint8Array) => string;
|
|
37
|
-
//# sourceMappingURL=assets.d.ts.map
|
package/dist/assets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SealpixelWasm } from '@sealpixel/wasm';\nimport { SealpixelError } from './errors.js';\nimport type { AssetDeclaration } from './plugin.js';\n\n/** Supplies asset bytes by id. Implementations verify the declared hash. */\nexport interface AssetResolver {\n resolve(id: string): Promise<Uint8Array>;\n /** Declared assets, used to pre-load and to verify hashes. */\n declarations(): readonly AssetDeclaration[];\n}\n\nexport interface AssetResolverOptions {\n assets: readonly AssetDeclaration[];\n /** Resolves relative `url`s. Defaults to the document location in browsers. */\n baseUrl?: string | URL;\n fetch?: typeof fetch;\n /** Computes sha256 for verification. Defaults to WebCrypto. */\n sha256?: (bytes: Uint8Array) => Promise<string> | string;\n}\n\n/**\n * Fetch-based resolver. Every asset must be declared with a hash; bytes whose\n * hash differs are rejected, so client and server render the same glyphs.\n */\nexport function createAssetResolver(options: AssetResolverOptions): AssetResolver {\n const byId = new Map(options.assets.map((a) => [a.id, a]));\n const cache = new Map<string, Promise<Uint8Array>>();\n const doFetch = options.fetch ?? fetch;\n const sha = options.sha256 ?? webCryptoSha256;\n return {\n declarations: () => options.assets,\n resolve(id) {\n const cached = cache.get(id);\n if (cached) return cached;\n const decl = byId.get(id);\n if (!decl)\n return Promise.reject(new SealpixelError('MISSING_ASSET', `asset \"${id}\" is not declared`));\n const pending = (async () => {\n if (!decl.url) throw new SealpixelError('MISSING_ASSET', `asset \"${id}\" has no url`);\n const url = options.baseUrl ? new URL(decl.url, options.baseUrl).toString() : decl.url;\n const res = await doFetch(url);\n if (!res.ok)\n throw new SealpixelError(\n 'MISSING_ASSET',\n `asset \"${id}\": HTTP ${res.status} from ${url}`,\n );\n const bytes = new Uint8Array(await res.arrayBuffer());\n return verify(id, decl, bytes, sha);\n })().catch((error) => {\n cache.delete(id);\n throw error;\n });\n cache.set(id, pending);\n return pending;\n },\n };\n}\n\n/** Resolver over in-memory bytes (tests, servers with preloaded assets). */\nexport function staticAssetResolver(\n entries: readonly { declaration: AssetDeclaration; bytes: Uint8Array }[],\n sha256: (bytes: Uint8Array) => Promise<string> | string = webCryptoSha256,\n): AssetResolver {\n const map = new Map(entries.map((e) => [e.declaration.id, e]));\n return {\n declarations: () => entries.map((e) => e.declaration),\n async resolve(id) {\n const e = map.get(id);\n if (!e) throw new SealpixelError('MISSING_ASSET', `asset \"${id}\" is not declared`);\n return verify(id, e.declaration, e.bytes, sha256);\n },\n };\n}\n\nasync function verify(\n id: string,\n decl: AssetDeclaration,\n bytes: Uint8Array,\n sha256: (bytes: Uint8Array) => Promise<string> | string,\n): Promise<Uint8Array> {\n const actual = await sha256(bytes);\n if (actual !== decl.hash) {\n throw new SealpixelError(\n 'MISSING_ASSET',\n `asset \"${id}\" hash mismatch: expected ${decl.hash}, got ${actual}`,\n );\n }\n return bytes;\n}\n\nexport async function webCryptoSha256(bytes: Uint8Array): Promise<string> {\n const digest = await crypto.subtle.digest('SHA-256', bytes as BufferSource);\n return Array.from(new Uint8Array(digest), (b) => b.toString(16).padStart(2, '0')).join('');\n}\n\n/** Id of the asset a `MISSING_ASSET` error refers to, if the error carries it. */\nexport function missingAssetId(error: unknown): string | null {\n if (!(error instanceof Error) || error.name !== 'MISSING_ASSET') return null;\n const details = (error as { details?: { assetId?: unknown } }).details;\n if (details && typeof details.assetId === 'string') return details.assetId;\n const m = /asset \"([^\"]+)\"/.exec(error.message);\n return m?.[1] ?? null;\n}\n\n/**\n * Runs `fn`, and whenever it fails with `MISSING_ASSET`, resolves that asset,\n * stores it with `put`, and retries. Gives up after `limit` distinct assets.\n */\nexport async function withAssets<T>(\n fn: () => Promise<T>,\n resolver: AssetResolver | undefined,\n put: (id: string, bytes: Uint8Array) => Promise<void> | void,\n limit = 16,\n): Promise<T> {\n const loaded = new Set<string>();\n for (;;) {\n try {\n return await fn();\n } catch (error) {\n const id = missingAssetId(error);\n if (!id || !resolver || loaded.has(id) || loaded.size >= limit) throw error;\n const bytes = await resolver.resolve(id);\n await put(id, bytes);\n loaded.add(id);\n }\n }\n}\n\n/** Uses a loaded core to hash, so the value equals the core's own sha256. */\nexport function wasmSha256(wasm: SealpixelWasm): (bytes: Uint8Array) => string {\n return (bytes) => wasm.sha256Hex(bytes);\n}\n"]}
|
package/dist/canonical-json.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../src/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAiB;IAClD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;YAC9F,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5D,KAAK,QAAQ;YACX,MAAM;QACR;YACE,MAAM,IAAI,SAAS,CAAC,mCAAmC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,GAAG,GAAG,KAAe,CAAC;IAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACnG,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAA+B,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;aACpE,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAE,GAA+B,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAC5F,CAAC;QACF,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../src/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAiB;IAClD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;YAC9F,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5D,KAAK,QAAQ;YACX,MAAM;QACR;YACE,MAAM,IAAI,SAAS,CAAC,mCAAmC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,GAAG,GAAG,KAAe,CAAC;IAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACnG,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAA+B,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;aACpE,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAE,GAA+B,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAC5F,CAAC;QACF,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["/**\n * Deterministic JSON serialisation: object keys sorted, no whitespace,\n * `undefined` properties dropped. Used for hashes and server job keys so the\n * same logical value always yields the same string on every runtime.\n *\n * Throws on values JSON cannot represent (functions, symbols, bigint, cycles)\n * and on non-finite numbers, which `JSON.stringify` would silently turn into\n * `null`.\n */\nexport function canonicalJson(value: unknown): string {\n return serialize(value, new Set());\n}\n\nfunction serialize(value: unknown, seen: Set<object>): string {\n if (value === null) return 'null';\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n case 'boolean':\n return value ? 'true' : 'false';\n case 'number':\n if (!Number.isFinite(value)) throw new TypeError(`canonicalJson: non-finite number ${value}`);\n return Object.is(value, -0) ? '0' : JSON.stringify(value);\n case 'object':\n break;\n default:\n throw new TypeError(`canonicalJson: cannot serialise ${typeof value}`);\n }\n const obj = value as object;\n if (seen.has(obj)) throw new TypeError('canonicalJson: circular structure');\n seen.add(obj);\n try {\n if (Array.isArray(obj)) {\n return `[${obj.map((item) => (item === undefined ? 'null' : serialize(item, seen))).join(',')}]`;\n }\n const keys = Object.keys(obj)\n .filter((key) => (obj as Record<string, unknown>)[key] !== undefined)\n .sort();\n const parts = keys.map(\n (key) => `${JSON.stringify(key)}:${serialize((obj as Record<string, unknown>)[key], seen)}`,\n );\n return `{${parts.join(',')}}`;\n } finally {\n seen.delete(obj);\n }\n}\n"]}
|
package/dist/compile.d.ts
CHANGED
|
@@ -27,4 +27,3 @@ export type PipelineStage = {
|
|
|
27
27
|
export declare function toPipeline(doc: Document, registry: Registry, ctx: PlanContext): PipelineStage[];
|
|
28
28
|
/** Converts a run of core pipeline stages into Rust `Stage` values. */
|
|
29
29
|
export declare function toCoreStages(stages: readonly PipelineStage[]): Stage[];
|
|
30
|
-
//# sourceMappingURL=compile.d.ts.map
|
package/dist/compile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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","sourcesContent":["import { SealpixelError } from './errors.js';\nimport type { Stage } from './plan.js';\nimport type { AnyPlugin, Document, PlanContext, StageParams } from './plugin.js';\nimport type { Registry } from './registry.js';\nimport type { EditLog } from './types.js';\n\n/**\n * Folds `ops[0..upTo)` into the derived document. Pure. Ops with unknown\n * types (only present when parsed with `tolerateUnknown`) are skipped.\n */\nexport function compile(log: EditLog, registry: Registry, upTo: number = log.ops.length): Document {\n const doc = registry.initialDocument() as Record<string, unknown>;\n const end = Math.max(0, Math.min(upTo, log.ops.length));\n for (let i = 0; i < end; i++) {\n const op = log.ops[i] as unknown as { type: string };\n const entry = registry.byOpType.get(op.type);\n if (!entry) continue;\n doc[entry.plugin.id] = entry.def.reduce(doc[entry.plugin.id], op);\n }\n return doc as Document;\n}\n\n/** A stage in the full pipeline, before it is split into core and external segments. */\nexport type PipelineStage =\n | { kind: 'core'; name: Stage['kind']; order: number; params: StageParams }\n | { kind: 'js' | 'wasm'; name: string; order: number; plugin: AnyPlugin; params: StageParams };\n\n/**\n * Asks every plugin for its stage parameters and produces the ordered stage\n * list. Core stages with the same name are shallow-merged in plugin order.\n */\nexport function toPipeline(doc: Document, registry: Registry, ctx: PlanContext): PipelineStage[] {\n const stages: PipelineStage[] = [];\n const coreByName = new Map<string, Extract<PipelineStage, { kind: 'core' }>>();\n for (const plugin of registry.plugins) {\n const params = plugin.toPlan((doc as Record<string, unknown>)[plugin.id], {\n ...ctx,\n options: plugin.options,\n });\n if (params === null) continue;\n if (plugin.kernel.kind === 'core') {\n const name = plugin.stage.name as Stage['kind'];\n const existing = coreByName.get(name);\n if (existing) {\n existing.params = { ...existing.params, ...params };\n continue;\n }\n const stage = { kind: 'core' as const, name, order: plugin.stage.order, params };\n coreByName.set(name, stage);\n stages.push(stage);\n } else {\n stages.push({\n kind: plugin.kernel.kind,\n name: plugin.stage.name,\n order: plugin.stage.order,\n plugin,\n params,\n });\n }\n }\n return stages.sort((a, b) => a.order - b.order);\n}\n\n/** Converts a run of core pipeline stages into Rust `Stage` values. */\nexport function toCoreStages(stages: readonly PipelineStage[]): Stage[] {\n return stages.map((s) => {\n if (s.kind !== 'core') {\n throw new SealpixelError('INVALID_EDIT_LOG', `stage \"${s.name}\" is not a core stage`);\n }\n return { kind: s.name, ...s.params } as Stage;\n });\n}\n"]}
|
package/dist/embedded.d.ts
CHANGED
|
@@ -10,4 +10,3 @@ export declare function readEmbeddedEditLog(bytes: Uint8Array): string | null;
|
|
|
10
10
|
* Returns null when nothing is embedded.
|
|
11
11
|
*/
|
|
12
12
|
export declare function readEmbeddedState(bytes: Uint8Array, registry: Registry): History | null;
|
|
13
|
-
//# sourceMappingURL=embedded.d.ts.map
|
package/dist/embedded.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded.js","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"embedded.js","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Reads the edit log Sealpixel embeds in exported files (PNG iTXt, JPEG APP1\n * XMP, WebP XMP chunk). A header scan only: no pixel decoding, no wasm.\n * Mirrors `sealpixel_core::codec::embedded`.\n */\nimport { SealpixelError } from './errors.js';\nimport type { Registry } from './registry.js';\nimport type { EditLog, History } from './types.js';\n\nexport const PNG_KEYWORD = 'sealpixel:editlog';\n/** Keyword written by releases before the rename (Pincel). Read, never written. */\nexport const PNG_KEYWORD_LEGACY = 'pincel:editlog';\nconst XMP_HEADER = 'http://ns.adobe.com/xap/1.0/\\0';\nconst ATTR = 'sealpixel:editLog=\"';\nconst ATTR_LEGACY = 'pincel:editLog=\"';\n\n/** The raw embedded text, or null when the file carries none. */\nexport function readEmbeddedEditLog(bytes: Uint8Array): string | null {\n if (startsWith(bytes, [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a])) return readPng(bytes);\n if (startsWith(bytes, [0xff, 0xd8, 0xff])) return readJpeg(bytes);\n if (bytes.length >= 12 && ascii(bytes, 0, 4) === 'RIFF' && ascii(bytes, 8, 12) === 'WEBP') {\n return readWebp(bytes);\n }\n throw new SealpixelError('UNSUPPORTED_FORMAT', 'unknown container');\n}\n\n/**\n * Parses and validates an embedded `{ log, index }` state through `registry`.\n * Returns null when nothing is embedded.\n */\nexport function readEmbeddedState(bytes: Uint8Array, registry: Registry): History | null {\n const text = readEmbeddedEditLog(bytes);\n if (text === null) return null;\n let value: unknown;\n try {\n value = JSON.parse(text);\n } catch (error) {\n throw new SealpixelError('INVALID_EDIT_LOG', `embedded edit log is not JSON: ${String(error)}`);\n }\n const state = value as { log?: unknown; index?: unknown };\n const log: EditLog = registry.parseEditLog(state.log);\n const index = typeof state.index === 'number' ? state.index : log.ops.length;\n return { log, index: Math.max(0, Math.min(Math.floor(index), log.ops.length)) };\n}\n\nfunction readPng(bytes: Uint8Array): string | null {\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n let pos = 8;\n while (pos + 8 <= bytes.length) {\n const len = view.getUint32(pos);\n const kind = ascii(bytes, pos + 4, pos + 8);\n const start = pos + 8;\n const end = start + len;\n if (end > bytes.length) return null;\n if (kind === 'iTXt') {\n const data = bytes.subarray(start, end);\n const nul = data.indexOf(0);\n const keyword = nul > 0 ? ascii(data, 0, nul) : '';\n if (keyword === PNG_KEYWORD || keyword === PNG_KEYWORD_LEGACY) {\n let i = nul + 1;\n const compressed = data[i] !== 0;\n i += 2;\n i = data.indexOf(0, i) + 1; // language tag\n i = data.indexOf(0, i) + 1; // translated keyword\n if (compressed || i <= 0) return null;\n return new TextDecoder().decode(data.subarray(i));\n }\n }\n if (kind === 'IEND') return null;\n pos = end + 4;\n }\n return null;\n}\n\nfunction readJpeg(bytes: Uint8Array): string | null {\n let pos = 2;\n while (pos + 4 <= bytes.length) {\n if (bytes[pos] !== 0xff) return null;\n const marker = bytes[pos + 1];\n if (marker === 0xda || marker === 0xd9) return null;\n const len = ((bytes[pos + 2] as number) << 8) | (bytes[pos + 3] as number);\n const start = pos + 4;\n const end = pos + 2 + len;\n if (end > bytes.length) return null;\n if (marker === 0xe1 && ascii(bytes, start, start + XMP_HEADER.length) === XMP_HEADER) {\n const xmp = new TextDecoder().decode(bytes.subarray(start + XMP_HEADER.length, end));\n const payload = payloadFromXmp(xmp);\n if (payload !== null) return payload;\n }\n pos = end;\n }\n return null;\n}\n\nfunction readWebp(bytes: Uint8Array): string | null {\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n let pos = 12;\n while (pos + 8 <= bytes.length) {\n const kind = ascii(bytes, pos, pos + 4);\n const len = view.getUint32(pos + 4, true);\n const start = pos + 8;\n const end = start + len;\n if (end > bytes.length) return null;\n if (kind === 'XMP ')\n return payloadFromXmp(new TextDecoder().decode(bytes.subarray(start, end)));\n pos = end + (len & 1);\n }\n return null;\n}\n\n/** Files written before the rename carry `pincel:editLog`; both attributes read back. */\nfunction payloadFromXmp(xmp: string): string | null {\n let attr = ATTR;\n let at = xmp.indexOf(attr);\n if (at < 0) {\n attr = ATTR_LEGACY;\n at = xmp.indexOf(attr);\n }\n if (at < 0) return null;\n const start = at + attr.length;\n const end = xmp.indexOf('\"', start);\n if (end < 0) return null;\n return xmp\n .slice(start, end)\n .replaceAll('"', '\"')\n .replaceAll(''', \"'\")\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('&', '&');\n}\n\nfunction startsWith(bytes: Uint8Array, prefix: number[]): boolean {\n return prefix.every((b, i) => bytes[i] === b);\n}\n\nfunction ascii(bytes: Uint8Array, start: number, end: number): string {\n let out = '';\n for (let i = start; i < end && i < bytes.length; i++)\n out += String.fromCharCode(bytes[i] as number);\n return out;\n}\n"]}
|
package/dist/errors.d.ts
CHANGED
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACrB,IAAI,CAAqB;IAClC,OAAO,CAAU;IAE1B,YAAY,IAAwB,EAAE,OAAe,EAAE,OAAiB;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,IAAI,CAAC,KAAc;QACxB,IAAI,KAAK,YAAY,cAAc;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,KAAK,YAAY,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,cAAc,CACvB,KAAK,CAAC,IAA0B,EAChC,KAAK,CAAC,OAAO,EACZ,KAA+B,CAAC,OAAO,CACzC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,cAAc,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACrB,IAAI,CAAqB;IAClC,OAAO,CAAU;IAE1B,YAAY,IAAwB,EAAE,OAAe,EAAE,OAAiB;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,IAAI,CAAC,KAAc;QACxB,IAAI,KAAK,YAAY,cAAc;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,KAAK,YAAY,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,cAAc,CACvB,KAAK,CAAC,IAA0B,EAChC,KAAK,CAAC,OAAO,EACZ,KAA+B,CAAC,OAAO,CACzC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,cAAc,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF","sourcesContent":["export type SealpixelErrorCode =\n | 'SOURCE_MISMATCH'\n | 'INVALID_EDIT_LOG'\n | 'UNKNOWN_PLUGIN'\n | 'OPTION_VIOLATION'\n | 'ABORTED'\n | 'NO_SOURCE'\n | 'NOT_RESIDENT'\n | 'DOWNLOAD_UNSUPPORTED'\n | 'KERNEL_FAILED'\n | 'INVALID_REQUEST'\n | 'SOURCE_UNAVAILABLE'\n | 'FORBIDDEN_SOURCE'\n | 'FORBIDDEN_DESTINATION'\n | 'TIMEOUT'\n | import('@sealpixel/wasm').SealpixelErrorCode;\n\nexport class SealpixelError extends Error {\n override readonly name: SealpixelErrorCode;\n readonly details: unknown;\n\n constructor(code: SealpixelErrorCode, message: string, details?: unknown) {\n super(message);\n this.name = code;\n this.details = details;\n }\n\n /** Re-throws core errors unchanged and wraps everything else. */\n static from(error: unknown): SealpixelError {\n if (error instanceof SealpixelError) return error;\n if (error instanceof Error && /^[A-Z_]+$/.test(error.name)) {\n return new SealpixelError(\n error.name as SealpixelErrorCode,\n error.message,\n (error as { details?: unknown }).details,\n );\n }\n return new SealpixelError('INVALID_EDIT_LOG', String(error));\n }\n}\n"]}
|
|
@@ -10,4 +10,3 @@ import type { AnyPlugin, KernelContext, StageParams } from './plugin.js';
|
|
|
10
10
|
export declare function runExternalKernel(plugin: AnyPlugin, image: RgbaBuffer, params: StageParams, ctx: KernelContext): Promise<RgbaBuffer>;
|
|
11
11
|
/** Drops cached kernel instances (tests, hot reload). */
|
|
12
12
|
export declare function resetExternalKernels(): void;
|
|
13
|
-
//# sourceMappingURL=external-kernel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-kernel.js","sourceRoot":"","sources":["../src/external-kernel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"external-kernel.js","sourceRoot":"","sources":["../src/external-kernel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Runs third-party kernels between core segments: JavaScript functions, or\n * WebAssembly modules implementing the Sealpixel kernel ABI v1\n * (`sealpixel_alloc`, `sealpixel_free`, `sealpixel_run`, `sealpixel_kernel_abi`).\n * WASM kernels transform the RGBA buffer in place; dimensions never change.\n */\nimport type { RgbaBuffer } from '@sealpixel/wasm';\nimport { SealpixelError } from './errors.js';\nimport type { AnyPlugin, KernelContext, StageParams } from './plugin.js';\n\ninterface KernelExports {\n memory: WebAssembly.Memory;\n sealpixel_alloc(len: number): number;\n sealpixel_free(ptr: number, len: number): void;\n sealpixel_run(\n imgPtr: number,\n width: number,\n height: number,\n paramsPtr: number,\n paramsLen: number,\n ): number;\n sealpixel_kernel_abi?(): number;\n}\n\nconst instances = new Map<string, Promise<KernelExports>>();\n\n/** Runs `plugin.kernel` on `image` with `params`. */\nexport async function runExternalKernel(\n plugin: AnyPlugin,\n image: RgbaBuffer,\n params: StageParams,\n ctx: KernelContext,\n): Promise<RgbaBuffer> {\n const kernel = plugin.kernel;\n if (kernel.kind === 'js') return kernel.run(image, params, ctx);\n if (kernel.kind !== 'wasm') {\n throw new SealpixelError(\n 'INVALID_EDIT_LOG',\n `plugin \"${plugin.id}\" has a core kernel but no core stage`,\n );\n }\n const exports = await instantiate(plugin.id, kernel.module);\n const paramsBytes = new TextEncoder().encode(JSON.stringify(params));\n const len = image.data.byteLength;\n const imgPtr = exports.sealpixel_alloc(len);\n const paramsPtr = exports.sealpixel_alloc(paramsBytes.byteLength);\n try {\n new Uint8Array(exports.memory.buffer, imgPtr, len).set(image.data);\n new Uint8Array(exports.memory.buffer, paramsPtr, paramsBytes.byteLength).set(paramsBytes);\n const status = exports.sealpixel_run(\n imgPtr,\n image.width,\n image.height,\n paramsPtr,\n paramsBytes.byteLength,\n );\n if (status !== 0) {\n throw new SealpixelError('KERNEL_FAILED', `plugin \"${plugin.id}\" kernel returned ${status}`, {\n status,\n });\n }\n // Re-read the buffer: memory may have grown and detached the old view.\n const out = new Uint8Array(len);\n out.set(new Uint8Array(exports.memory.buffer, imgPtr, len));\n return { width: image.width, height: image.height, data: out };\n } finally {\n exports.sealpixel_free(imgPtr, len);\n exports.sealpixel_free(paramsPtr, paramsBytes.byteLength);\n }\n}\n\nfunction instantiate(id: string, load: () => Promise<WebAssembly.Module>): Promise<KernelExports> {\n let pending = instances.get(id);\n if (!pending) {\n pending = (async () => {\n const module = await load();\n const instance = await WebAssembly.instantiate(module, {});\n const exports = instance.exports as unknown as KernelExports;\n for (const name of [\n 'memory',\n 'sealpixel_alloc',\n 'sealpixel_free',\n 'sealpixel_run',\n ] as const) {\n if (!(name in exports)) {\n throw new SealpixelError(\n 'KERNEL_FAILED',\n `plugin \"${id}\" kernel module lacks export \"${name}\"`,\n );\n }\n }\n const abi = exports.sealpixel_kernel_abi?.() ?? 1;\n if (abi !== 1)\n throw new SealpixelError(\n 'KERNEL_FAILED',\n `plugin \"${id}\" kernel ABI ${abi} is not supported`,\n );\n return exports;\n })().catch((error) => {\n instances.delete(id);\n throw error;\n });\n instances.set(id, pending);\n }\n return pending;\n}\n\n/** Drops cached kernel instances (tests, hot reload). */\nexport function resetExternalKernels(): void {\n instances.clear();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/generated/geometry.ts"],"names":[],"mappings":"AAAA,kFAAkF"}
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/generated/geometry.ts"],"names":[],"mappings":"AAAA,kFAAkF","sourcesContent":["// Generated by scripts/gen-plan-types.sh from crates/sealpixel-core. Do not edit.\n\n// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.\n\nexport type Geometry = { stages: Array<StageGeometry>, logicalOut: Size, actualOut: Size, \n/**\n * `actual_in.width / logical_in.width` of the source: the buffer scale.\n */\nscale: number, };\n\nexport type Size = { width: number, height: number, };\n\n/**\n * Geometry of one stage in both coordinate systems.\n */\nexport type StageGeometry = { name: string, logicalIn: Size, logicalOut: Size, actualIn: Size, actualOut: Size, \n/**\n * Crop only: maps actual output pixel coordinates to actual input pixel\n * coordinates (inverse mapping, what the sampler needs).\n */\ntransform?: [number, number, number, number, number, number], \n/**\n * Resize with `cover`: the source rectangle (actual px) that is scaled to the output.\n */\ncropRect?: [number, number, number, number], };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/generated/output.ts"],"names":[],"mappings":"AAAA,kFAAkF"}
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/generated/output.ts"],"names":[],"mappings":"AAAA,kFAAkF","sourcesContent":["// Generated by scripts/gen-plan-types.sh from crates/sealpixel-core. Do not edit.\n\n// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.\n\n/**\n * JPEG chroma subsampling.\n */\nexport type ChromaSubsampling = \"4:2:0\" | \"4:4:4\";\n\n/**\n * Output container format.\n */\nexport type Format = \"png\" | \"jpeg\" | \"webp\";\n\n/**\n * Encoder parameters. Mirrors `RenderOptions.output` on the TypeScript side.\n */\nexport type OutputOptions = { format: Format, \n/**\n * 0.0..=1.0, lossy formats only. Ignored by PNG and lossless WebP.\n */\nquality?: number, \n/**\n * JPEG only.\n */\nprogressive?: boolean, \n/**\n * JPEG only.\n */\nchromaSubsampling?: ChromaSubsampling, \n/**\n * WebP only. V1 always encodes lossless; `false` is accepted and treated as lossless.\n */\nlossless?: boolean, \n/**\n * Opaque colour alpha is flattened onto for formats without alpha (JPEG).\n */\nbackground?: [number, number, number], \n/**\n * UTF-8 text stored in the container's metadata (PNG iTXt, JPEG XMP,\n * WebP XMP). Sealpixel stores the canonical edit log here. Pixels are unaffected.\n */\nembed?: string, };\n"]}
|
package/dist/generated/plan.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/generated/plan.ts"],"names":[],"mappings":"AAAA,kFAAkF"}
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/generated/plan.ts"],"names":[],"mappings":"AAAA,kFAAkF","sourcesContent":["// Generated by scripts/gen-plan-types.sh from crates/sealpixel-core. Do not edit.\n\n// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.\n\nexport type Anchor = \"tl\" | \"tc\" | \"tr\" | \"cl\" | \"c\" | \"cr\" | \"bl\" | \"bc\" | \"br\";\n\n/**\n * Draws shapes and text over the image in image space.\n */\nexport type AnnotateStage = { shapes?: Array<Shape>, };\n\n/**\n * Colour adjustments. All parameters are identity at their defaults.\n */\nexport type ColorStage = { brightness?: number, contrast?: number, saturation?: number, exposure?: number, gamma?: number, clarity?: number, vignette?: number, \n/**\n * 4x5 colour matrix (rows r, g, b, a; columns r, g, b, a, offset). Identity when absent.\n */\nmatrix?: [[number, number, number, number, number], [number, number, number, number, number], [number, number, number, number, number], [number, number, number, number, number]], \n/**\n * Blend between identity (0) and the matrix (1).\n */\nstrength?: number, };\n\n/**\n * Shape that keeps its interior; everything outside becomes transparent.\n */\nexport type CropMask = \"circle\";\n\n/**\n * Flip, rotate about the centre, then crop a rectangle of the rotated bounding box.\n */\nexport type CropStage = { \n/**\n * Radians, clockwise positive in image space (y down).\n */\nrotation?: number, flipX?: boolean, flipY?: boolean, \n/**\n * In rotated-bounding-box space, 0..1.\n */\nrect?: Rect, \n/**\n * Colour for areas outside the source. Transparent when absent.\n */\nfill?: [number, number, number, number], \n/**\n * Alpha mask applied to the crop output, for round avatars. Absent = none.\n */\nmask?: CropMask, };\n\nexport type Fit = \"contain\" | \"cover\" | \"fill\";\n\nexport type FrameKind = \"solid\" | \"inset\" | \"polaroid\";\n\n/**\n * Draws a frame inside the image bounds. Dimensions do not change.\n */\nexport type FrameStage = { \n/**\n * Named `style` because `kind` is the stage discriminator.\n */\nstyle: FrameKind, color: [number, number, number, number], \n/**\n * Logical pixels.\n */\nthickness: number, \n/**\n * Corner radius of the inner edge, logical pixels.\n */\nradius?: number, };\n\n/**\n * Normalised rectangle, 0..1 in the space named by the stage.\n */\nexport type Rect = { x: number, y: number, width: number, height: number, };\n\nexport type RedactMode = \"pixelate\" | \"blur\" | \"mosaic\";\n\n/**\n * Pixelate, blur or mosaic regions. Coordinates are in the stage input's image space.\n */\nexport type RedactStage = { regions?: Array<Redaction>, };\n\nexport type Redaction = { region: Region, mode: RedactMode, \n/**\n * Pixelate or mosaic cell size, or blur diameter, in logical source pixels.\n */\namount: number, };\n\n/**\n * A region in normalised image space.\n */\nexport type Region = { \"kind\": \"rect\", rect: Rect, } | { \"kind\": \"path\", points: Array<[number, number]>, };\n\n/**\n * The flat, versioned plan the executor runs. This is not the edit log: the\n * TypeScript `compile()` reduces the log to this structure.\n */\nexport type RenderPlan = { version: number, source: SourceInfo, \n/**\n * 1.0 for a truth render, below 1.0 when the buffer is a working copy.\n */\nbufferScale: number, stages?: Array<Stage>, };\n\n/**\n * Scale to a target size in logical output pixels.\n */\nexport type ResizeStage = { width?: number, height?: number, fit?: Fit, upscale?: boolean, };\n\n/**\n * A vector shape in normalised image space. Lengths are logical source pixels.\n */\nexport type Shape = { \"kind\": \"rect\", rect: Rect, stroke?: Stroke, fill?: [number, number, number, number], \n/**\n * Corner radius in logical pixels.\n */\nradius?: number, \n/**\n * Radians, clockwise, about the rect centre.\n */\nrotation?: number, } | { \"kind\": \"ellipse\", rect: Rect, stroke?: Stroke, fill?: [number, number, number, number], \n/**\n * Radians, clockwise, about the rect centre.\n */\nrotation?: number, } | { \"kind\": \"line\", from: [number, number], to: [number, number], stroke: Stroke, } | { \"kind\": \"arrow\", from: [number, number], to: [number, number], stroke: Stroke, \n/**\n * Head length in logical pixels; defaults to four stroke widths.\n */\nhead?: number, } | { \"kind\": \"path\", points: Array<[number, number]>, stroke: Stroke, closed?: boolean, fill?: [number, number, number, number], } | { \"kind\": \"text\", \n/**\n * Top-left anchor and wrap width. Height is advisory for the UI.\n */\nrect: Rect, text: string, \n/**\n * Asset id of a TrueType or OpenType font.\n */\nfont: string, \n/**\n * Font size in logical pixels.\n */\nsize: number, color: [number, number, number, number], align?: TextAlign, \n/**\n * Multiplier of the font size.\n */\nlineHeight?: number, background?: [number, number, number, number], \n/**\n * Background padding in logical pixels.\n */\npadding?: number, \n/**\n * Radians, clockwise, about the rect centre.\n */\nrotation?: number, };\n\n/**\n * Logical (full-resolution) dimensions of the source image after EXIF\n * orientation. The buffer handed to the executor may be a smaller working copy.\n */\nexport type SourceInfo = { width: number, height: number, };\n\n/**\n * One stage of the fixed-order pipeline. An absent stage is the identity.\n * Order is enforced by the TypeScript compiler, not by the executor.\n */\nexport type Stage = { \"kind\": \"color\" } & ColorStage | { \"kind\": \"redact\" } & RedactStage | { \"kind\": \"annotate\" } & AnnotateStage | { \"kind\": \"crop\" } & CropStage | { \"kind\": \"sticker\" } & StickerStage | { \"kind\": \"frame\" } & FrameStage | { \"kind\": \"watermark\" } & WatermarkStage | { \"kind\": \"resize\" } & ResizeStage;\n\n/**\n * An image asset placed in crop space.\n */\nexport type Sticker = { \n/**\n * Asset id of a PNG, JPEG or WebP.\n */\nasset: string, \n/**\n * Placement in crop space, 0..1.\n */\nrect: Rect, \n/**\n * Radians, clockwise, about the rect centre.\n */\nrotation?: number, opacity?: number, flipX?: boolean, flipY?: boolean, };\n\nexport type StickerStage = { items?: Array<Sticker>, };\n\n/**\n * Stroke style. Width is in logical source pixels.\n */\nexport type Stroke = { color: [number, number, number, number], width: number, };\n\nexport type TextAlign = \"left\" | \"center\" | \"right\";\n\nexport type Tile = { \n/**\n * Gaps between tiles, logical pixels.\n */\ngapX: number, gapY: number, \n/**\n * Radians, applied to every tile about its centre.\n */\nrotation?: number, };\n\nexport type WatermarkSource = { \"kind\": \"asset\", asset: string, } | { \"kind\": \"text\", text: string, font: string, color: [number, number, number, number], };\n\n/**\n * One stamp (image or text) at an anchor, or tiled across the image.\n */\nexport type WatermarkStage = { source: WatermarkSource, anchor?: Anchor, \n/**\n * Distance from the edges, logical pixels.\n */\nmargin?: number, \n/**\n * Stamp width as a fraction of the image width (text: font size as a fraction).\n */\nscale?: number, opacity?: number, tile?: Tile, };\n"]}
|
package/dist/history.d.ts
CHANGED
|
@@ -15,4 +15,3 @@ export declare function undo(history: History): History;
|
|
|
15
15
|
export declare function redo(history: History): History;
|
|
16
16
|
/** A non-finite `index`, such as `NaN` from a failed parse, leaves the history unchanged. */
|
|
17
17
|
export declare function timeTravel(history: History, index: number): History;
|
|
18
|
-
//# sourceMappingURL=history.d.ts.map
|
package/dist/history.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAEA,8FAA8F;AAC9F,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,QAAgB,GAAG,CAAC,GAAG,CAAC,MAAM;IACxE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,EAAa;IACtD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IACtE,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAO,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAgB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAgB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/E,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,KAAa;IACxD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5C,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,GAAY;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAEA,8FAA8F;AAC9F,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,QAAgB,GAAG,CAAC,GAAG,CAAC,MAAM;IACxE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,EAAa;IACtD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IACtE,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAO,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAgB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAgB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/E,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,KAAa;IACxD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5C,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,GAAY;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC","sourcesContent":["import type { EditLog, History, Operation } from './types.js';\n\n/** A non-finite `index`, such as `NaN`, counts as no index: the history starts at the end. */\nexport function createHistory(log: EditLog, index: number = log.ops.length): History {\n return { log, index: clampIndex(Number.isFinite(index) ? index : log.ops.length, log) };\n}\n\n/** The log as of the current position: `ops[0..index)`. */\nexport function current(history: History): EditLog {\n return { ...history.log, ops: history.log.ops.slice(0, history.index) };\n}\n\n/**\n * Appends `op` at the current position, discarding any redo tail. An op whose\n * id already exists anywhere in the log is ignored, which makes retried\n * dispatches idempotent.\n */\nexport function dispatch(history: History, op: Operation): History {\n const { log, index } = history;\n if (log.ops.some((existing) => existing.id === op.id)) return history;\n const ops = [...log.ops.slice(0, index), op];\n return { log: { ...log, ops }, index: ops.length };\n}\n\nexport function canUndo(history: History): boolean {\n return history.index > 0;\n}\n\nexport function canRedo(history: History): boolean {\n return history.index < history.log.ops.length;\n}\n\nexport function undo(history: History): History {\n return canUndo(history) ? { ...history, index: history.index - 1 } : history;\n}\n\nexport function redo(history: History): History {\n return canRedo(history) ? { ...history, index: history.index + 1 } : history;\n}\n\n/** A non-finite `index`, such as `NaN` from a failed parse, leaves the history unchanged. */\nexport function timeTravel(history: History, index: number): History {\n if (!Number.isFinite(index)) return history;\n return { ...history, index: clampIndex(index, history.log) };\n}\n\nfunction clampIndex(index: number, log: EditLog): number {\n return Math.max(0, Math.min(Math.floor(index), log.ops.length));\n}\n"]}
|
package/dist/image-size.d.ts
CHANGED
|
@@ -11,4 +11,3 @@ export declare function readImageSize(bytes: Uint8Array): ImageSize;
|
|
|
11
11
|
* encoder. Lambda sizes: 12 MP needs 1024 MB, 24 MP 1769 MB, 50 MP 2048 MB.
|
|
12
12
|
*/
|
|
13
13
|
export declare function estimateMemoryMB(width: number, height: number): number;
|
|
14
|
-
//# sourceMappingURL=image-size.d.ts.map
|
package/dist/image-size.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-size.js","sourceRoot":"","sources":["../src/image-size.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"image-size.js","sourceRoot":"","sources":["../src/image-size.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Reads width, height and container from the first bytes of a PNG, JPEG or\n * WebP without decoding pixels. Used to enforce size limits before decoding.\n * EXIF orientation is not applied; callers only need the pixel count.\n */\nimport { SealpixelError } from './errors.js';\n\nexport interface ImageSize {\n width: number;\n height: number;\n mimeType: 'image/png' | 'image/jpeg' | 'image/webp';\n}\n\nexport function readImageSize(bytes: Uint8Array): ImageSize {\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n if (\n bytes.length >= 24 &&\n bytes[0] === 0x89 &&\n bytes[1] === 0x50 &&\n bytes[2] === 0x4e &&\n bytes[3] === 0x47\n ) {\n return { width: view.getUint32(16), height: view.getUint32(20), mimeType: 'image/png' };\n }\n if (bytes.length >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8) {\n let pos = 2;\n while (pos + 9 < bytes.length) {\n if (bytes[pos] !== 0xff) {\n pos++;\n continue;\n }\n const marker = bytes[pos + 1] as number;\n if (\n marker === 0xd8 ||\n (marker >= 0xd0 && marker <= 0xd7) ||\n marker === 0x01 ||\n marker === 0xff\n ) {\n pos += marker === 0xff ? 1 : 2;\n continue;\n }\n const len = view.getUint16(pos + 2);\n const isSof =\n marker >= 0xc0 && marker <= 0xcf && marker !== 0xc4 && marker !== 0xc8 && marker !== 0xcc;\n if (isSof) {\n return {\n height: view.getUint16(pos + 5),\n width: view.getUint16(pos + 7),\n mimeType: 'image/jpeg',\n };\n }\n if (marker === 0xd9 || marker === 0xda) break;\n pos += 2 + len;\n }\n throw new SealpixelError('DECODE_FAILED', 'JPEG has no frame header');\n }\n if (bytes.length >= 30 && ascii(bytes, 0, 4) === 'RIFF' && ascii(bytes, 8, 12) === 'WEBP') {\n const chunk = ascii(bytes, 12, 16);\n if (chunk === 'VP8 ') {\n return {\n width: view.getUint16(26, true) & 0x3fff,\n height: view.getUint16(28, true) & 0x3fff,\n mimeType: 'image/webp',\n };\n }\n if (chunk === 'VP8L') {\n const b0 = bytes[21] as number;\n const b1 = bytes[22] as number;\n const b2 = bytes[23] as number;\n const b3 = bytes[24] as number;\n const width = 1 + (((b1 & 0x3f) << 8) | b0);\n const height = 1 + (((b3 & 0x0f) << 10) | (b2 << 2) | ((b1 & 0xc0) >> 6));\n return { width, height, mimeType: 'image/webp' };\n }\n if (chunk === 'VP8X') {\n const width =\n 1 + ((bytes[24] as number) | ((bytes[25] as number) << 8) | ((bytes[26] as number) << 16));\n const height =\n 1 + ((bytes[27] as number) | ((bytes[28] as number) << 8) | ((bytes[29] as number) << 16));\n return { width, height, mimeType: 'image/webp' };\n }\n }\n throw new SealpixelError('UNSUPPORTED_FORMAT', 'unknown container');\n}\n\n/**\n * Peak memory a server render needs: 24 bytes per pixel, six RGBA buffers of\n * the image, plus the runtime. Measured on Node 24: 12 wasm bytes per pixel\n * for the heaviest stage, the decoded and the rendered image in JS, and the\n * encoder. Lambda sizes: 12 MP needs 1024 MB, 24 MP 1769 MB, 50 MP 2048 MB.\n */\nexport function estimateMemoryMB(width: number, height: number): number {\n const megapixels = (width * height) / 1e6;\n return Math.ceil(megapixels * 6 * 4 + 256);\n}\n\nfunction ascii(bytes: Uint8Array, start: number, end: number): string {\n let s = '';\n for (let i = start; i < end; i++) s += String.fromCharCode(bytes[i] as number);\n return s;\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,4 +21,3 @@ export { WorkerRenderer } from './worker-renderer.js';
|
|
|
21
21
|
import type { EditLog, SourceDescriptor } from './types.js';
|
|
22
22
|
/** Creates an empty edit log for `source`, recording the registered plugin versions. */
|
|
23
23
|
export declare function createEditLog(source: SourceDescriptor, registry?: import('./registry.js').Registry): EditLog;
|
|
24
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAsB,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,OAAO,EACP,OAAO,EACP,aAAa,EACb,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,IAAI,GACL,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAkB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAyB,eAAe,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAQL,YAAY,EAQZ,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,GAMf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAwB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,EAIL,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,mBAAmB,GASpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,eAAe,EAGf,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAC3B,MAAwB,EACxB,QAA2C;IAE3C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AACpF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAsB,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,OAAO,EACP,OAAO,EACP,aAAa,EACb,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,IAAI,GACL,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAkB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAyB,eAAe,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAQL,YAAY,EAQZ,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,GAMf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAwB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,EAIL,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,mBAAmB,GASpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,eAAe,EAGf,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAC3B,MAAwB,EACxB,QAA2C;IAE3C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AACpF,CAAC","sourcesContent":["export {\n type AssetResolver,\n type AssetResolverOptions,\n createAssetResolver,\n missingAssetId,\n staticAssetResolver,\n wasmSha256,\n webCryptoSha256,\n withAssets,\n} from './assets.js';\nexport { canonicalJson } from './canonical-json.js';\nexport { compile, type PipelineStage, toCoreStages, toPipeline } from './compile.js';\nexport { PNG_KEYWORD, readEmbeddedEditLog, readEmbeddedState } from './embedded.js';\nexport { SealpixelError, type SealpixelErrorCode } from './errors.js';\nexport { resetExternalKernels, runExternalKernel } from './external-kernel.js';\nexport {\n canRedo,\n canUndo,\n createHistory,\n current,\n dispatch,\n redo,\n timeTravel,\n undo,\n} from './history.js';\nexport { estimateMemoryMB, type ImageSize, readImageSize } from './image-size.js';\nexport { InlineRenderer } from './inline-renderer.js';\nexport { configurePlugins, type PluginOptionsMap, pluginOptionsOf } from './options.js';\nexport {\n type ChromaSubsampling,\n type ColorStage,\n type CoreFormat,\n type CoreOutputOptions,\n type CropStage,\n type Fit,\n type Geometry,\n PLAN_VERSION,\n type PlanRect,\n type RenderPlan,\n type ResizeStage,\n type Size,\n type SourceInfo,\n type Stage,\n type StageGeometry,\n toRenderPlan,\n} from './plan.js';\nexport type * from './plugin.js';\nexport {\n createRegistry,\n type ParseIssue,\n type ParseOptions,\n type ParseResult,\n type RegisteredOperation,\n type Registry,\n} from './registry.js';\nexport { type PipelineOptions, render, runPipeline, toCoreOutput } from './render.js';\nexport type { Renderer } from './renderer.js';\nexport {\n type ExportRequest,\n type ExportResult,\n type LoadedSource,\n RendererCore,\n type RendererCoreOptions,\n type RendererLoadOptions,\n type RenderRequest,\n} from './renderer-core.js';\nexport {\n browserSaveFile,\n createEditorSession,\n type DownloadOptions,\n type EditorSession,\n type ExportOptions,\n type LoadOptions,\n type LoadSource,\n type PreviewState,\n type SessionOptions,\n type SessionState,\n} from './session.js';\nexport type * from './types.js';\nexport {\n type Transport,\n transferablesOf,\n type WorkerRequest,\n type WorkerResponse,\n webTransport,\n} from './worker-protocol.js';\nexport { WorkerRenderer } from './worker-renderer.js';\n\nimport type { EditLog, SourceDescriptor } from './types.js';\n\n/** Creates an empty edit log for `source`, recording the registered plugin versions. */\nexport function createEditLog(\n source: SourceDescriptor,\n registry?: import('./registry.js').Registry,\n): EditLog {\n return { version: 1, source, plugins: registry?.pluginVersions() ?? {}, ops: [] };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-renderer.js","sourceRoot":"","sources":["../src/inline-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuC,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAG5B,kHAAkH;AAClH,MAAM,OAAO,cAAc;IACjB,IAAI,GAAwB,IAAI,CAAC;IACxB,KAAK,CAAwB;IAE9C,YAAY,OAAuD;QACjE,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CACpF,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAiB,EAAE,EAAU,EAAE,OAA6B;QACrE,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,WAAuB,EAAE,UAA4B;QACzE,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,CAAC,sBAAsB,CAAC,KAAiB,EAAE,UAA4B;QAC1E,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,GAAsC;QACjD,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,GAAsC;QACjD,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,GAAwC;QACrD,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,MAAM;QACV,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,KAAiB;QAC1C,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC;IACD,iBAAiB;IACjB,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"inline-renderer.js","sourceRoot":"","sources":["../src/inline-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuC,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAG5B,kHAAkH;AAClH,MAAM,OAAO,cAAc;IACjB,IAAI,GAAwB,IAAI,CAAC;IACxB,KAAK,CAAwB;IAE9C,YAAY,OAAuD;QACjE,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CACpF,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAiB,EAAE,EAAU,EAAE,OAA6B;QACrE,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,WAAuB,EAAE,UAA4B;QACzE,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,CAAC,sBAAsB,CAAC,KAAiB,EAAE,UAA4B;QAC1E,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,GAAsC;QACjD,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,GAAsC;QACjD,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,GAAwC;QACrD,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,MAAM;QACV,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,KAAiB;QAC1C,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC;IACD,iBAAiB;IACjB,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF","sourcesContent":["import { loadSealpixelWasm, type RgbaBuffer, type SealpixelWasm } from '@sealpixel/wasm';\nimport type { Renderer } from './renderer.js';\nimport {\n RendererCore,\n type RendererCoreOptions,\n type RendererLoadOptions,\n} from './renderer-core.js';\nimport type { SourceDescriptor } from './types.js';\n\n/** Runs the renderer on the calling thread. Fallback where Workers are unavailable, and the server's renderer. */\nexport class InlineRenderer implements Renderer {\n private core: RendererCore | null = null;\n private readonly ready: Promise<RendererCore>;\n\n constructor(options: RendererCoreOptions & { wasm?: SealpixelWasm }) {\n this.ready = (options.wasm ? Promise.resolve(options.wasm) : loadSealpixelWasm()).then(\n (wasm) => {\n this.core = new RendererCore(wasm, options);\n return this.core;\n },\n );\n }\n\n async init() {\n return (await this.ready).info();\n }\n async load(bytes: Uint8Array, id: string, options?: RendererLoadOptions) {\n return (await this.ready).load(bytes, id, options);\n }\n async loadWorkingCopy(workingCopy: RgbaBuffer, descriptor: SourceDescriptor) {\n return (await this.ready).loadWorkingCopy(workingCopy, descriptor);\n }\n async loadWorkingCopyEncoded(bytes: Uint8Array, descriptor: SourceDescriptor) {\n return (await this.ready).loadWorkingCopyEncoded(bytes, descriptor);\n }\n async render(req: Parameters<Renderer['render']>[0]) {\n return (await this.ready).render(req);\n }\n async export(req: Parameters<Renderer['export']>[0]) {\n return (await this.ready).export(req);\n }\n async geometry(req: Parameters<Renderer['geometry']>[0]) {\n return (await this.ready).geometry(req.log, req.target, req.upTo);\n }\n async unload() {\n (await this.ready).unload();\n }\n async putAsset(id: string, bytes: Uint8Array) {\n (await this.ready).putAsset(id, bytes);\n }\n dispose() {\n this.core?.unload();\n }\n /** For tests. */\n async coreForTest(): Promise<RendererCore> {\n return this.ready;\n }\n}\n"]}
|
package/dist/options.d.ts
CHANGED
|
@@ -10,4 +10,3 @@ export type PluginOptionsMap = Readonly<Record<string, unknown>>;
|
|
|
10
10
|
export declare function configurePlugins(plugins: readonly AnyPlugin[], options: PluginOptionsMap | null | undefined): readonly AnyPlugin[];
|
|
11
11
|
/** The resolved options of every plugin that has any, keyed by id. */
|
|
12
12
|
export declare function pluginOptionsOf(plugins: readonly AnyPlugin[]): Record<string, unknown>;
|
|
13
|
-
//# sourceMappingURL=options.d.ts.map
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA6B,EAC7B,OAA4C;IAE5C,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,0BAA0B,EAAE,qBAAqB,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,0BAA0B,MAAM,CAAC,EAAE,kBAAkB,CACtD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,OAA2C,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,OAA6B;IAC3D,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;YAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IAC5E,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA6B,EAC7B,OAA4C;IAE5C,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,0BAA0B,EAAE,qBAAqB,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,0BAA0B,MAAM,CAAC,EAAE,kBAAkB,CACtD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,OAA2C,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,OAA6B;IAC3D,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;YAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IAC5E,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { SealpixelError } from './errors.js';\nimport type { AnyPlugin } from './plugin.js';\n\n/** `{ pluginId: partialOptions }`, as accepted by the element, the wrappers and the server. */\nexport type PluginOptionsMap = Readonly<Record<string, unknown>>;\n\n/**\n * Applies `options[plugin.id]` to each plugin through its `configure()`.\n * Plugins without an entry are returned as they are. An entry for an unknown\n * plugin id, or for a plugin without options, is an error: silently ignoring\n * it would hide a typo in a security-relevant constraint.\n */\nexport function configurePlugins(\n plugins: readonly AnyPlugin[],\n options: PluginOptionsMap | null | undefined,\n): readonly AnyPlugin[] {\n if (!options || Object.keys(options).length === 0) return plugins;\n const ids = new Set(plugins.map((p) => p.id));\n for (const id of Object.keys(options)) {\n if (!ids.has(id)) {\n throw new SealpixelError(\n 'INVALID_REQUEST',\n `pluginOptions: plugin \"${id}\" is not registered`,\n );\n }\n }\n return plugins.map((plugin) => {\n const partial = options[plugin.id];\n if (partial === undefined) return plugin;\n if (!plugin.configure) {\n throw new SealpixelError(\n 'INVALID_REQUEST',\n `pluginOptions: plugin \"${plugin.id}\" has no options`,\n );\n }\n return plugin.configure(partial as Partial<Record<string, unknown>>);\n });\n}\n\n/** The resolved options of every plugin that has any, keyed by id. */\nexport function pluginOptionsOf(plugins: readonly AnyPlugin[]): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const p of plugins) if (p.options !== undefined) out[p.id] = p.options;\n return out;\n}\n"]}
|
package/dist/plan.d.ts
CHANGED
package/dist/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAoBA,oDAAoD;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAY,EACZ,MAAyC,EACzC,SAAkB,EAAE;IAEpB,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;QAC9D,WAAW,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK;QAC5C,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAoBA,oDAAoD;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAY,EACZ,MAAyC,EACzC,SAAkB,EAAE;IAEpB,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;QAC9D,WAAW,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK;QAC5C,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["import type { RenderPlan, Stage } from './generated/plan.js';\nimport type { EditLog } from './types.js';\n\nexport type { Geometry, Size, StageGeometry } from './generated/geometry.js';\nexport type {\n ChromaSubsampling,\n Format as CoreFormat,\n OutputOptions as CoreOutputOptions,\n} from './generated/output.js';\nexport type {\n ColorStage,\n CropStage,\n Fit,\n Rect as PlanRect,\n RenderPlan,\n ResizeStage,\n SourceInfo,\n Stage,\n} from './generated/plan.js';\n\n/** Mirrors `sealpixel_core::plan::PLAN_VERSION`. */\nexport const PLAN_VERSION = 1;\n\n/**\n * Builds the plan for `log` executed on a buffer of `actual` size. Until the\n * plugin registry lands (S1.9) every log compiles to the identity plan.\n */\nexport function toRenderPlan(\n log: EditLog,\n actual: { width: number; height: number },\n stages: Stage[] = [],\n): RenderPlan {\n return {\n version: PLAN_VERSION,\n source: { width: log.source.width, height: log.source.height },\n bufferScale: actual.width / log.source.width,\n stages,\n };\n}\n"]}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -197,4 +197,3 @@ export interface SealpixelPlugin<Id extends string = string, Doc = unknown, Opti
|
|
|
197
197
|
export type AnyPlugin = SealpixelPlugin<string, any, any>;
|
|
198
198
|
/** Core stage kinds a `kernel: { kind: 'core' }` plugin may target. */
|
|
199
199
|
export type CoreStageName = Stage['kind'];
|
|
200
|
-
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Plugin contract. These are types only; `@sealpixel/plugin-sdk` provides the\n * `definePlugin` / `defineOperation` helpers and deterministic math, and\n * `@sealpixel/core` provides the registry that consumes plugins.\n */\nimport type { RgbaBuffer } from '@sealpixel/wasm';\nimport type { Size, Stage } from './plan.js';\nimport type { Operation, OperationBase, SourceDescriptor } from './types.js';\n\n/** Augmented by plugins: `declare module '@sealpixel/core' { interface DocumentRegistry { finetune: FinetuneDoc } }`. */\n// biome-ignore lint/suspicious/noEmptyInterface: augmentation target\nexport interface DocumentRegistry {}\n/** Derived state: one slice per plugin, keyed by plugin id. */\nexport type Document = { [K in keyof DocumentRegistry]: DocumentRegistry[K] };\n\n/** Runtime validator for one operation. Structural so any zod-like schema works. */\nexport interface OperationSchema<Op> {\n /** Returns the parsed value or throws. */\n parse(value: unknown): Op;\n /** Optional non-throwing variant used for aggregated error reporting. */\n safeParse?(value: unknown): { success: true; data: Op } | { success: false; error: unknown };\n}\n\nexport interface OperationDef<Doc, Op extends OperationBase<string> = OperationBase<string>> {\n type: Op['type'];\n schema: OperationSchema<Op>;\n /** Pure: returns the plugin's next document slice. */\n reduce: (slice: Doc, op: Op) => Doc;\n /**\n * Upgrades an op written by an older plugin version. Called with the raw\n * value before validation. Return the op in the current shape.\n */\n migrate?: (fromVersion: number, op: unknown) => unknown;\n}\n\nexport interface PlanContext {\n /** The plugin's resolved options (see `SealpixelPlugin.options`). */\n options?: unknown;\n /** Logical (full-resolution) size at this stage's input. */\n logical: Size;\n /** Actual buffer size at this stage's input. */\n actual: Size;\n /** `actual.width / logical.width`. */\n scale: number;\n /** `truth` or `preview`. Plugins may cheapen work in preview. */\n mode: 'truth' | 'preview';\n}\n\n/**\n * Parameters a plugin contributes to its stage. For a core kernel this is the\n * core stage minus `kind`; stages with the same name are shallow-merged in\n * plugin order, which is how finetune and filter share one `color` stage.\n */\nexport type StageParams = Record<string, unknown>;\n\nexport interface KernelContext {\n logical: Size;\n actual: Size;\n scale: number;\n mode: 'truth' | 'preview';\n /** Resolves a declared asset by id; throws if unknown or hash mismatch. */\n asset: (id: string) => Uint8Array;\n signal: AbortSignal;\n}\n\nexport type KernelDef =\n /** First-party only: the kernel is compiled into the core wasm. */\n | { kind: 'core' }\n /** Plain JavaScript. Determinism is the author's responsibility. */\n | {\n kind: 'js';\n run: (\n image: RgbaBuffer,\n params: StageParams,\n ctx: KernelContext,\n ) => RgbaBuffer | Promise<RgbaBuffer>;\n }\n /** Separate WebAssembly module implementing the kernel ABI. */\n | { kind: 'wasm'; module: () => Promise<WebAssembly.Module>; export?: string };\n\nexport interface AssetDeclaration {\n id: string;\n /** sha256 of the bytes; the resolver verifies it on both client and server. */\n hash: string;\n /** Where the default resolver fetches it from. */\n url?: string;\n}\n\n/**\n * UI contribution. Consumed by `@sealpixel/ui`, which calls the functions with\n * its `UiToolContext`. Parameters are typed `never` here so a plugin can\n * declare the context shape it needs without depending on the UI package.\n */\nexport interface ToolDef {\n id?: string;\n icon: unknown;\n /** i18n key or literal label. */\n label: string;\n panel: (ctx: never) => unknown;\n overlay?: (ctx: never) => unknown;\n activate?: (ctx: never) => void;\n deactivate?: (ctx: never) => void;\n shortcuts?: Record<string, (ctx: never) => void>;\n preview?: (ctx: never) => PreviewHint;\n}\n\nexport type PreviewHint = { css: string } | { none: true };\n\nexport interface ToolContext {\n document: Document;\n dispatch: (op: Operation) => void;\n t: (key: string, params?: Record<string, string | number>) => string;\n}\n\n/** Runtime validator for a plugin's options. Structural so any zod-like schema works. */\nexport interface OptionsSchema<Options> {\n parse(value: unknown): Options;\n safeParse?(value: unknown): { success: true; data: Options } | { success: false; error: unknown };\n}\n\n/** Context handed to `validate`: the resolved options and the slice before the op. */\nexport interface ValidateContext<Doc, Options> {\n options: Options;\n slice: Doc;\n /** All slices as reduced so far. */\n document: Document;\n /** The source image the log belongs to (dimensions in pixels). */\n source: SourceDescriptor;\n}\n\nexport interface ValidateDocumentContext<Options> {\n options: Options;\n document: Document;\n source: SourceDescriptor;\n}\n\nexport interface SealpixelPlugin<Id extends string = string, Doc = unknown, Options = unknown> {\n /** Namespaced id such as `acme.invert`. Op types are `<id>.<verb>`. */\n id: Id;\n /** Bumped when the op schema or the kernel output changes. */\n version: number;\n // biome-ignore lint/suspicious/noExplicitAny: heterogeneous op types are erased at the registry boundary\n operations: ReadonlyArray<OperationDef<Doc, any>>;\n initialDocument: Doc;\n stage: { name: string; order: number };\n /** Returns this plugin's stage parameters, or `null` to contribute nothing. */\n toPlan: (slice: Doc, ctx: PlanContext) => StageParams | null;\n kernel: KernelDef;\n tool?: () => Promise<ToolDef>;\n assets?: AssetDeclaration[];\n /**\n * Resolved options: defaults merged with what `configure()` received.\n * Options tune behaviour and constrain edits; they never carry pixel data\n * so a render never depends on them.\n */\n options?: Options;\n /** Validates a full options object. Used by `configure()` and the docs generator. */\n optionsSchema?: OptionsSchema<Options>;\n /** One-line descriptions per top-level option key, for generated documentation. */\n optionsDescribe?: Readonly<Record<string, string>>;\n /** The defaults `configure()` merges over. */\n optionsDefaults?: Options;\n /** Returns a new plugin instance with `partial` merged over the current options. */\n configure?: (partial: Partial<Options>) => SealpixelPlugin<Id, Doc, Options>;\n /**\n * Constraint check for one operation against the options. Return a message\n * to reject the op (`OPTION_VIOLATION`), or null to accept. Runs in\n * `parseEditLog`, in `session.dispatch` and on the server.\n */\n validate?: (op: Operation, ctx: ValidateContext<Doc, Options>) => string | null;\n /**\n * Constraint check for the final state, for example a locked watermark that\n * must be present. Runs before export and before every server render.\n */\n validateDocument?: (slice: Doc, ctx: ValidateDocumentContext<Options>) => string | null;\n /**\n * Operations the editor dispatches when a source loads with an empty log,\n * so option defaults (a default preset, a locked watermark) become part of\n * the log instead of hidden state. Ids are assigned by the caller.\n */\n initialOps?: (ctx: { options: Options; source: SourceDescriptor }) => Omit<Operation, 'id'>[];\n}\n\n/**\n * A plugin with its document type erased. Registries accept this so plugins\n * with concrete `Doc` types can be mixed in one array.\n */\n// biome-ignore lint/suspicious/noExplicitAny: erased at the registry boundary\nexport type AnyPlugin = SealpixelPlugin<string, any, any>;\n\n/** Core stage kinds a `kernel: { kind: 'core' }` plugin may target. */\nexport type CoreStageName = Stage['kind'];\n"]}
|
package/dist/registry.d.ts
CHANGED
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { SealpixelError } from './errors.js';\nimport type { AnyPlugin, AssetDeclaration, Document, OperationDef } from './plugin.js';\nimport type { EditLog, Operation, SourceDescriptor } from './types.js';\n\nexport interface ParseOptions {\n /**\n * Keep ops whose type is unknown instead of failing. They are ignored by\n * `compile`. Only for forward-compatible previews; servers must not set it.\n */\n tolerateUnknown?: boolean;\n}\n\nexport interface ParseIssue {\n /** Index into `ops`, or -1 for a top-level problem. */\n index: number;\n code: 'INVALID_EDIT_LOG' | 'UNKNOWN_PLUGIN' | 'UNKNOWN_OPERATION' | 'OPTION_VIOLATION';\n message: string;\n}\n\nexport type ParseResult = { ok: true; log: EditLog } | { ok: false; issues: ParseIssue[] };\n\nexport interface RegisteredOperation {\n plugin: AnyPlugin;\n // biome-ignore lint/suspicious/noExplicitAny: erased at the registry boundary\n def: OperationDef<any, any>;\n}\n\n/** Plugins plus everything derived from them: schemas, reducers, stage order. */\nexport interface Registry {\n /** Sorted by stage order, then id. */\n readonly plugins: readonly AnyPlugin[];\n readonly byId: ReadonlyMap<string, AnyPlugin>;\n readonly byOpType: ReadonlyMap<string, RegisteredOperation>;\n /** `{ pluginId: version }` for every registered plugin. */\n pluginVersions(): Record<string, number>;\n initialDocument(): Document;\n /** Validates and migrates an unknown value into an `EditLog`. Throws `SealpixelError`. */\n parseEditLog(value: unknown, options?: ParseOptions): EditLog;\n safeParseEditLog(value: unknown, options?: ParseOptions): ParseResult;\n /**\n * Runs the owning plugin's `validate` for one op against the document it\n * would apply to. Returns the violation message, or null.\n */\n validateOperation(op: Operation, document: Document, source: SourceDescriptor): string | null;\n /**\n * Runs every plugin's `validateDocument` over a compiled document. Returns\n * all violations; empty when the state satisfies the configured options.\n */\n validateDocument(\n document: Document,\n source: SourceDescriptor,\n ): { plugin: string; message: string }[];\n /** `{ pluginId: options }` for every plugin with options. */\n pluginOptions(): Record<string, unknown>;\n /** Ops that seed an empty log from option defaults, in stage order. */\n initialOps(source: SourceDescriptor): Omit<Operation, 'id'>[];\n}\n\nconst SourceSchema = z.object({\n id: z.string().min(1),\n width: z.number().int().positive(),\n height: z.number().int().positive(),\n hash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .optional(),\n mimeType: z.string().optional(),\n});\n\nconst AssetSchema = z\n .object({\n id: z.string().min(1),\n hash: z.string().regex(/^[0-9a-f]{64}$/),\n url: z.string().min(1).optional(),\n })\n .strict();\n\nconst LogShape = z.object({\n version: z.literal(1),\n source: SourceSchema,\n plugins: z.record(z.string(), z.number().int().positive()).default({}),\n assets: z.array(AssetSchema).max(1000).optional(),\n ops: z.array(z.unknown()).default([]),\n});\n\nexport function createRegistry(plugins: readonly AnyPlugin[]): Registry {\n const byId = new Map<string, AnyPlugin>();\n const byOpType = new Map<string, RegisteredOperation>();\n for (const plugin of plugins) {\n if (byId.has(plugin.id)) {\n throw new SealpixelError('INVALID_EDIT_LOG', `plugin \"${plugin.id}\" registered twice`);\n }\n byId.set(plugin.id, plugin);\n for (const def of plugin.operations) {\n if (byOpType.has(def.type)) {\n throw new SealpixelError('INVALID_EDIT_LOG', `operation \"${def.type}\" registered twice`);\n }\n byOpType.set(def.type, { plugin, def });\n }\n }\n const sorted = [...plugins].sort(\n (a, b) => a.stage.order - b.stage.order || a.id.localeCompare(b.id),\n );\n const initialDocument = () =>\n Object.fromEntries(sorted.map((p) => [p.id, p.initialDocument])) as Document;\n\n const validateOperation = (\n op: Operation,\n document: Document,\n source: SourceDescriptor,\n ): string | null => {\n const entry = byOpType.get(op.type);\n if (!entry?.plugin.validate) return null;\n const slice = (document as Record<string, unknown>)[entry.plugin.id];\n return entry.plugin.validate(op, { options: entry.plugin.options, slice, document, source });\n };\n\n const validateDocument = (document: Document, source: SourceDescriptor) => {\n const out: { plugin: string; message: string }[] = [];\n for (const plugin of sorted) {\n if (!plugin.validateDocument) continue;\n const slice = (document as Record<string, unknown>)[plugin.id];\n const message = plugin.validateDocument(slice, { options: plugin.options, document, source });\n if (message) out.push({ plugin: plugin.id, message });\n }\n return out;\n };\n\n const safeParseEditLog = (value: unknown, options: ParseOptions = {}): ParseResult => {\n const shape = LogShape.safeParse(value);\n if (!shape.success) {\n return {\n ok: false,\n issues: shape.error.issues.map((i) => ({\n index: -1,\n code: 'INVALID_EDIT_LOG',\n message: `${i.path.join('.') || '(root)'}: ${i.message}`,\n })),\n };\n }\n const issues: ParseIssue[] = [];\n const ops: Operation[] = [];\n // Slices reduced so far, so constraints can look at the state an op applies to.\n const document = initialDocument() as Record<string, unknown>;\n shape.data.ops.forEach((raw, index) => {\n const type =\n typeof raw === 'object' && raw !== null ? (raw as { type?: unknown }).type : undefined;\n if (typeof type !== 'string') {\n issues.push({ index, code: 'INVALID_EDIT_LOG', message: 'op has no string \"type\"' });\n return;\n }\n const entry = byOpType.get(type);\n if (!entry) {\n if (options.tolerateUnknown) {\n ops.push(raw as Operation);\n return;\n }\n const pluginId = type.slice(0, type.lastIndexOf('.'));\n issues.push(\n byId.has(pluginId)\n ? { index, code: 'UNKNOWN_OPERATION', message: `unknown operation \"${type}\"` }\n : { index, code: 'UNKNOWN_PLUGIN', message: `plugin \"${pluginId}\" is not registered` },\n );\n return;\n }\n const written = shape.data.plugins[entry.plugin.id];\n let candidate: unknown = raw;\n if (written !== undefined && written < entry.plugin.version) {\n if (!entry.def.migrate) {\n issues.push({\n index,\n code: 'INVALID_EDIT_LOG',\n message: `op \"${type}\" was written by ${entry.plugin.id} v${written}; v${entry.plugin.version} has no migration`,\n });\n return;\n }\n candidate = entry.def.migrate(written, raw);\n }\n const parsed = entry.def.schema.safeParse\n ? entry.def.schema.safeParse(candidate)\n : tryParse(entry.def.schema.parse, candidate);\n if (parsed.success) {\n const op = parsed.data as Operation;\n const violation = validateOperation(\n op,\n document as Document,\n stripUndefined(shape.data.source) as SourceDescriptor,\n );\n if (violation) {\n issues.push({ index, code: 'OPTION_VIOLATION', message: `op \"${type}\": ${violation}` });\n return;\n }\n ops.push(op);\n document[entry.plugin.id] = entry.def.reduce(document[entry.plugin.id], op);\n } else {\n issues.push({\n index,\n code: 'INVALID_EDIT_LOG',\n message: `op \"${type}\": ${describeError(parsed.error)}`,\n });\n }\n });\n if (issues.length > 0) return { ok: false, issues };\n // Every op of a registered plugin is now in its current schema. Record that\n // version, or the next parse migrates the ops again, including ops appended\n // since in the current schema.\n const plugins = { ...shape.data.plugins };\n for (const [id, written] of Object.entries(plugins)) {\n const plugin = byId.get(id);\n if (plugin && written < plugin.version) plugins[id] = plugin.version;\n }\n const log: EditLog = {\n version: 1,\n source: stripUndefined(shape.data.source) as SourceDescriptor,\n plugins,\n ...(shape.data.assets\n ? { assets: shape.data.assets.map((a) => stripUndefined(a) as AssetDeclaration) }\n : {}),\n ops,\n };\n return { ok: true, log };\n };\n\n return {\n plugins: sorted,\n byId,\n byOpType,\n pluginVersions: () => Object.fromEntries(sorted.map((p) => [p.id, p.version])),\n pluginOptions: () =>\n Object.fromEntries(\n sorted.filter((p) => p.options !== undefined).map((p) => [p.id, p.options]),\n ),\n initialDocument,\n initialOps: (source) =>\n sorted.flatMap((p) => p.initialOps?.({ options: p.options, source }) ?? []),\n validateOperation,\n validateDocument,\n safeParseEditLog,\n parseEditLog: (value, options) => {\n const result = safeParseEditLog(value, options);\n if (result.ok) return result.log;\n const first = result.issues[0];\n const code = result.issues.every((i) => i.code === 'UNKNOWN_PLUGIN')\n ? 'UNKNOWN_PLUGIN'\n : result.issues.some((i) => i.code === 'OPTION_VIOLATION')\n ? 'OPTION_VIOLATION'\n : 'INVALID_EDIT_LOG';\n throw new SealpixelError(\n code,\n first ? `${first.message}` : 'invalid edit log',\n result.issues,\n );\n },\n };\n}\n\nfunction tryParse<T>(\n parse: (v: unknown) => T,\n value: unknown,\n): { success: true; data: T } | { success: false; error: unknown } {\n try {\n return { success: true, data: parse(value) };\n } catch (error) {\n return { success: false, error };\n }\n}\n\nfunction describeError(error: unknown): string {\n if (error && typeof error === 'object' && 'issues' in error) {\n const issues = (error as { issues: { path: PropertyKey[]; message: string }[] }).issues;\n return issues.map((i) => `${i.path.join('.') || '(root)'}: ${i.message}`).join('; ');\n }\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction stripUndefined<T extends object>(value: T): T {\n return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as T;\n}\n"]}
|
package/dist/render.d.ts
CHANGED
|
@@ -22,4 +22,3 @@ export interface PipelineOptions {
|
|
|
22
22
|
export declare function runPipeline(wasm: SealpixelWasm, registry: Registry, image: RgbaBuffer, log: EditLog, options: PipelineOptions): Promise<RgbaBuffer>;
|
|
23
23
|
/** Maps the public output options onto the Rust `OutputOptions` JSON. */
|
|
24
24
|
export declare function toCoreOutput(output: OutputOptions): Record<string, unknown>;
|
|
25
|
-
//# sourceMappingURL=render.d.ts.map
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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","sourcesContent":["import { loadSealpixelWasm, type RgbaBuffer, type SealpixelWasm } from '@sealpixel/wasm';\nimport { withAssets } from './assets.js';\nimport { canonicalJson } from './canonical-json.js';\nimport { compile, type PipelineStage, toCoreStages, toPipeline } from './compile.js';\nimport { SealpixelError } from './errors.js';\nimport { runExternalKernel } from './external-kernel.js';\nimport { type Geometry, PLAN_VERSION, type RenderPlan } from './plan.js';\nimport type { KernelContext, PlanContext } from './plugin.js';\nimport { createRegistry, type Registry } from './registry.js';\nimport type {\n EditLog,\n OutputFormat,\n OutputOptions,\n RenderOptions,\n RenderResult,\n RenderSource,\n} from './types.js';\n\nconst FORMAT_TO_CORE: Record<OutputFormat, string> = {\n 'image/png': 'png',\n 'image/jpeg': 'jpeg',\n 'image/webp': 'webp',\n};\n\nconst EMPTY_REGISTRY = createRegistry([]);\n\n/**\n * Renders `log` against `source` and encodes the result.\n *\n * Pure with respect to its inputs: same bytes, same log, same options, same\n * plugins and the same core version produce the same output bytes on every\n * runtime. Core stages run inside the wasm; JS kernels run between them\n * through the same orchestrator on every runtime.\n */\nexport async function render(\n source: RenderSource,\n log: EditLog,\n options: RenderOptions,\n): Promise<RenderResult> {\n const wasm = options.wasm ?? (await loadSealpixelWasm());\n const registry = options.registry ?? EMPTY_REGISTRY;\n throwIfAborted(options.signal);\n\n const t0 = now();\n const image = source instanceof Uint8Array ? tryCore(() => wasm.decode(source)) : source;\n const decodeMs = now() - t0;\n\n const mode = options.mode ?? 'truth';\n if (\n mode === 'truth' &&\n (image.width !== log.source.width || image.height !== log.source.height)\n ) {\n throw new SealpixelError(\n 'SOURCE_MISMATCH',\n `truth render expects ${log.source.width}x${log.source.height}, got ${image.width}x${image.height}`,\n );\n }\n if (log.ops.length > 0 && registry === EMPTY_REGISTRY) {\n throw new SealpixelError('INVALID_EDIT_LOG', 'log has ops but no registry was given');\n }\n throwIfAborted(options.signal);\n\n const t1 = now();\n const rendered = await withAssets(\n () =>\n runPipeline(wasm, registry, image, log, {\n mode,\n ...(options.upTo === undefined ? {} : { upTo: options.upTo }),\n ...(options.signal === undefined ? {} : { signal: options.signal }),\n }),\n options.assets,\n (id, bytes) => wasm.assetPut(id, bytes),\n );\n const renderMs = now() - t1;\n throwIfAborted(options.signal);\n\n const t2 = now();\n const coreOutput = toCoreOutput(options.output);\n if (options.embedEditLog) {\n coreOutput['embed'] = canonicalJson({ log, index: options.upTo ?? log.ops.length });\n }\n const bytes = tryCore(() => wasm.encode(rendered, JSON.stringify(coreOutput)));\n const encodeMs = now() - t2;\n\n return {\n bytes,\n mimeType: options.output.format,\n width: rendered.width,\n height: rendered.height,\n hash: wasm.sha256Hex(bytes),\n coreVersion: wasm.version(),\n timings: { decode: decodeMs, render: renderMs, encode: encodeMs },\n };\n}\n\nexport interface PipelineOptions {\n mode: 'truth' | 'preview';\n upTo?: number;\n signal?: AbortSignal;\n}\n\n/**\n * Compiles the log and executes it: consecutive core stages become one wasm\n * call, every external kernel runs in between on the RGBA buffer.\n */\nexport async function runPipeline(\n wasm: SealpixelWasm,\n registry: Registry,\n image: RgbaBuffer,\n log: EditLog,\n options: PipelineOptions,\n): Promise<RgbaBuffer> {\n const doc = compile(log, registry, options.upTo);\n const logical = { width: log.source.width, height: log.source.height };\n const ctx: PlanContext = {\n logical,\n actual: { width: image.width, height: image.height },\n scale: image.width / log.source.width,\n mode: options.mode,\n };\n const stages = toPipeline(doc, registry, ctx);\n\n let current = image;\n let currentLogical = logical;\n for (const segment of segments(stages)) {\n throwIfAborted(options.signal);\n if (segment.kind === 'core') {\n const plan: RenderPlan = {\n version: PLAN_VERSION,\n source: currentLogical,\n bufferScale: current.width / currentLogical.width,\n stages: toCoreStages(segment.stages),\n };\n const planJson = JSON.stringify(plan);\n const geometry = JSON.parse(\n tryCore(() => wasm.resolveGeometry(planJson, current.width, current.height)),\n ) as Geometry;\n current = tryCore(() => wasm.renderRgba(current, planJson));\n currentLogical = geometry.logicalOut;\n } else {\n const stage = segment.stage;\n const kctx: KernelContext = {\n logical: currentLogical,\n actual: { width: current.width, height: current.height },\n scale: current.width / currentLogical.width,\n mode: options.mode,\n asset: (id) => {\n throw new SealpixelError(\n 'INVALID_EDIT_LOG',\n `asset \"${id}\" requested but assets are not supported yet (S3.3)`,\n );\n },\n signal: options.signal ?? new AbortController().signal,\n };\n const out = await runExternalKernel(stage.plugin, current, stage.params, kctx);\n if (out.width !== current.width || out.height !== current.height) {\n currentLogical = {\n width: Math.round(currentLogical.width * (out.width / current.width)),\n height: Math.round(currentLogical.height * (out.height / current.height)),\n };\n }\n current = out;\n }\n }\n return current;\n}\n\ntype Segment =\n | { kind: 'core'; stages: PipelineStage[] }\n | { kind: 'external'; stage: Extract<PipelineStage, { kind: 'js' | 'wasm' }> };\n\nfunction* segments(stages: PipelineStage[]): Generator<Segment> {\n let run: PipelineStage[] = [];\n for (const stage of stages) {\n if (stage.kind === 'core') {\n run.push(stage);\n continue;\n }\n if (run.length > 0) {\n yield { kind: 'core', stages: run };\n run = [];\n }\n yield { kind: 'external', stage };\n }\n if (run.length > 0) yield { kind: 'core', stages: run };\n}\n\n/** Maps the public output options onto the Rust `OutputOptions` JSON. */\nexport function toCoreOutput(output: OutputOptions): Record<string, unknown> {\n const core: Record<string, unknown> = { format: FORMAT_TO_CORE[output.format] };\n if (output.quality !== undefined) core['quality'] = output.quality;\n if (output.progressive !== undefined) core['progressive'] = output.progressive;\n if (output.chromaSubsampling !== undefined) core['chromaSubsampling'] = output.chromaSubsampling;\n if (output.lossless !== undefined) core['lossless'] = output.lossless;\n if (output.background !== undefined) core['background'] = output.background;\n return core;\n}\n\nfunction tryCore<T>(fn: () => T): T {\n try {\n return fn();\n } catch (error) {\n throw SealpixelError.from(error);\n }\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted) throw new SealpixelError('ABORTED', 'render aborted');\n}\n\nfunction now(): number {\n return typeof performance === 'undefined' ? Date.now() : performance.now();\n}\n"]}
|
package/dist/renderer-core.d.ts
CHANGED
|
@@ -28,7 +28,8 @@ export interface ExportRequest {
|
|
|
28
28
|
embedEditLog?: boolean;
|
|
29
29
|
}
|
|
30
30
|
export interface ExportResult {
|
|
31
|
-
|
|
31
|
+
/** Backed by a plain `ArrayBuffer`, so it is a `BlobPart`. */
|
|
32
|
+
bytes: Uint8Array<ArrayBuffer>;
|
|
32
33
|
mimeType: OutputOptions['format'];
|
|
33
34
|
width: number;
|
|
34
35
|
height: number;
|
|
@@ -84,4 +85,3 @@ export declare class RendererCore {
|
|
|
84
85
|
/** For tests: number of cached stage outputs. */
|
|
85
86
|
cacheSize(): number;
|
|
86
87
|
}
|
|
87
|
-
//# sourceMappingURL=renderer-core.d.ts.map
|