@openpresentation/opf 0.12.0 → 0.12.2
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/README.md +1 -1
- package/dist/audit.d.ts +3 -3
- package/dist/audit.js +6 -6
- package/dist/{catalogs-u6TEeMcz.d.ts → catalogs-BnI7JKcn.d.ts} +2 -2
- package/dist/catalogs.d.ts +1 -1
- package/dist/catalogs.js +1 -1
- package/dist/{chunk-RVN5C2FX.js → chunk-4LAM3N6S.js} +16 -16
- package/dist/{chunk-JENJZR3F.js → chunk-6LZK2IZB.js} +4 -4
- package/dist/{chunk-32DIB5BN.js → chunk-AUM5MXBR.js} +3 -3
- package/dist/{chunk-3ZGSWEHK.js → chunk-E34DJ5LL.js} +50 -14
- package/dist/{chunk-6TSDIPSH.js → chunk-HOBSL7AJ.js} +7 -1
- package/dist/{chunk-UQKJWHSS.js → chunk-JKVKYVWL.js} +3 -3
- package/dist/{chunk-JVTN3HPP.js → chunk-MWPMJE6P.js} +3 -3
- package/dist/{chunk-S667QI3M.js → chunk-RUC7L5DJ.js} +1 -1
- package/dist/{chunk-4FWCY4ZV.js → chunk-V2537ENL.js} +1 -1
- package/dist/composition.js +2 -2
- package/dist/convert.js +7 -7
- package/dist/diff.js +5 -5
- package/dist/docs.js +16 -16
- package/dist/examples.d.ts +1 -1
- package/dist/examples.js +112 -112
- package/dist/format.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +9 -9
- package/dist/lint.d.ts +3 -3
- package/dist/lint.js +5 -5
- package/dist/markdown.d.ts +3 -3
- package/dist/markdown.js +6 -6
- package/dist/pagination.js +5 -5
- package/dist/patch.js +5 -5
- package/dist/{presentation-DRx4hpNZ.d.ts → presentation-DcF-MZcz.d.ts} +1 -1
- package/dist/repo-readme.js +1 -1
- package/dist/schemas.js +1 -1
- package/dist/spec/catalogs/audiences/customers.json +5 -1
- package/dist/spec/catalogs/audiences/executives.json +5 -1
- package/dist/spec/catalogs/audiences/index.json +20 -8
- package/dist/spec/catalogs/audiences/investors.json +5 -1
- package/dist/spec/catalogs/audiences/marketing-team.json +5 -1
- package/dist/spec/catalogs/audiences/regulators.json +5 -1
- package/dist/spec/catalogs/audiences/sales-team.json +5 -1
- package/dist/spec/catalogs/manifest.json +2 -2
- package/dist/spec/reference/engine-defaults.json +1 -1
- package/dist/spec/schemas/audience.schema.json +7 -7
- package/dist/spec/schemas/narrative.schema.json +1 -1
- package/dist/spec/schemas/opf.schema.json +6 -6
- package/dist/types.d.ts +3 -3
- package/dist/{validator-bu396ffT.d.ts → validator-DfG9yxba.d.ts} +2 -2
- package/dist/validator.d.ts +3 -3
- package/dist/validator.js +4 -4
- package/package.json +3 -3
package/dist/format.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { S as SchemaEntry, a as SchemaName, b as audience, c as chartType, d as colorScheme, f as fontScheme, l as language, e as layout, n as narrative, p as presentation, g as purpose, s as schemaEntries, h as schemaNames, i as schemas, j as socialPlatform, t as theme, k as tone } from './schemas-BSjlG8-R.js';
|
|
2
|
-
import { C as CatalogKind } from './catalogs-
|
|
3
|
-
export { A as Audience, a as CatalogEntry, b as CatalogIndex, c as CatalogIndexRecord, d as CatalogRecord, e as ChartType, f as ColorScheme, F as FontScheme, L as Language, g as Layout, N as Narrative, P as Purpose, S as SocialPlatform, T as Theme, h as Tone, i as audiences, j as catalogEntries, k as catalogIndexes, l as catalogKinds, m as catalogSchemaNames, n as catalogs, o as chartTypes, p as colorSchemes, q as fontSchemes, r as languages, s as layouts, t as narratives, u as purposes, v as socialPlatforms, w as themes, x as tones } from './catalogs-
|
|
4
|
-
export { D as DEFAULT_VARIABLE_DATE_FORMAT, O as OPFValidationError, a as OPFVariableError, R as ResolveVariablesOptions, b as ResolveVariablesResult, c as VARIABLE_KINDS, d as ValidateOptions, V as ValidationIssue, e as ValidationResult, f as VariableDeclaration, g as VariableDiagnostic, h as VariableDiagnosticCode, i as VariableDiagnosticSeverity, j as VariableInfo, k as VariableKind, l as VariableUse, m as VariableUseForm, n as VariableValues, o as assertValid, p as assertValidCatalogRecord, q as assertValidPresentation, r as coerceVariableValue, s as formatVariableNumber, t as hasContentVariables, u as isTemplate, v as listVariables, w as resolveVariables, x as validate, y as validateCatalogRecord, z as validatePresentation, A as variableDeclarations } from './validator-
|
|
2
|
+
import { C as CatalogKind } from './catalogs-BnI7JKcn.js';
|
|
3
|
+
export { A as Audience, a as CatalogEntry, b as CatalogIndex, c as CatalogIndexRecord, d as CatalogRecord, e as ChartType, f as ColorScheme, F as FontScheme, L as Language, g as Layout, N as Narrative, P as Purpose, S as SocialPlatform, T as Theme, h as Tone, i as audiences, j as catalogEntries, k as catalogIndexes, l as catalogKinds, m as catalogSchemaNames, n as catalogs, o as chartTypes, p as colorSchemes, q as fontSchemes, r as languages, s as layouts, t as narratives, u as purposes, v as socialPlatforms, w as themes, x as tones } from './catalogs-BnI7JKcn.js';
|
|
4
|
+
export { D as DEFAULT_VARIABLE_DATE_FORMAT, O as OPFValidationError, a as OPFVariableError, R as ResolveVariablesOptions, b as ResolveVariablesResult, c as VARIABLE_KINDS, d as ValidateOptions, V as ValidationIssue, e as ValidationResult, f as VariableDeclaration, g as VariableDiagnostic, h as VariableDiagnosticCode, i as VariableDiagnosticSeverity, j as VariableInfo, k as VariableKind, l as VariableUse, m as VariableUseForm, n as VariableValues, o as assertValid, p as assertValidCatalogRecord, q as assertValidPresentation, r as coerceVariableValue, s as formatVariableNumber, t as hasContentVariables, u as isTemplate, v as listVariables, w as resolveVariables, x as validate, y as validateCatalogRecord, z as validatePresentation, A as variableDeclarations } from './validator-DfG9yxba.js';
|
|
5
5
|
export { SpecFileEntry, SpecFileKind, SpecFilePath, specFileEntries, specFileKinds, specFilePaths } from './spec-files.js';
|
|
6
6
|
export { LayoutPreviewIndex, LayoutPreviewRecord, getLayoutPreview, hasLayoutPreview, layoutPreviewIndex, layoutPreviewSlugs, layoutPreviews } from './previews.js';
|
|
7
|
-
export { P as Presentation } from './presentation-
|
|
7
|
+
export { P as Presentation } from './presentation-DcF-MZcz.js';
|
|
8
8
|
export { LintContract, LintDiagnostic, LintLocation, LintOptions, LintReport, LintSeverity, LintSuggestion, lintPresentation, lintSource } from './lint.js';
|
|
9
9
|
export { AuditCategory, AuditDiagnostic, AuditFix, AuditOptions, AuditPatchOperation, AuditReport, AuditRuleInfo, AuditSeverity, AuditThresholds, DEFAULT_AUDIT_THRESHOLDS, DEFAULT_CHART_PALETTE, auditPresentation, auditRules, auditSource, findAuditRule } from './audit.js';
|
|
10
10
|
import { M as MetricLayout } from './composition-DWbCiMwF.js';
|
package/dist/index.js
CHANGED
|
@@ -2,16 +2,16 @@ export { specFileEntries, specFileKinds, specFilePaths } from './chunk-GJKJL4YY.
|
|
|
2
2
|
export { getLayoutPreview, hasLayoutPreview, layoutPreviewIndex, layoutPreviewSlugs, layoutPreviews } from './chunk-PIQXLBBJ.js';
|
|
3
3
|
export { SYMBOL_FONT_ENCODINGS, SYMBOL_FONT_FAMILIES, isSymbolEncodedFamily, mapSymbolText, symbolCodeForUnicode, symbolCodeOf, symbolFontEncodingFor, symbolUnicodeFor } from './chunk-FYLJVF7X.js';
|
|
4
4
|
export { OPFDataImportError, createDataContent, parseTabularData } from './chunk-SOSOBKQ2.js';
|
|
5
|
-
export { OPFPaginationError, paginatePresentation, paginateSlide } from './chunk-
|
|
6
|
-
export { DEFAULT_AUDIT_THRESHOLDS, DEFAULT_CHART_PALETTE, auditPresentation, auditRules, auditSource, findAuditRule } from './chunk-
|
|
7
|
-
export { lintPresentation, lintSource } from './chunk-
|
|
8
|
-
export { DEFAULT_VARIABLE_DATE_FORMAT, OPFValidationError, OPFVariableError, VARIABLE_KINDS, assertValid, assertValidCatalogRecord, assertValidPresentation, coerceVariableValue, formatVariableNumber, hasContentVariables, isTemplate, listVariables, resolveVariables, validate, validateCatalogRecord, validatePresentation, variableDeclarations } from './chunk-
|
|
9
|
-
import { isRecord, visitContentPayloads, bareIdPattern } from './chunk-
|
|
10
|
-
export { CAPTIONABLE_FIELDS, CAPTION_FONT_RATIO, CAPTION_MAX_RATIO, CHART_SERIES_MIN_DIFFERENCE, CHART_SERIES_MIN_LIGHTNESS_STEP, CITATION_MARKER_RAISE, CITATION_MARKER_SCALE, DEFAULT_CHART_LABEL_SEPARATOR, DEFAULT_FONT_SCHEME, DEFAULT_FURNITURE_DATE_FORMAT, DEFAULT_SLIDE_NUMBER_FORMAT, FONT_SIZE_GRID_PER_PX, FOOTNOTE_MAX_RATIO, MAX_COMPOSITION_DEPTH, MAX_NUMBERING_LEVELS, MAX_NUMBERING_VALUE, MAX_ROMAN_VALUE, NUMBERING_STYLES, NUMBERING_SUFFIXES, OPFCompositionError, PICTURE_BULLET_SCALE, annotationText, captionSettings, chartColorForFill, chartLabelText, chartOptionSupport, chartOptionTarget, chartPaletteForFill, citationMarkerText, collectCitations, colorContrast, composeSlide, fitList, fitRichText, fitText, formatChartLabelNumber, formatChartLabelPercent, formatFurnitureDate, formatListNumber, formatSlideNumber, layoutCaption, layoutCode, layoutFootnotes, layoutFurniture, layoutMetric, layoutQuote, layoutTimeline, listNumbers, measureText, measureTextOutline, normalizeHexColor, numberingAtLevel, numberingStyleDraws, paragraphDirection, paragraphDirectionAt, physicalAlignment, placeTextLines, referencesSlide, resolveCanvasDimensions, resolveChartOptions, resolveColorRef, resolveFontFamilies, resolveFontSchemeReference, resolveLogo, resolveNumbering, resolveScriptFonts, resolveSlideDirection, resolveSocialProfile, resolveTextStyle, scriptFontRole, sliceNumberedItems, slideCitations, snapFontSizeDown, snapFontSizeUp, textColorForFill, textWidthMeasurer, walkCitationRuns, wrapText } from './chunk-
|
|
5
|
+
export { OPFPaginationError, paginatePresentation, paginateSlide } from './chunk-AUM5MXBR.js';
|
|
6
|
+
export { DEFAULT_AUDIT_THRESHOLDS, DEFAULT_CHART_PALETTE, auditPresentation, auditRules, auditSource, findAuditRule } from './chunk-6LZK2IZB.js';
|
|
7
|
+
export { lintPresentation, lintSource } from './chunk-MWPMJE6P.js';
|
|
8
|
+
export { DEFAULT_VARIABLE_DATE_FORMAT, OPFValidationError, OPFVariableError, VARIABLE_KINDS, assertValid, assertValidCatalogRecord, assertValidPresentation, coerceVariableValue, formatVariableNumber, hasContentVariables, isTemplate, listVariables, resolveVariables, validate, validateCatalogRecord, validatePresentation, variableDeclarations } from './chunk-JKVKYVWL.js';
|
|
9
|
+
import { isRecord, visitContentPayloads, bareIdPattern } from './chunk-HOBSL7AJ.js';
|
|
10
|
+
export { CAPTIONABLE_FIELDS, CAPTION_FONT_RATIO, CAPTION_MAX_RATIO, CHART_SERIES_MIN_DIFFERENCE, CHART_SERIES_MIN_LIGHTNESS_STEP, CITATION_MARKER_RAISE, CITATION_MARKER_SCALE, DEFAULT_CHART_LABEL_SEPARATOR, DEFAULT_FONT_SCHEME, DEFAULT_FURNITURE_DATE_FORMAT, DEFAULT_SLIDE_NUMBER_FORMAT, FONT_SIZE_GRID_PER_PX, FOOTNOTE_MAX_RATIO, MAX_COMPOSITION_DEPTH, MAX_NUMBERING_LEVELS, MAX_NUMBERING_VALUE, MAX_ROMAN_VALUE, NUMBERING_STYLES, NUMBERING_SUFFIXES, OPFCompositionError, PICTURE_BULLET_SCALE, annotationText, captionSettings, chartColorForFill, chartLabelText, chartOptionSupport, chartOptionTarget, chartPaletteForFill, citationMarkerText, collectCitations, colorContrast, composeSlide, fitList, fitRichText, fitText, formatChartLabelNumber, formatChartLabelPercent, formatFurnitureDate, formatListNumber, formatSlideNumber, layoutCaption, layoutCode, layoutFootnotes, layoutFurniture, layoutMetric, layoutQuote, layoutTimeline, listNumbers, measureText, measureTextOutline, normalizeHexColor, numberingAtLevel, numberingStyleDraws, paragraphDirection, paragraphDirectionAt, physicalAlignment, placeTextLines, referencesSlide, resolveCanvasDimensions, resolveChartOptions, resolveColorRef, resolveFontFamilies, resolveFontSchemeReference, resolveLogo, resolveNumbering, resolveScriptFonts, resolveSlideDirection, resolveSocialProfile, resolveTextStyle, scriptFontRole, sliceNumberedItems, slideCitations, snapFontSizeDown, snapFontSizeUp, textColorForFill, textWidthMeasurer, walkCitationRuns, wrapText } from './chunk-HOBSL7AJ.js';
|
|
11
11
|
import './chunk-S5W34SIJ.js';
|
|
12
|
-
import { catalogEntries } from './chunk-
|
|
13
|
-
export { audiences, catalogEntries, catalogIndexes, catalogKinds, catalogSchemaNames, catalogs, chartTypes, colorSchemes, fontSchemes, languages, layouts, narratives, purposes, socialPlatforms, themes, tones } from './chunk-
|
|
14
|
-
export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-
|
|
12
|
+
import { catalogEntries } from './chunk-E34DJ5LL.js';
|
|
13
|
+
export { audiences, catalogEntries, catalogIndexes, catalogKinds, catalogSchemaNames, catalogs, chartTypes, colorSchemes, fontSchemes, languages, layouts, narratives, purposes, socialPlatforms, themes, tones } from './chunk-E34DJ5LL.js';
|
|
14
|
+
export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-4LAM3N6S.js';
|
|
15
15
|
export { FONT_POLICY, applyFontPolicyDecisions, fontAvailabilityDiagnostics, fontPolicyFor } from './chunk-WXSPETQ6.js';
|
|
16
16
|
|
|
17
17
|
// src/bundle.ts
|
package/dist/lint.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { C as CatalogKind } from './catalogs-
|
|
2
|
-
import { V as ValidationIssue } from './validator-
|
|
1
|
+
import { C as CatalogKind } from './catalogs-BnI7JKcn.js';
|
|
2
|
+
import { V as ValidationIssue } from './validator-DfG9yxba.js';
|
|
3
3
|
import { J as JsonPrimitive } from './schemas-BSjlG8-R.js';
|
|
4
|
-
import './presentation-
|
|
4
|
+
import './presentation-DcF-MZcz.js';
|
|
5
5
|
|
|
6
6
|
type LintSeverity = 'error' | 'warning' | 'info';
|
|
7
7
|
interface LintLocation {
|
package/dist/lint.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { lintPresentation, lintSource } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { lintPresentation, lintSource } from './chunk-MWPMJE6P.js';
|
|
2
|
+
import './chunk-JKVKYVWL.js';
|
|
3
|
+
import './chunk-HOBSL7AJ.js';
|
|
4
4
|
import './chunk-S5W34SIJ.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-E34DJ5LL.js';
|
|
6
|
+
import './chunk-4LAM3N6S.js';
|
package/dist/markdown.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { LintDiagnostic, LintLocation, LintSeverity } from './lint.js';
|
|
2
|
-
import { P as Presentation } from './presentation-
|
|
3
|
-
import './catalogs-
|
|
2
|
+
import { P as Presentation } from './presentation-DcF-MZcz.js';
|
|
3
|
+
import './catalogs-BnI7JKcn.js';
|
|
4
4
|
import './schemas-BSjlG8-R.js';
|
|
5
|
-
import './validator-
|
|
5
|
+
import './validator-DfG9yxba.js';
|
|
6
6
|
|
|
7
7
|
interface EmbeddedPart {
|
|
8
8
|
/** JSON Pointer into the OPF document. */
|
package/dist/markdown.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { same, isRecord, parseQuoteLines, levelsFromIndents, parseCodeFence, splitWhen, runText, isPlainRun, FORMATTING, fenceCode } from './chunk-
|
|
2
|
-
import { lintPresentation } from './chunk-
|
|
3
|
-
import { validatePresentation } from './chunk-
|
|
4
|
-
import './chunk-
|
|
1
|
+
import { same, isRecord, parseQuoteLines, levelsFromIndents, parseCodeFence, splitWhen, runText, isPlainRun, FORMATTING, fenceCode } from './chunk-V2537ENL.js';
|
|
2
|
+
import { lintPresentation } from './chunk-MWPMJE6P.js';
|
|
3
|
+
import { validatePresentation } from './chunk-JKVKYVWL.js';
|
|
4
|
+
import './chunk-HOBSL7AJ.js';
|
|
5
5
|
import './chunk-S5W34SIJ.js';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
6
|
+
import './chunk-E34DJ5LL.js';
|
|
7
|
+
import './chunk-4LAM3N6S.js';
|
|
8
8
|
import { parseDocument, YAMLMap, Scalar, stringify } from 'yaml';
|
|
9
9
|
|
|
10
10
|
// src/markdown/canon.ts
|
package/dist/pagination.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { OPFPaginationError, paginatePresentation, paginateSlide } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { OPFPaginationError, paginatePresentation, paginateSlide } from './chunk-AUM5MXBR.js';
|
|
2
|
+
import './chunk-JKVKYVWL.js';
|
|
3
|
+
import './chunk-HOBSL7AJ.js';
|
|
4
4
|
import './chunk-S5W34SIJ.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-E34DJ5LL.js';
|
|
6
|
+
import './chunk-4LAM3N6S.js';
|
package/dist/patch.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { PatchError, PatchValidationError, applyPatch, applyPatchWithInverse, escapePointerToken, formatPointer, getAtPointer, hasPointer, invertPatch, jsonEqual, normalizePatch, parsePointer, pointerFromPath, readPointer, splitPointer, unescapePointerToken } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { PatchError, PatchValidationError, applyPatch, applyPatchWithInverse, escapePointerToken, formatPointer, getAtPointer, hasPointer, invertPatch, jsonEqual, normalizePatch, parsePointer, pointerFromPath, readPointer, splitPointer, unescapePointerToken } from './chunk-RUC7L5DJ.js';
|
|
2
|
+
import './chunk-JKVKYVWL.js';
|
|
3
|
+
import './chunk-HOBSL7AJ.js';
|
|
4
4
|
import './chunk-S5W34SIJ.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-E34DJ5LL.js';
|
|
6
|
+
import './chunk-4LAM3N6S.js';
|
|
@@ -618,7 +618,7 @@ interface Presentation {
|
|
|
618
618
|
author?: (string | [string, ...(string)[]]);
|
|
619
619
|
/**
|
|
620
620
|
* Intended audiences for the presentation. Accepts either:
|
|
621
|
-
* - A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('
|
|
621
|
+
* - A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executive'), an HTTPS URL, or a 'pkg:' reference.
|
|
622
622
|
* - An array of string shorthands and/or inline Audience objects for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.
|
|
623
623
|
*
|
|
624
624
|
* Resolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.
|
package/dist/repo-readme.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/generated/repo-readme.ts
|
|
2
|
-
var repoReadmeRaw = '# Open Presentation Format (OPF)\n\n[](https://www.npmjs.com/package/@openpresentation/opf)\n[](https://www.npmjs.com/package/@openpresentation/opf)\n[](./LICENSE)\n\nPublic npm package: [`@openpresentation/opf`](https://www.npmjs.com/package/@openpresentation/opf) (`npm install @openpresentation/opf`).\n\nOpen Presentation Format is the portable, human-readable JSON document format for slide decks.\n\nThis repository is the canonical home for the OPF **spec**, **JSON Schemas**, **catalog presets**, examples, generated developer types, local validation tooling, and integration docs for the render/edit/convert toolkit. OpenPresentation publishes open-source code and documentation only; it does not provide hosted APIs, hosted rendering functions, queues, storage, authentication, jobs, previews, SLAs, telemetry, or managed infrastructure.\n\nFor AI agents, use the [OPF skill set](docs/agent-skills.md) for authoring, layout, presets, editing, export, and schema inspection.\n\nPublished CLI 0.9.2 installs all six skills into your project with `npx @openpresentation/cli@0.9.2 skills install`. It uses local copies, preserves existing instructions and refuses to overwrite customized skills. See the [installation and update guide](docs/agent-skills.md) for personal or agent-specific targets and source development.\n\nFor a fresh Node 24 project that installs **published** packages (not this\ncheckout), follow the [developer quickstart](docs/quickstart.md) and the\n[compatibility matrix](docs/compatibility-matrix.md).\n\nFor LLM authoring, start with [the authoring guide](docs/llm-authoring.md), [dynamic composition](docs/dynamic-composition.md), and [local ecosystem verification](docs/ecosystem-development.md).\n\n## File naming\n\nOpen Presentation Format documents are JSON files. Use `*.opf.json` for complete OPF presentation documents, for example `board-review.opf.json` or `deck.opf.json`.\n\nAvoid using bare `*.opf` for OPF JSON. The `.opf` extension is already used by other document and project formats, while `.opf.json` keeps the OPF identity and still makes the underlying JSON format clear to editors, validators, agents, and version-control tooling.\n\n## Naming and reuse\n\nThe format name is **Open Presentation Format**. The schemas, catalogs, packages, and local tooling in this repository are free and open source under the MIT license, so third-party tools may read, write, validate, render, convert, and describe support for Open Presentation Format without adopting any product-specific branding.\n\n## Why OPF\n\n`.pptx` is a zipped bundle of XML. Humans can\'t diff it, LLMs can\'t read or write it reliably, and git can\'t track it meaningfully. Every change looks like a binary blob.\n\nOPF is plain JSON. A human can open it in an editor. A model can read and write it without guessing at schema-by-example. Decks live in git like the rest of your work.\n\nThat\'s the shift that lets LLMs actually *author* decks. When the format stops fighting them, models can do the work that matters \u2014 narrative structure, persuasive framing, data analysis, chart recommendations, ruthless revision passes \u2014 instead of wrestling with `<p:sp>` tags.\n\nAnd they don\'t start from a blank canvas. [pptx.gallery](https://pptx.gallery) is the human-browsable reference for OPF catalog presets: layouts, themes, color schemes, font schemes, chart types, narratives, audiences, purposes, tones, languages, and social platforms.\n\n## Start in three steps\n\n1. **Install the coordinated published packages** on Node 24. See [the developer quickstart](docs/quickstart.md) for the current pin set: core 0.11.4, renderer 0.11.9, editor 0.10.6, PPTX 0.11.9 and CLI 0.9.2.\n2. **Author, lint, paginate, preview and export.** Copy [`docs/quickstart/developer-quickstart.opf.json`](./docs/quickstart/developer-quickstart.opf.json) and run the commands in that guide. `validatePresentation` / `opf validate` is local schema checking, not visual verification.\n3. **Know the limits.** The [compatibility matrix](docs/compatibility-matrix.md) lists shipped APIs versus renderer issue 24, native PowerPoint issue 87, and other deferred work. Browse presets at [pptx.gallery](https://pptx.gallery).\n\nYour deck can live in git from the first commit. After installing dependencies and supplying referenced assets, these commands run locally without a model provider, account or hosted OPF API.\n\n## JavaScript and TypeScript\n\nThe canonical JavaScript/TypeScript package is published at [`packages/javascript`](./packages/javascript) as [`@openpresentation/opf`](https://www.npmjs.com/package/@openpresentation/opf). The schema is pre-stable (0.x \u2014 expect breaking changes between minor versions until 1.0). Its responsibility is local and format-level only:\n\n- export the canonical schemas from [`spec/`](./spec)\n- export bundled catalog records from [`spec/`](./spec)\n- export a typed raw spec file manifest for package-addressable `spec/` content\n- generate TypeScript types, with `Presentation` as the top-level type\n- validate OPF JSON and catalog records locally\n\nIt does not render `.pptx`, parse `.pptx`, generate content with AI, fetch remote catalogs, call hosted APIs, or provide managed services. Render/edit/convert packages live in separate MIT repos that depend on `@openpresentation/opf`. The format package also exposes pure composition geometry so those packages share layout behavior.\n\n## Toolkit libraries\n\nThe local toolkit lives in sibling repositories. See [ecosystem development](docs/ecosystem-development.md) for coordinated builds and verification, and [dynamic composition](docs/dynamic-composition.md) for portable layout rules.\n\n| Repo | Role | Boundary |\n|---|---|---|\n| `opf-render` | OPF to SVG/PNG/PDF | Local and embeddable rendering library |\n| `opf-editor` | WYSIWYG bindings/components | Headless editor primitives plus optional UI components |\n| `opf-pptx` | OPF to PPTX and PPTX to OPF | Pure local import/export library for browser and server use where supported |\n\nThese repos provide OSS primitives only. Downstream applications own hosting, auth, storage, collaboration, queues, previews, analytics, support, and workflow UX.\n\n## Usage\n\nInstall from npm:\n\n```sh\npnpm add @openpresentation/opf\n# or: npm install @openpresentation/opf\n```\n\nTo work on the package itself, clone this repo and build the workspace:\n\n```sh\npnpm install\npnpm build\n```\n\nUse the format package from JavaScript or TypeScript:\n\n```ts\nimport {\n presentation,\n audiences,\n purposes,\n tones,\n validatePresentation,\n} from "@openpresentation/opf";\n\nimport type { Presentation } from "@openpresentation/opf";\n\nconst deck: Presentation = {\n name: "Quarterly Review",\n slides: [{ title: "Quarterly Review", items: ["Revenue", "Product", "Hiring"] }],\n};\n\nconst result = validatePresentation(deck);\nconsole.log(result.valid); // schema correctness\nconsole.log(result.warnings); // advisory issues, e.g. unknown catalog ids\nconsole.log(audiences.length, purposes.length, tones.length);\n```\n\nUse focused imports when you only need one surface:\n\n```ts\nimport { presentation } from "@openpresentation/opf/schemas";\nimport { audiences, purposes } from "@openpresentation/opf/catalogs";\nimport { specFileEntries } from "@openpresentation/opf/spec-files";\nimport { validate } from "@openpresentation/opf/validator";\nimport type { Presentation } from "@openpresentation/opf/types";\n```\n\nUse raw JSON when an engine or resolver needs package-addressable files:\n\n```ts\nimport presentationSchema from "@openpresentation/opf/spec/schemas/opf.schema.json" with {\n type: "json",\n};\n```\n\nUse the [installable OPF CLI](./packages/cli/README.md) to create, validate, and edit files locally:\n\n```sh\npnpm --filter @openpresentation/cli build\nnode packages/cli/dist/index.js create deck.opf.json --title "Decision brief"\nnode packages/cli/dist/index.js validate deck.opf.json\nnode packages/cli/dist/index.js edit deck.opf.json --patch changes.json --in-place\n```\n\nSee [CSV and JSON data import](./docs/data-import.md) for editable tables and charts in the editor, CLI, and package API, and [content conversions](./docs/conversions.md) for the pure converters (`@openpresentation/opf/convert`) that change a block\'s kind, nest list items, restructure a slide and split or merge slides, and [Markdown and outlines](./docs/markdown.md) for the deterministic Markdown dialect (`@openpresentation/opf/markdown`, `opf from-md`, `opf to-md`) that reads and writes a whole deck as text.\n\nSee [Templates and variables](./docs/templates-and-variables.md) for fillable OPF templates: typed variables, `{{id}}` tokens, `opf fill` and `resolveVariables`.\n\n## Layout\n\n| Path | Contents |\n|---|---|\n| [`spec/schemas/opf.schema.json`](./spec/schemas/opf.schema.json) | Canonical JSON Schema for top-level OPF `Presentation` documents. |\n| [`docs/how-opf-works.md`](./docs/how-opf-works.md) | Conceptual introduction: the document model, content shapes, catalog resolution, and the validation philosophy. Start here. |\n| [`docs/design-resolution.md`](./docs/design-resolution.md) | The design precedence algorithm (slide design \u2192 deck design \u2192 resolved theme \u2192 engine defaults) with worked examples. |\n| [`docs/schema-reference.md`](./docs/schema-reference.md) | Author-facing reference for top-level OPF fields and every presentation schema `$defs` object/type. |\n| [`docs/catalog-schema-reference.md`](./docs/catalog-schema-reference.md) | Author-facing reference for every companion catalog schema. |\n| [`docs/content-payloads.md`](./docs/content-payloads.md) | Author-facing notes for slide and region content payloads, including chart and table object shapes. |\n| [`docs/footnotes-citations-captions.md`](./docs/footnotes-citations-captions.md) | Citations (`cite`), inline footnotes, the deck `references` list, captions on images, charts, tables and videos, and how every engine draws them. |\n| [`docs/examples.md`](./docs/examples.md) | Guide to the expanded scenario-oriented examples under `examples/gallery/`. |\n| [`docs/live-editor.md`](./docs/live-editor.md) | Browser canvas, live OPF editing, font loading, published packages, and current fidelity limits. |\n| [`docs/release-process.md`](./docs/release-process.md) | Maintainer runbook for tagging, trusted npm publishing, verification, and GitHub release notes. |\n| [`spec/schemas/*.schema.json`](./spec/schemas) | Companion schemas for catalog records and sub-objects. |\n| [`spec/catalogs/<catalog-kind>/`](./spec/catalogs) | Canonical bundled catalog records. |\n| [`spec/openapi.yaml`](./spec/openapi.yaml) | Optional reference OpenAPI contract for downstream services that choose to expose OPF over HTTP. OpenPresentation does not host this API. |\n| [`examples/technical/`](./examples/technical) | Focused OPF fixtures for validator, renderer, catalog-resolution, design, content-payload, and region behavior. |\n| [`examples/gallery/`](./examples/gallery) | Broader OPF example decks organized by industry, function, education, government, presentation type, international, and design/media scenarios. |\n| [`packages/javascript/`](./packages/javascript) | Public pre-stable source for `@openpresentation/opf`. |\n| [`packages/cli/`](./packages/cli) | Installable local CLI for creating, validating, editing, and inspecting OPF. |\n| [`legacy/`](./legacy) | Tombstone for service-specific clients, CLIs, tool integrations, and workflows removed from the OpenPresentation OSS repo. |\n\n## OpenPresentation Boundary\n\nOpenPresentation defines the format, bundled presets, local validation, examples, docs, and planned local render/edit/convert libraries. It does not provide hosted functions or managed product surfaces.\n\nFuture non-JavaScript OPF packages should follow the same local-first boundary: Python and Go packages should expose schemas, types/models, catalogs, validation, and package-addressable assets. Future toolkit packages should expose embeddable library APIs with no required network calls, hosted callbacks, hidden telemetry, or managed infrastructure assumptions.\n\nThe published JavaScript package copies package-addressable OPF schemas, catalogs, reference assets, and the optional reference `spec/openapi.yaml` from `spec/`. It intentionally remains `@openpresentation/opf` instead of introducing a separate `@openpresentation/opf-spec` package so downstream imports can advance by semver-pinning one canonical package.\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n';
|
|
2
|
+
var repoReadmeRaw = '# Open Presentation Format (OPF)\n\n[](https://www.npmjs.com/package/@openpresentation/opf)\n[](https://www.npmjs.com/package/@openpresentation/opf)\n[](./LICENSE)\n\nPublic npm package: [`@openpresentation/opf`](https://www.npmjs.com/package/@openpresentation/opf) (`npm install @openpresentation/opf`).\n\nOpen Presentation Format is the portable, human-readable JSON document format for slide decks.\n\nThis repository is the canonical home for the OPF **spec**, **JSON Schemas**, **catalog presets**, examples, generated developer types, local validation tooling, and integration docs for the render/edit/convert toolkit. OpenPresentation publishes open-source code and documentation only; it does not provide hosted APIs, hosted rendering functions, queues, storage, authentication, jobs, previews, SLAs, telemetry, or managed infrastructure.\n\nFor AI agents, use the [OPF skill set](docs/agent-skills.md) for authoring, layout, presets, editing, export, and schema inspection.\n\nPublished CLI 0.10.0 installs all six skills into your project with `npx @openpresentation/cli@0.10.0 skills install`. It uses local copies, preserves existing instructions and refuses to overwrite customized skills. See the [installation and update guide](docs/agent-skills.md) for personal or agent-specific targets and source development.\n\nFor a fresh Node 24 project that installs **published** packages (not this\ncheckout), follow the [developer quickstart](docs/quickstart.md) and the\n[compatibility matrix](docs/compatibility-matrix.md).\n\nFor LLM authoring, start with [the authoring guide](docs/llm-authoring.md), [dynamic composition](docs/dynamic-composition.md), and [local ecosystem verification](docs/ecosystem-development.md).\n\n## File naming\n\nOpen Presentation Format documents are JSON files. Use `*.opf.json` for complete OPF presentation documents, for example `board-review.opf.json` or `deck.opf.json`.\n\nAvoid using bare `*.opf` for OPF JSON. The `.opf` extension is already used by other document and project formats, while `.opf.json` keeps the OPF identity and still makes the underlying JSON format clear to editors, validators, agents, and version-control tooling.\n\n## Naming and reuse\n\nThe format name is **Open Presentation Format**. The schemas, catalogs, packages, and local tooling in this repository are free and open source under the MIT license, so third-party tools may read, write, validate, render, convert, and describe support for Open Presentation Format without adopting any product-specific branding.\n\n## Why OPF\n\n`.pptx` is a zipped bundle of XML. Humans can\'t diff it, LLMs can\'t read or write it reliably, and git can\'t track it meaningfully. Every change looks like a binary blob.\n\nOPF is plain JSON. A human can open it in an editor. A model can read and write it without guessing at schema-by-example. Decks live in git like the rest of your work.\n\nThat\'s the shift that lets LLMs actually *author* decks. When the format stops fighting them, models can do the work that matters \u2014 narrative structure, persuasive framing, data analysis, chart recommendations, ruthless revision passes \u2014 instead of wrestling with `<p:sp>` tags.\n\nAnd they don\'t start from a blank canvas. [pptx.gallery](https://pptx.gallery) is the human-browsable reference for OPF catalog presets: layouts, themes, color schemes, font schemes, chart types, narratives, audiences, purposes, tones, languages, and social platforms.\n\n## Start in three steps\n\n1. **Install the coordinated published packages** on Node 24. See [the developer quickstart](docs/quickstart.md) for the current pin set: core 0.12.1, renderer 0.12.0, editor 0.11.2, PPTX 0.12.3 and CLI 0.10.0.\n2. **Author, lint, paginate, preview and export.** Copy [`docs/quickstart/developer-quickstart.opf.json`](./docs/quickstart/developer-quickstart.opf.json) and run the commands in that guide. `validatePresentation` / `opf validate` is local schema checking, not visual verification.\n3. **Know the limits.** The [compatibility matrix](docs/compatibility-matrix.md) lists shipped APIs versus renderer issue 24, native PowerPoint issue 87, and other deferred work. Browse presets at [pptx.gallery](https://pptx.gallery).\n\nYour deck can live in git from the first commit. After installing dependencies and supplying referenced assets, these commands run locally without a model provider, account or hosted OPF API.\n\n## JavaScript and TypeScript\n\nThe canonical JavaScript/TypeScript package is published at [`packages/javascript`](./packages/javascript) as [`@openpresentation/opf`](https://www.npmjs.com/package/@openpresentation/opf). The schema is pre-stable (0.x \u2014 expect breaking changes between minor versions until 1.0). Its responsibility is local and format-level only:\n\n- export the canonical schemas from [`spec/`](./spec)\n- export bundled catalog records from [`spec/`](./spec)\n- export a typed raw spec file manifest for package-addressable `spec/` content\n- generate TypeScript types, with `Presentation` as the top-level type\n- validate OPF JSON and catalog records locally\n\nIt does not render `.pptx`, parse `.pptx`, generate content with AI, fetch remote catalogs, call hosted APIs, or provide managed services. Render/edit/convert packages live in separate MIT repos that depend on `@openpresentation/opf`. The format package also exposes pure composition geometry so those packages share layout behavior.\n\n## Toolkit libraries\n\nThe local toolkit lives in sibling repositories. See [ecosystem development](docs/ecosystem-development.md) for coordinated builds and verification, and [dynamic composition](docs/dynamic-composition.md) for portable layout rules.\n\n| Repo | Role | Boundary |\n|---|---|---|\n| `opf-render` | OPF to SVG/PNG/PDF | Local and embeddable rendering library |\n| `opf-editor` | WYSIWYG bindings/components | Headless editor primitives plus optional UI components |\n| `opf-pptx` | OPF to PPTX and PPTX to OPF | Pure local import/export library for browser and server use where supported |\n\nThese repos provide OSS primitives only. Downstream applications own hosting, auth, storage, collaboration, queues, previews, analytics, support, and workflow UX.\n\n## Usage\n\nInstall from npm:\n\n```sh\npnpm add @openpresentation/opf\n# or: npm install @openpresentation/opf\n```\n\nTo work on the package itself, clone this repo and build the workspace:\n\n```sh\npnpm install\npnpm build\n```\n\nUse the format package from JavaScript or TypeScript:\n\n```ts\nimport {\n presentation,\n audiences,\n purposes,\n tones,\n validatePresentation,\n} from "@openpresentation/opf";\n\nimport type { Presentation } from "@openpresentation/opf";\n\nconst deck: Presentation = {\n name: "Quarterly Review",\n slides: [{ title: "Quarterly Review", items: ["Revenue", "Product", "Hiring"] }],\n};\n\nconst result = validatePresentation(deck);\nconsole.log(result.valid); // schema correctness\nconsole.log(result.warnings); // advisory issues, e.g. unknown catalog ids\nconsole.log(audiences.length, purposes.length, tones.length);\n```\n\nUse focused imports when you only need one surface:\n\n```ts\nimport { presentation } from "@openpresentation/opf/schemas";\nimport { audiences, purposes } from "@openpresentation/opf/catalogs";\nimport { specFileEntries } from "@openpresentation/opf/spec-files";\nimport { validate } from "@openpresentation/opf/validator";\nimport type { Presentation } from "@openpresentation/opf/types";\n```\n\nUse raw JSON when an engine or resolver needs package-addressable files:\n\n```ts\nimport presentationSchema from "@openpresentation/opf/spec/schemas/opf.schema.json" with {\n type: "json",\n};\n```\n\nUse the [installable OPF CLI](./packages/cli/README.md) to create, validate, and edit files locally:\n\n```sh\npnpm --filter @openpresentation/cli build\nnode packages/cli/dist/index.js create deck.opf.json --title "Decision brief"\nnode packages/cli/dist/index.js validate deck.opf.json\nnode packages/cli/dist/index.js edit deck.opf.json --patch changes.json --in-place\n```\n\nSee [CSV and JSON data import](./docs/data-import.md) for editable tables and charts in the editor, CLI, and package API, and [content conversions](./docs/conversions.md) for the pure converters (`@openpresentation/opf/convert`) that change a block\'s kind, nest list items, restructure a slide and split or merge slides, and [Markdown and outlines](./docs/markdown.md) for the deterministic Markdown dialect (`@openpresentation/opf/markdown`, `opf from-md`, `opf to-md`) that reads and writes a whole deck as text.\n\nSee [Templates and variables](./docs/templates-and-variables.md) for fillable OPF templates: typed variables, `{{id}}` tokens, `opf fill` and `resolveVariables`.\n\n## Layout\n\n| Path | Contents |\n|---|---|\n| [`spec/schemas/opf.schema.json`](./spec/schemas/opf.schema.json) | Canonical JSON Schema for top-level OPF `Presentation` documents. |\n| [`docs/how-opf-works.md`](./docs/how-opf-works.md) | Conceptual introduction: the document model, content shapes, catalog resolution, and the validation philosophy. Start here. |\n| [`docs/design-resolution.md`](./docs/design-resolution.md) | The design precedence algorithm (slide design \u2192 deck design \u2192 resolved theme \u2192 engine defaults) with worked examples. |\n| [`docs/schema-reference.md`](./docs/schema-reference.md) | Author-facing reference for top-level OPF fields and every presentation schema `$defs` object/type. |\n| [`docs/catalog-schema-reference.md`](./docs/catalog-schema-reference.md) | Author-facing reference for every companion catalog schema. |\n| [`docs/content-payloads.md`](./docs/content-payloads.md) | Author-facing notes for slide and region content payloads, including chart and table object shapes. |\n| [`docs/footnotes-citations-captions.md`](./docs/footnotes-citations-captions.md) | Citations (`cite`), inline footnotes, the deck `references` list, captions on images, charts, tables and videos, and how every engine draws them. |\n| [`docs/examples.md`](./docs/examples.md) | Guide to the expanded scenario-oriented examples under `examples/gallery/`. |\n| [`docs/live-editor.md`](./docs/live-editor.md) | Browser canvas, live OPF editing, font loading, published packages, and current fidelity limits. |\n| [`docs/release-process.md`](./docs/release-process.md) | Maintainer runbook for tagging, trusted npm publishing, verification, and GitHub release notes. |\n| [`spec/schemas/*.schema.json`](./spec/schemas) | Companion schemas for catalog records and sub-objects. |\n| [`spec/catalogs/<catalog-kind>/`](./spec/catalogs) | Canonical bundled catalog records. |\n| [`spec/openapi.yaml`](./spec/openapi.yaml) | Optional reference OpenAPI contract for downstream services that choose to expose OPF over HTTP. OpenPresentation does not host this API. |\n| [`examples/technical/`](./examples/technical) | Focused OPF fixtures for validator, renderer, catalog-resolution, design, content-payload, and region behavior. |\n| [`examples/gallery/`](./examples/gallery) | Broader OPF example decks organized by industry, function, education, government, presentation type, international, and design/media scenarios. |\n| [`packages/javascript/`](./packages/javascript) | Public pre-stable source for `@openpresentation/opf`. |\n| [`packages/cli/`](./packages/cli) | Installable local CLI for creating, validating, editing, and inspecting OPF. |\n| [`legacy/`](./legacy) | Tombstone for service-specific clients, CLIs, tool integrations, and workflows removed from the OpenPresentation OSS repo. |\n\n## OpenPresentation Boundary\n\nOpenPresentation defines the format, bundled presets, local validation, examples, docs, and planned local render/edit/convert libraries. It does not provide hosted functions or managed product surfaces.\n\nFuture non-JavaScript OPF packages should follow the same local-first boundary: Python and Go packages should expose schemas, types/models, catalogs, validation, and package-addressable assets. Future toolkit packages should expose embeddable library APIs with no required network calls, hosted callbacks, hidden telemetry, or managed infrastructure assumptions.\n\nThe published JavaScript package copies package-addressable OPF schemas, catalogs, reference assets, and the optional reference `spec/openapi.yaml` from `spec/`. It intentionally remains `@openpresentation/opf` instead of introducing a separate `@openpresentation/opf-spec` package so downstream imports can advance by semver-pinning one canonical package.\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n';
|
|
3
3
|
|
|
4
4
|
// src/repo-readme.ts
|
|
5
5
|
var repoReadme = repoReadmeRaw;
|
package/dist/schemas.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-
|
|
1
|
+
export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-4LAM3N6S.js';
|
|
@@ -19,5 +19,9 @@
|
|
|
19
19
|
"casual",
|
|
20
20
|
"authoritative"
|
|
21
21
|
],
|
|
22
|
-
"tags": ["external", "customer", "sales"]
|
|
22
|
+
"tags": ["external", "customer", "sales"],
|
|
23
|
+
"deprecation": {
|
|
24
|
+
"replacedBy": "customer",
|
|
25
|
+
"reason": "Duplicate of 'customer', the id pptx.gallery publishes. Kept so existing documents keep validating and rendering unchanged; use 'customer' in new documents."
|
|
26
|
+
}
|
|
23
27
|
}
|
|
@@ -19,5 +19,9 @@
|
|
|
19
19
|
"authoritative",
|
|
20
20
|
"persuasive"
|
|
21
21
|
],
|
|
22
|
-
"tags": ["leadership", "decision-making"]
|
|
22
|
+
"tags": ["leadership", "decision-making"],
|
|
23
|
+
"deprecation": {
|
|
24
|
+
"replacedBy": "executive",
|
|
25
|
+
"reason": "Duplicate of 'executive', the id pptx.gallery publishes. Kept so existing documents keep validating and rendering unchanged; use 'executive' in new documents."
|
|
26
|
+
}
|
|
23
27
|
}
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
"$schema": "https://openpresentation.org/schema/opf-catalog-index/v1",
|
|
3
3
|
"kind": "audiences",
|
|
4
4
|
"version": "1",
|
|
5
|
-
"description": "Catalog of presentation audiences available in the openpresentation.org catalog. Each entry is a lightweight summary; full audience records (seniority, technical fluency, decision power, attention budget, recommended narratives and tones) live in the per-id JSON files alongside this index. Audiences are referenced from OPF documents via audience. The singular ids from executive onward match the audience pages on pptx.gallery and carry its recommendations
|
|
6
|
-
"contentSha256": "
|
|
5
|
+
"description": "Catalog of presentation audiences available in the openpresentation.org catalog. Each entry is a lightweight summary; full audience records (seniority, technical fluency, decision power, attention budget, recommended narratives and tones) live in the per-id JSON files alongside this index. Audiences are referenced from OPF documents via audience. The singular ids from executive onward match the audience pages on pptx.gallery and carry its recommendations. The older plural ids (executives, investors, customers, sales-team, marketing-team, regulators) are deprecated aliases: they stay resolvable for existing documents, point at their singular replacement through replacedBy, and are excluded from default listings.",
|
|
6
|
+
"contentSha256": "bfb44226b533a2da04c92077eb39c689dde43181e0b9979fb15c247dfaba1f98",
|
|
7
7
|
"records": [
|
|
8
8
|
{
|
|
9
9
|
"id": "executives",
|
|
10
10
|
"name": "Executives",
|
|
11
11
|
"summary": "Senior leaders who need the recommendation up front, the evidence behind it, and the ask.",
|
|
12
|
-
"file": "executives.json"
|
|
12
|
+
"file": "executives.json",
|
|
13
|
+
"deprecated": true,
|
|
14
|
+
"replacedBy": "executive"
|
|
13
15
|
},
|
|
14
16
|
{
|
|
15
17
|
"id": "board",
|
|
@@ -27,25 +29,33 @@
|
|
|
27
29
|
"id": "investors",
|
|
28
30
|
"name": "Investors",
|
|
29
31
|
"summary": "Capital allocators evaluating fit, traction, and risk-adjusted return.",
|
|
30
|
-
"file": "investors.json"
|
|
32
|
+
"file": "investors.json",
|
|
33
|
+
"deprecated": true,
|
|
34
|
+
"replacedBy": "investor"
|
|
31
35
|
},
|
|
32
36
|
{
|
|
33
37
|
"id": "customers",
|
|
34
38
|
"name": "Customers",
|
|
35
39
|
"summary": "Buyers and users — outcome-focused, allergic to jargon, sensitive to time.",
|
|
36
|
-
"file": "customers.json"
|
|
40
|
+
"file": "customers.json",
|
|
41
|
+
"deprecated": true,
|
|
42
|
+
"replacedBy": "customer"
|
|
37
43
|
},
|
|
38
44
|
{
|
|
39
45
|
"id": "sales-team",
|
|
40
46
|
"name": "Sales Team",
|
|
41
47
|
"summary": "Quota-carrying reps who want talk tracks, objection handling, and crisp proof.",
|
|
42
|
-
"file": "sales-team.json"
|
|
48
|
+
"file": "sales-team.json",
|
|
49
|
+
"deprecated": true,
|
|
50
|
+
"replacedBy": "sales"
|
|
43
51
|
},
|
|
44
52
|
{
|
|
45
53
|
"id": "marketing-team",
|
|
46
54
|
"name": "Marketing Team",
|
|
47
55
|
"summary": "Brand and demand-gen practitioners aligning on positioning, messaging, and campaigns.",
|
|
48
|
-
"file": "marketing-team.json"
|
|
56
|
+
"file": "marketing-team.json",
|
|
57
|
+
"deprecated": true,
|
|
58
|
+
"replacedBy": "marketing"
|
|
49
59
|
},
|
|
50
60
|
{
|
|
51
61
|
"id": "all-hands",
|
|
@@ -63,7 +73,9 @@
|
|
|
63
73
|
"id": "regulators",
|
|
64
74
|
"name": "Regulators",
|
|
65
75
|
"summary": "Government, agency, and policy reviewers evaluating compliance, risk, and impact.",
|
|
66
|
-
"file": "regulators.json"
|
|
76
|
+
"file": "regulators.json",
|
|
77
|
+
"deprecated": true,
|
|
78
|
+
"replacedBy": "regulatory"
|
|
67
79
|
},
|
|
68
80
|
{
|
|
69
81
|
"id": "executive",
|
|
@@ -19,5 +19,9 @@
|
|
|
19
19
|
"authoritative",
|
|
20
20
|
"inspirational"
|
|
21
21
|
],
|
|
22
|
-
"tags": ["external", "capital", "fundraising"]
|
|
22
|
+
"tags": ["external", "capital", "fundraising"],
|
|
23
|
+
"deprecation": {
|
|
24
|
+
"replacedBy": "investor",
|
|
25
|
+
"reason": "Duplicate of 'investor', the id pptx.gallery publishes. Kept so existing documents keep validating and rendering unchanged; use 'investor' in new documents."
|
|
26
|
+
}
|
|
23
27
|
}
|
|
@@ -19,5 +19,9 @@
|
|
|
19
19
|
"persuasive",
|
|
20
20
|
"authoritative"
|
|
21
21
|
],
|
|
22
|
-
"tags": ["internal", "go-to-market", "brand"]
|
|
22
|
+
"tags": ["internal", "go-to-market", "brand"],
|
|
23
|
+
"deprecation": {
|
|
24
|
+
"replacedBy": "marketing",
|
|
25
|
+
"reason": "Duplicate of 'marketing', the id pptx.gallery publishes. Kept so existing documents keep validating and rendering unchanged; use 'marketing' in new documents."
|
|
26
|
+
}
|
|
23
27
|
}
|
|
@@ -19,5 +19,9 @@
|
|
|
19
19
|
"authoritative",
|
|
20
20
|
"technical"
|
|
21
21
|
],
|
|
22
|
-
"tags": ["external", "compliance", "policy"]
|
|
22
|
+
"tags": ["external", "compliance", "policy"],
|
|
23
|
+
"deprecation": {
|
|
24
|
+
"replacedBy": "regulatory",
|
|
25
|
+
"reason": "Duplicate of 'regulatory', the id pptx.gallery publishes. Kept so existing documents keep validating and rendering unchanged; use 'regulatory' in new documents."
|
|
26
|
+
}
|
|
23
27
|
}
|
|
@@ -19,5 +19,9 @@
|
|
|
19
19
|
"persuasive",
|
|
20
20
|
"conversational"
|
|
21
21
|
],
|
|
22
|
-
"tags": ["internal", "go-to-market", "enablement"]
|
|
22
|
+
"tags": ["internal", "go-to-market", "enablement"],
|
|
23
|
+
"deprecation": {
|
|
24
|
+
"replacedBy": "sales",
|
|
25
|
+
"reason": "Duplicate of 'sales', the id pptx.gallery publishes. Kept so existing documents keep validating and rendering unchanged; use 'sales' in new documents."
|
|
26
|
+
}
|
|
23
27
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://openpresentation.org/schema/opf-catalog-manifest/v1",
|
|
3
|
-
"description": "Pinned snapshot of the default OPF catalog published by pptx.gallery. Written by scripts/sync-gallery-catalog.mjs; change a kind's `mode` by hand, everything else by re-running the sync.",
|
|
3
|
+
"description": "Pinned snapshot of the default OPF catalog published by pptx.gallery. Written by scripts/sync-gallery-catalog.mjs; change a kind's `mode` by hand, everything else by re-running the sync. `layouts` is a subset by design (RR-41, opf#292), not by omission: it bundles 100 of the gallery's 485 layouts, and the other 385 resolve through the default catalog or an inline record, because bundling them adds about 382 KB (19 KB gzipped) to every browser bundle of the renderer, editor and exporter for records none of them read.",
|
|
4
4
|
"publisher": "https://www.pptx.gallery",
|
|
5
5
|
"source": {
|
|
6
6
|
"repository": "https://github.com/Data-Advantage/pptx-gallery",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"audiences": {
|
|
12
12
|
"mode": "subset",
|
|
13
13
|
"records": 22,
|
|
14
|
-
"contentSha256": "
|
|
14
|
+
"contentSha256": "bfb44226b533a2da04c92077eb39c689dde43181e0b9979fb15c247dfaba1f98",
|
|
15
15
|
"gallery": {
|
|
16
16
|
"records": 22,
|
|
17
17
|
"contentSha256": "90ab1b5a3c55ff36ec8c05595a2b0f90a18c108af82c959b33f204f077ee4e51"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://openpresentation.org/schema/opf-audience/v1",
|
|
4
4
|
"title": "Audience",
|
|
5
|
-
"description": "Schema for audience records in the pptx.gallery library. Each record names an audience archetype (e.g. '
|
|
5
|
+
"description": "Schema for audience records in the pptx.gallery library. Each record names an audience archetype (e.g. 'executive', 'engineering-team', 'investor') and carries seniority, technical-fluency, decision-power, and attention-budget hints used by AI-driven generation. Audiences are referenced from OPF documents via audience; the engine resolves the reference against catalogs.audiences (inline) → catalogs.audiences.source → the default catalog at https://www.pptx.gallery/audiences. The audience field also accepts free-form strings; this catalog is for engine-aware audience archetypes that carry generation hints.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
8
|
"$schema",
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
21
21
|
"description": "Stable slug used by OPF documents to reference this audience via audience. Lowercase kebab-case.",
|
|
22
22
|
"examples": [
|
|
23
|
-
"
|
|
23
|
+
"executive",
|
|
24
24
|
"board",
|
|
25
25
|
"engineering-team",
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"sales
|
|
29
|
-
"marketing
|
|
26
|
+
"investor",
|
|
27
|
+
"customer",
|
|
28
|
+
"sales",
|
|
29
|
+
"marketing",
|
|
30
30
|
"all-hands",
|
|
31
31
|
"candidates",
|
|
32
|
-
"
|
|
32
|
+
"regulatory"
|
|
33
33
|
]
|
|
34
34
|
},
|
|
35
35
|
"name": {
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"items": {
|
|
62
62
|
"type": "string"
|
|
63
63
|
},
|
|
64
|
-
"description": "Audiences this narrative works well for, e.g. ['
|
|
64
|
+
"description": "Audiences this narrative works well for, e.g. ['executive', 'investor', 'customer']."
|
|
65
65
|
},
|
|
66
66
|
"durationRange": {
|
|
67
67
|
"type": "object",
|
|
@@ -75,15 +75,15 @@
|
|
|
75
75
|
"minItems": 1
|
|
76
76
|
}
|
|
77
77
|
],
|
|
78
|
-
"description": "Intended audiences for the presentation. Accepts either:\n- A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('
|
|
78
|
+
"description": "Intended audiences for the presentation. Accepts either:\n- A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executive'), an HTTPS URL, or a 'pkg:' reference.\n- An array of string shorthands and/or inline Audience objects for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.",
|
|
79
79
|
"examples": [
|
|
80
|
-
"
|
|
80
|
+
"executive",
|
|
81
81
|
"Biology Students and Wildlife Enthusiasts",
|
|
82
|
-
["
|
|
82
|
+
["executive"],
|
|
83
83
|
["board", "c-suite"],
|
|
84
84
|
["Series B investors", "https://acme.com/decks/audiences/acme-board.json"],
|
|
85
85
|
[
|
|
86
|
-
{ "id": "
|
|
86
|
+
{ "id": "executive", "attentionBudgetMinutes": 20 },
|
|
87
87
|
{ "name": "Regional Sales Leaders", "seniority": "director", "technicalFluency": "medium", "decisionPower": "advisory" }
|
|
88
88
|
]
|
|
89
89
|
]
|
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
"type": "string",
|
|
298
298
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
299
299
|
"description": "Optional audiences catalog id to resolve before applying inline overrides.",
|
|
300
|
-
"examples": ["
|
|
300
|
+
"examples": ["executive", "board", "engineering-team"]
|
|
301
301
|
},
|
|
302
302
|
"name": {
|
|
303
303
|
"type": "string",
|
|
@@ -697,7 +697,7 @@
|
|
|
697
697
|
"type": "array",
|
|
698
698
|
"items": { "type": "string" },
|
|
699
699
|
"description": "Audiences this narrative works well for. Free-form strings or 'audiences' catalog ids.",
|
|
700
|
-
"examples": [["
|
|
700
|
+
"examples": [["executive", "investor", "customer"]]
|
|
701
701
|
},
|
|
702
702
|
"durationRange": {
|
|
703
703
|
"type": "object",
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { P as Presentation } from './presentation-
|
|
2
|
-
export { A as Audience, C as CatalogKind, e as ChartType, f as ColorScheme, F as FontScheme, L as Language, g as Layout, N as Narrative, P as Purpose, S as SocialPlatform, T as Theme, h as Tone } from './catalogs-
|
|
1
|
+
export { P as Presentation } from './presentation-DcF-MZcz.js';
|
|
2
|
+
export { A as Audience, C as CatalogKind, e as ChartType, f as ColorScheme, F as FontScheme, L as Language, g as Layout, N as Narrative, P as Purpose, S as SocialPlatform, T as Theme, h as Tone } from './catalogs-BnI7JKcn.js';
|
|
3
3
|
export { a as SchemaName } from './schemas-BSjlG8-R.js';
|
|
4
|
-
export { V as ValidationIssue, e as ValidationResult } from './validator-
|
|
4
|
+
export { V as ValidationIssue, e as ValidationResult } from './validator-DfG9yxba.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as Presentation } from './presentation-
|
|
2
|
-
import { C as CatalogKind } from './catalogs-
|
|
1
|
+
import { P as Presentation } from './presentation-DcF-MZcz.js';
|
|
2
|
+
import { C as CatalogKind } from './catalogs-BnI7JKcn.js';
|
|
3
3
|
import { a as SchemaName, m as JsonSchema } from './schemas-BSjlG8-R.js';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/validator.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import './catalogs-
|
|
1
|
+
import './catalogs-BnI7JKcn.js';
|
|
2
2
|
import './schemas-BSjlG8-R.js';
|
|
3
|
-
import './presentation-
|
|
4
|
-
export { O as OPFValidationError, S as SchemaOrKind, d as ValidateOptions, V as ValidationIssue, e as ValidationResult, o as assertValid, p as assertValidCatalogRecord, q as assertValidPresentation, B as promotedRegionKeys, x as validate, y as validateCatalogRecord, z as validatePresentation } from './validator-
|
|
3
|
+
import './presentation-DcF-MZcz.js';
|
|
4
|
+
export { O as OPFValidationError, S as SchemaOrKind, d as ValidateOptions, V as ValidationIssue, e as ValidationResult, o as assertValid, p as assertValidCatalogRecord, q as assertValidPresentation, B as promotedRegionKeys, x as validate, y as validateCatalogRecord, z as validatePresentation } from './validator-DfG9yxba.js';
|
package/dist/validator.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { OPFValidationError, assertValid, assertValidCatalogRecord, assertValidPresentation, validate, validateCatalogRecord, validatePresentation } from './chunk-
|
|
2
|
-
export { promotedRegionKeys } from './chunk-
|
|
1
|
+
export { OPFValidationError, assertValid, assertValidCatalogRecord, assertValidPresentation, validate, validateCatalogRecord, validatePresentation } from './chunk-JKVKYVWL.js';
|
|
2
|
+
export { promotedRegionKeys } from './chunk-HOBSL7AJ.js';
|
|
3
3
|
import './chunk-S5W34SIJ.js';
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import './chunk-E34DJ5LL.js';
|
|
5
|
+
import './chunk-4LAM3N6S.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openpresentation/opf",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.2",
|
|
4
4
|
"description": "Canonical Open Presentation Format schemas, catalogs, TypeScript types, and local validation.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Open Presentation",
|
|
@@ -128,14 +128,14 @@
|
|
|
128
128
|
"package.json"
|
|
129
129
|
],
|
|
130
130
|
"engines": {
|
|
131
|
-
"node": "
|
|
131
|
+
"node": ">=22"
|
|
132
132
|
},
|
|
133
133
|
"scripts": {
|
|
134
134
|
"clean": "rm -rf dist src/generated",
|
|
135
135
|
"generate": "node scripts/generate.mjs && node scripts/generate-previews.mjs && node scripts/generate-content.mjs",
|
|
136
136
|
"build": "pnpm run generate && tsup && node scripts/copy-spec.mjs",
|
|
137
137
|
"typecheck": "pnpm run generate && node ../../scripts/typecheck.mjs --noEmit",
|
|
138
|
-
"test": "pnpm run build && node ../../scripts/run-
|
|
138
|
+
"test": "pnpm run build && node ../../scripts/run-tests.mjs",
|
|
139
139
|
"test:packed": "node test/packed-install-smoke.mjs",
|
|
140
140
|
"pack:dry-run": "pnpm run build && npm pack --dry-run --cache /tmp/opf-npm-cache"
|
|
141
141
|
},
|