@office-kit/pptx-dev 0.13.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { i as initProject, n as exportDeck, r as inspectTemplate, t as buildDeck } from "./src-DASlwPDd.mjs";
1
+ import { i as initProject, n as exportDeck, r as inspectTemplate, t as buildDeck } from "./src-C1VTVnr6.mjs";
2
2
  export { buildDeck, exportDeck, initProject, inspectTemplate };
@@ -289,7 +289,10 @@ for shared design values. The JSX runtime is
289
289
  - Keep the preview running during revisions and inspect affected slides after
290
290
  saving. Review all affected consumers for shared changes. Do not run a separate
291
291
  export for every intermediate edit. Before delivery, run npm run check and
292
- npm run build to export deck.pptx, then review the whole deck.
292
+ npm run build to export deck.pptx, then review the whole deck. check also
293
+ measures slide text: fix every error (text running out of its shape) and judge
294
+ each warning (a smaller overflow, text under 10pt, a word split across lines,
295
+ a last line of one or two characters).
293
296
  - Coordinates and dimensions are inches; font sizes and stroke widths are points.
294
297
  The default 16:9 canvas is 13.333 × 7.5 inches.
295
298
  - Use native Text, Shape, Image, Table and Chart elements. Use JS functions,
@@ -333,7 +336,7 @@ async function initProject(directory) {
333
336
  scripts: {
334
337
  dev: "office-pptx dev deck.tsx",
335
338
  build: "office-pptx build deck.tsx --out deck.pptx",
336
- check: "tsc --noEmit"
339
+ check: "tsc --noEmit && office-pptx check deck.tsx"
337
340
  },
338
341
  dependencies: {
339
342
  "@office-kit/pptx": versions[0],
@@ -454,4 +457,4 @@ async function exportDeck(entry, output) {
454
457
  //#endregion
455
458
  export { editorStore as a, initProject as i, exportDeck as n, sourceFingerprint as o, inspectTemplate as r, createDeckBuilder as s, buildDeck as t };
456
459
 
457
- //# sourceMappingURL=src-DASlwPDd.mjs.map
460
+ //# sourceMappingURL=src-C1VTVnr6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-C1VTVnr6.mjs","names":[],"sources":["../src/bundle.ts","../src/build-runner.ts","../src/fingerprint.ts","../src/editor-store.ts","../src/init.ts","../src/inspect.ts","../src/index.ts"],"sourcesContent":["import { context, transform } from 'esbuild';\nimport { readFile, writeFile } from 'node:fs/promises';\nimport { resolve, sep } from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\n\nconst resolvePackage = (name: string) => fileURLToPath(import.meta.resolve(name));\n\nexport async function createDeckCompiler(entry: string) {\n const transformedSources = new Map<string, { source: string; code: string }>();\n const compiler = await context({\n entryPoints: [resolve(entry)],\n outfile: 'deck.mjs',\n write: false,\n bundle: true,\n platform: 'node',\n format: 'esm',\n target: 'node22',\n jsx: 'automatic',\n jsxImportSource: '@office-kit/pptx-dsl',\n sourcemap: 'inline',\n sourceRoot: pathToFileURL(process.cwd() + sep).href,\n metafile: true,\n logLevel: 'silent',\n plugins: [\n {\n name: 'source-location',\n setup(builder) {\n // A bundled module lives in a temporary directory. Keep source-relative\n // asset URLs pointing at each original module, including imported files.\n builder.onLoad({ filter: /\\.[cm]?[jt]sx?$/ }, async ({ path }) => {\n const source = await readFile(path, 'utf8');\n const cached = transformedSources.get(path);\n if (cached?.source === source) return { contents: cached.code, loader: 'js' };\n const loader = path.endsWith('.tsx')\n ? 'tsx'\n : path.endsWith('.ts') || path.endsWith('.mts') || path.endsWith('.cts')\n ? 'ts'\n : path.endsWith('.jsx')\n ? 'jsx'\n : 'js';\n const transformed = await transform(source, {\n loader,\n sourcefile: path,\n sourcemap: 'inline',\n jsx: 'automatic',\n jsxDev: true,\n jsxImportSource: '@office-kit/pptx-dsl',\n define: { 'import.meta.url': JSON.stringify(pathToFileURL(path).href) },\n });\n transformedSources.set(path, { source, code: transformed.code });\n return { contents: transformed.code, loader: 'js' };\n });\n },\n },\n {\n name: 'shared-office-kit',\n setup(builder) {\n // Core uses symbol-backed handles; all consumers must share its instance.\n builder.onResolve({ filter: /^@office-kit\\/pptx(?:-dsl)?(?:\\/.*)?$/ }, ({ path }) => ({\n path: resolvePackage(path),\n external: true,\n }));\n },\n },\n ],\n });\n return {\n async build(output: string) {\n const result = await compiler.rebuild();\n await writeFile(output, result.outputFiles[0]!.contents);\n const dependencies = Object.keys(result.metafile!.inputs).map((path) => resolve(path));\n const used = new Set(dependencies);\n for (const path of transformedSources.keys())\n if (!used.has(path)) transformedSources.delete(path);\n return dependencies;\n },\n cancel: () => compiler.cancel(),\n close: () => compiler.dispose(),\n };\n}\n","import { Worker } from 'node:worker_threads';\nimport { join } from 'node:path';\nimport { mkdtempSync } from 'node:fs';\nimport { rm } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport type { BuildResult } from './build.ts';\nimport type { PreviewCache } from './preview-cache.ts';\nimport { createDeckCompiler } from './bundle.ts';\n\nconst BUILD_TIMEOUT_MS = 60_000;\n\nfunction prepareWorker() {\n const directory = mkdtempSync(join(tmpdir(), 'office-pptx-'));\n const worker = new Worker(new URL('./worker.mjs', import.meta.url), {\n workerData: { directory },\n execArgv: ['--enable-source-maps'],\n });\n const result = new Promise<{ result: BuildResult; cache: PreviewCache }>(\n (resolveBuild, reject) => {\n worker.once('message', resolveBuild);\n worker.once('error', reject);\n worker.once('exit', (code) =>\n reject(new Error(`Build worker exited without a result (code ${code}).`)),\n );\n },\n );\n // Startup may fail before the next edit asks to use this worker.\n void result.catch(() => {});\n return { worker, result, directory };\n}\n\n/** Internal watch session. Preload libraries, but never reuse a user module cache. */\nexport function createDeckBuilder(entry: string, keepWarm = true) {\n const compiler = createDeckCompiler(entry);\n void compiler.catch(() => {});\n let prepared: ReturnType<typeof prepareWorker> | undefined = prepareWorker();\n let cache: PreviewCache | undefined;\n let closed = false;\n let active = false;\n return {\n async build(): Promise<BuildResult> {\n if (closed || active) throw new Error('Deck builder is closed or already building.');\n active = true;\n const current = prepared ?? prepareWorker();\n prepared = current;\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n const built = await Promise.race([\n (async () => {\n const dependencies = await (await compiler).build(join(current.directory, 'deck.mjs'));\n current.worker.postMessage({ dependencies, cache });\n return current.result;\n })(),\n new Promise<never>((_, reject) => {\n timer = setTimeout(\n () =>\n reject(\n new Error(\n 'Build exceeded 60 seconds. Check the deck for loops or unresolved promises.',\n ),\n ),\n BUILD_TIMEOUT_MS,\n );\n }),\n ]);\n cache = built.cache;\n return built.result;\n } finally {\n clearTimeout(timer);\n await compiler.then(\n (compiler) => compiler.cancel(),\n () => {},\n );\n await current.worker.terminate();\n await rm(current.directory, { recursive: true, force: true });\n active = false;\n prepared = !closed && keepWarm ? prepareWorker() : undefined;\n }\n },\n async cancel() {\n if (!active) return;\n const current = prepared;\n await compiler.then(\n (compiler) => compiler.cancel(),\n () => {},\n );\n await current?.worker.terminate();\n },\n async close() {\n closed = true;\n const current = prepared;\n await compiler.then(\n (compiler) => compiler.cancel(),\n () => {},\n );\n await current?.worker.terminate();\n await compiler.then(\n (compiler) => compiler.close(),\n () => {},\n );\n if (current) await rm(current.directory, { recursive: true, force: true });\n },\n };\n}\n","import { createHash } from 'node:crypto';\nimport { comparablePart } from '@office-kit/pptx-editor/merge';\nimport { unzipSync } from 'fflate';\n\n/** ZIP container dates and generated core timestamps are not source edits. */\nexport function sourceFingerprint(bytes: Uint8Array): string {\n const parts = unzipSync(bytes);\n const hash = createHash('sha256');\n for (const name of Object.keys(parts).sort()) {\n const content = comparablePart(name, parts[name]!);\n hash.update(JSON.stringify([name, createHash('sha256').update(content).digest('hex')]));\n }\n return hash.digest('hex');\n}\n","import { randomUUID } from 'node:crypto';\nimport { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';\nimport { basename, dirname, join, resolve } from 'node:path';\nimport { strFromU8, strToU8, unzipSync, zipSync } from 'fflate';\nimport { renderDeck, type BuildResult } from './build.ts';\nimport { describeConflict, mergeDecks } from '@office-kit/pptx-editor/merge';\nimport { sourceFingerprint } from './fingerprint.ts';\n\nexport interface SavedEdits {\n sourceHash: string;\n bytes: Uint8Array;\n /**\n * The source build the edits were made against, which lets a later source\n * change merge with them. Version 1 sidecars did not store it.\n */\n base: Uint8Array | null;\n}\n\nconst STORE_VERSION = 2;\n\n/** One atomic sidecar keeps the saved deck and its source basis in agreement. */\nexport function editorStore(entry: string) {\n const path = join(dirname(resolve(entry)), '.office-kit', `${basename(entry)}.editor.zip`);\n return {\n path,\n async read(): Promise<SavedEdits | undefined> {\n let bytes: Uint8Array;\n try {\n bytes = await readFile(path);\n } catch (cause) {\n if (cause instanceof Error && 'code' in cause && cause.code === 'ENOENT') return;\n throw cause;\n }\n const parts = unzipSync(bytes);\n if (!parts['state.json'] || !parts['document.pptx'])\n throw new Error(`Invalid editor file: ${path}`);\n const state: unknown = JSON.parse(strFromU8(parts['state.json']));\n if (\n !state ||\n typeof state !== 'object' ||\n !('version' in state) ||\n (state.version !== 1 && state.version !== STORE_VERSION) ||\n !('sourceHash' in state) ||\n typeof state.sourceHash !== 'string' ||\n !/^[a-f0-9]{64}$/.test(state.sourceHash)\n ) {\n throw new Error(`Invalid editor metadata: ${path}`);\n }\n const base = parts['base.pptx'];\n if (state.version === STORE_VERSION && !base) throw new Error(`Invalid editor file: ${path}`);\n return { sourceHash: state.sourceHash, bytes: parts['document.pptx'], base: base ?? null };\n },\n async write(edits: SavedEdits & { base: Uint8Array }): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n const temporary = `${path}.${randomUUID()}.tmp`;\n try {\n await writeFile(\n temporary,\n zipSync({\n 'state.json': strToU8(\n JSON.stringify({ version: STORE_VERSION, sourceHash: edits.sourceHash }),\n ),\n 'document.pptx': edits.bytes,\n 'base.pptx': edits.base,\n }),\n { flag: 'wx' },\n );\n await rename(temporary, path);\n } finally {\n await rm(temporary, { force: true });\n }\n },\n async clear(): Promise<void> {\n await rm(path, { force: true });\n },\n };\n}\n\nexport async function applySavedEdits(entry: string, source: BuildResult): Promise<BuildResult> {\n const edits = await editorStore(entry).read();\n if (!edits) return source;\n let bytes = edits.bytes;\n if (edits.sourceHash !== sourceFingerprint(source.bytes)) {\n const merged = edits.base ? mergeDecks(edits.base, edits.bytes, source.bytes) : null;\n if (!merged?.ok) {\n throw new Error(\n [\n 'Source changed since the last editor save. Open office-pptx dev and resolve the editor conflict before exporting.',\n ...(merged?.conflicts.map(describeConflict) ?? []),\n ].join('\\n'),\n );\n }\n bytes = merged.bytes;\n }\n return (await renderDeck(bytes, source.dependencies)).result;\n}\n","import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\n\nconst starter = `import { Presentation } from '@office-kit/pptx-dsl';\nimport { Cover } from './slides/cover.tsx';\n\nexport default (\n <Presentation>\n <Cover />\n </Presentation>\n);\n`;\n\nconst theme = `export const theme = {\n background: '#15171C',\n accent: '#D6336C',\n text: '#FFFFFF',\n muted: '#B4B9C4',\n} as const;\n`;\n\nconst cover = `import { Slide, Text, Shape } from '@office-kit/pptx-dsl';\nimport { theme } from '../theme.ts';\n\nexport function Cover() {\n return (\n <Slide background={theme.background}>\n <Shape preset=\"rect\" x={0.9} y={2.55} width={0.14} height={1.75} fill={theme.accent} stroke={false} />\n <Text x={1.25} y={2.4} width={10} height={1.1} size={48} bold color={theme.text}>\n Your next presentation\n </Text>\n <Text x={1.25} y={3.55} width={10} height={0.6} size={22} color={theme.muted}>\n Edit this TSX and save to update the preview.\n </Text>\n </Slide>\n );\n}\n`;\n\nconst guide = `# Writing this presentation\n\nUse deck.tsx for slide order, slides/*.tsx for individual slides, and theme.ts\nfor shared design values. The JSX runtime is\n@office-kit/pptx-dsl, with no React or Vue dependency.\n\n- Run npm run dev, then open its local URL to preview. Saving source files\n updates the preview. A failed build retains the last successful output.\n- Select an area in the preview to request a focused AI edit, or use Edit text\n for a direct text save. Changes are persisted in TSX. Use the thumbnails, zoom\n and Present to review slides. After edits, inspect every screenshot supplied\n by the preview and correct clipping, overlap, spacing and contrast.\n- For a local revision, locate the slide through deck.tsx or a text search and\n read only the relevant source and dependencies. Patch the requested text, data\n or props; do not regenerate the deck or reformat unrelated code. Keep descriptive\n filenames stable when reordering slides. Preserve existing project structures.\n- Change shared theme values/components only for changes intended for all their\n consumers; use a local prop override for a one-slide exception.\n- Keep the preview running during revisions and inspect affected slides after\n saving. Review all affected consumers for shared changes. Do not run a separate\n export for every intermediate edit. Before delivery, run npm run check and\n npm run build to export deck.pptx, then review the whole deck. check also\n measures slide text: fix every error (text running out of its shape) and judge\n each warning (a smaller overflow, text under 10pt, a word split across lines,\n a last line of one or two characters).\n- Coordinates and dimensions are inches; font sizes and stroke widths are points.\n The default 16:9 canvas is 13.333 × 7.5 inches.\n- Use native Text, Shape, Image, Table and Chart elements. Use JS functions,\n arrays and map to compose elements; do not import React.\n- Chart takes the core ChartSpec in its spec prop. Text accepts rich ParagraphSpec\n arrays through paragraphs. Raw is an escape hatch for public core APIs.\n- For templates: readFile(new URL('./template.pptx', import.meta.url)), then use\n Presentation source={bytes} mode=\"edit\" and Slide target={{index: 0}}.\n Fill target={{name: 'Title 1'}} changes an existing shape. Indices are zero-based.\n Use office-pptx inspect template.pptx to discover names, layouts and placeholders.\n- Use mode=\"compose\" and Slide from={{index: 0}} to build a new sequence from a\n source deck. This intentionally removes the original slide sequence.\n- Keep assets inside this project so the dev server sees changes. Use source-relative\n new URL('./image.png', import.meta.url) when loading local assets.\n- Preserve existing slides and formatting unless the request calls for changes.\n Never rasterize a chart/table as a shortcut. Raw-only features are not DSL coverage.\n- Preview is a rendering aid, not a guarantee of identical rendering in other apps.\n Check the exported file in the target application for final delivery.\n\nVSCode uses tsconfig.json for completion and diagnostics. Start the\n\"Preview presentation\" task, then run \"Simple Browser: Show\" with the printed URL\nand move that editor to a side group. Type errors appear in the Problems panel.\n`;\n\n/** Creates a new directory; existing projects are never overwritten. */\nexport async function initProject(directory: string): Promise<string> {\n const root = resolve(directory);\n const packageLocations = [\n import.meta.resolve('@office-kit/pptx/package.json'),\n import.meta.resolve('@office-kit/pptx-dsl/package.json'),\n new URL('../package.json', import.meta.url),\n ];\n const versions = await Promise.all(\n packageLocations.map(async (location) => {\n const manifest: { version: string } = JSON.parse(await readFile(new URL(location), 'utf8'));\n return `^${manifest.version}`;\n }),\n );\n await mkdir(root);\n const files: Record<string, string> = {\n 'package.json':\n JSON.stringify(\n {\n name: 'my-presentation',\n private: true,\n type: 'module',\n scripts: {\n dev: 'office-pptx dev deck.tsx',\n build: 'office-pptx build deck.tsx --out deck.pptx',\n check: 'tsc --noEmit && office-pptx check deck.tsx',\n },\n dependencies: { '@office-kit/pptx': versions[0]!, '@office-kit/pptx-dsl': versions[1]! },\n devDependencies: {\n '@office-kit/pptx-dev': versions[2]!,\n '@types/node': '^24.13.2',\n typescript: '^6.0.3',\n },\n },\n null,\n 2,\n ) + '\\n',\n 'tsconfig.json':\n JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'Bundler',\n jsx: 'react-jsx',\n jsxImportSource: '@office-kit/pptx-dsl',\n strict: true,\n exactOptionalPropertyTypes: true,\n noEmit: true,\n allowImportingTsExtensions: true,\n types: ['node'],\n },\n include: ['**/*.ts', '**/*.tsx'],\n exclude: ['node_modules'],\n },\n null,\n 2,\n ) + '\\n',\n 'deck.tsx': starter,\n 'theme.ts': theme,\n 'slides/cover.tsx': cover,\n // Same text under both names on purpose: Claude Code loads CLAUDE.md,\n // Codex loads AGENTS.md, and an agent that starts without the guide\n // reaches for its own slide tooling instead of editing the TSX.\n 'CLAUDE.md': guide,\n 'AGENTS.md': guide,\n 'README.md':\n '# Your slides\\n\\nInstall once with `npm install`, then run `npm run dev` (or `npx office-pptx dev deck.tsx`). Open the printed URL.\\n\\nEdit `slides/cover.tsx`, select an area for an AI instruction, or choose Edit text in the preview. Start Claude Code in an agent pane before sending instructions. An installed Chrome enables automatic screenshot review.\\n\\nRun `npm run check` and `npm run build` to check and export `deck.pptx`.\\n',\n '.gitignore': 'node_modules/\\ndeck.pptx\\n.office-kit/\\n',\n '.vscode/tasks.json':\n JSON.stringify(\n {\n version: '2.0.0',\n tasks: [\n {\n label: 'Preview presentation',\n type: 'shell',\n command: 'npm run dev',\n isBackground: true,\n problemMatcher: {\n pattern: { regexp: '^NEVER_MATCH$', file: 1, message: 2 },\n background: {\n activeOnStart: true,\n beginsPattern: '^.*office-pptx dev',\n endsPattern: '^Preview: ',\n },\n },\n },\n {\n label: 'Check presentation',\n type: 'shell',\n command: 'npm run check',\n problemMatcher: '$tsc',\n },\n {\n label: 'Export presentation',\n type: 'shell',\n command: 'npm run build',\n problemMatcher: [],\n },\n ],\n },\n null,\n 2,\n ) + '\\n',\n };\n await Promise.all(['.vscode', 'slides'].map((directory) => mkdir(join(root, directory))));\n await Promise.all(\n Object.entries(files).map(([name, content]) =>\n writeFile(join(root, name), content, { flag: 'wx' }),\n ),\n );\n return root;\n}\n","import { readFile } from 'node:fs/promises';\nimport {\n loadPresentation,\n getSlides,\n getSlidePartName,\n getSlideTitle,\n getSlideShapes,\n getShapeName,\n getShapeId,\n getShapeKind,\n getShapePlaceholderType,\n getShapePlaceholderIdx,\n getSlideLayouts,\n getSlideLayoutName,\n getSlideLayoutPartName,\n getSlideLayoutType,\n} from '@office-kit/pptx';\n\n/** Source references usable directly in Slide, Fill and Remove props. */\nexport async function inspectTemplate(file: string) {\n const presentation = await loadPresentation(await readFile(file));\n return {\n slides: getSlides(presentation).map((slide, index) => ({\n index,\n part: getSlidePartName(slide),\n title: getSlideTitle(slide),\n shapes: getSlideShapes(slide).map((shape) => ({\n id: getShapeId(shape),\n name: getShapeName(shape),\n kind: getShapeKind(shape),\n placeholder: { type: getShapePlaceholderType(shape), idx: getShapePlaceholderIdx(shape) },\n })),\n })),\n layouts: getSlideLayouts(presentation).map((layout) => ({\n part: getSlideLayoutPartName(layout),\n name: getSlideLayoutName(layout),\n type: getSlideLayoutType(layout),\n })),\n };\n}\n","import { writeFile } from 'node:fs/promises';\nimport { createDeckBuilder } from './build-runner.ts';\nimport type { BuildResult } from './build.ts';\nimport { applySavedEdits } from './editor-store.ts';\nexport type { BuildResult } from './build.ts';\nexport { initProject } from './init.ts';\nexport { inspectTemplate } from './inspect.ts';\n\n/** Each evaluation gets a fresh module cache and releases it when finished. */\nexport async function buildDeck(entry: string): Promise<BuildResult> {\n const builder = createDeckBuilder(entry, false);\n try {\n return await applySavedEdits(entry, await builder.build());\n } finally {\n await builder.close();\n }\n}\nexport async function exportDeck(entry: string, output: string): Promise<BuildResult> {\n const result = await buildDeck(entry);\n await writeFile(output, result.bytes);\n return result;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@office-kit/pptx-dev",
3
- "version": "0.13.1",
3
+ "version": "0.14.0",
4
4
  "description": "Build and preview TSX presentations locally",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -27,10 +27,10 @@
27
27
  "provenance": true
28
28
  },
29
29
  "dependencies": {
30
- "@office-kit/pptx": "^0.24.1",
31
- "@office-kit/pptx-dsl": "^0.11.0",
32
- "@office-kit/pptx-editor": "^0.1.1",
33
- "@office-kit/pptx-preview": "^0.16.0",
30
+ "@office-kit/pptx": "^0.25.0",
31
+ "@office-kit/pptx-dsl": "^0.12.0",
32
+ "@office-kit/pptx-editor": "^0.2.0",
33
+ "@office-kit/pptx-preview": "^0.17.0",
34
34
  "@xterm/addon-fit": "^0.11.0",
35
35
  "@xterm/xterm": "^6.0.0",
36
36
  "esbuild": "^0.28.1",