@json-to-office/core-docx 0.27.0 → 0.28.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.
@@ -1 +1 @@
1
- {"version":3,"file":"visual.d.ts","sourceRoot":"","sources":["../../src/components/visual.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,aAAa,EAEd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAY/D;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAWrE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AA0DD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CA2BhC"}
1
+ {"version":3,"file":"visual.d.ts","sourceRoot":"","sources":["../../src/components/visual.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,aAAa,EAEd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAY/D;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAWrE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AA2DD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CA+BhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cached-render.d.ts","sourceRoot":"","sources":["../../src/core/cached-render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,WAAW,EAIZ,MAAM,UAAU,CAAC;AAoBlB;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CA4BlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAEtD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIzD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,WAAW,UAAQ,GAClB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAqG5D;AAKD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC,GACD,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,kEAMrC;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,GAAG,CACvD,MAAM,EACN,OAAO,CACR,GAAG,IAAI,CAAC,CAgBR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf"}
1
+ {"version":3,"file":"cached-render.d.ts","sourceRoot":"","sources":["../../src/core/cached-render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,WAAW,EAIZ,MAAM,UAAU,CAAC;AAoBlB;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CA4BlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAEtD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIzD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,WAAW,UAAQ,GAClB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAyG5D;AAKD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC,GACD,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,kEAMrC;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,GAAG,CACvD,MAAM,EACN,OAAO,CACR,GAAG,IAAI,CAAC,CAgBR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -21,6 +21,11 @@ export interface FlattenVisualsOptions {
21
21
  dpi?: number;
22
22
  /** Max concurrent rasterizations (default 4). */
23
23
  concurrency?: number;
24
+ /**
25
+ * Directory that relative asset paths inside visuals resolve against —
26
+ * the document's own directory. Absent → the rasterizer's cwd (#142).
27
+ */
28
+ baseDir?: string;
24
29
  }
25
30
  /**
26
31
  * Return a deep copy of `doc` with every `visual` node replaced by the `image`
@@ -1 +1 @@
1
- {"version":3,"file":"flattenVisuals.d.ts","sourceRoot":"","sources":["../../src/core/flattenVisuals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAShC,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,SAAS,EAAE,cAAc,CAAC;IAC1B,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA4BD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,CAAC,CASZ"}
1
+ {"version":3,"file":"flattenVisuals.d.ts","sourceRoot":"","sources":["../../src/core/flattenVisuals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAShC,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,SAAS,EAAE,cAAc,CAAC;IAC1B,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6BD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAUZ"}
@@ -41,6 +41,12 @@ export interface JsonGenerationOptions {
41
41
  deterministic?: boolean;
42
42
  /** Build timestamp for metadata; defaults to a stable epoch. */
43
43
  generatedAt?: string | Date;
44
+ /**
45
+ * Directory that relative asset paths (image `path` props) resolve against.
46
+ * File entry points default it to the document's own directory; elsewhere
47
+ * it falls back to `process.cwd()` (#142).
48
+ */
49
+ baseDir?: string;
44
50
  }
45
51
  /**
46
52
  * Type guard to check if input is a report component definition
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,11 @@ interface RenderDocumentOptions {
13
13
  cache?: MemoryCache;
14
14
  bypassCache?: boolean;
15
15
  services?: ServicesConfig;
16
+ /**
17
+ * Directory that relative asset paths (image `path` props) resolve
18
+ * against. Defaults to `process.cwd()` when absent (#142).
19
+ */
20
+ baseDir?: string;
16
21
  }
17
22
  /**
18
23
  * Render a complete document from structure and layout
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,eAAe,EAEf,eAAe,EAKf,OAAO,EACR,MAAM,MAAM,CAAC;AAcd,OAAO,EACL,mBAAmB,EACnB,aAAa,EAed,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,OAAO,EAEL,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA0B7D,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AA8DD;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAUnB;AA6XD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,OAAO,EACvB,WAAW,UAAQ,GAClB,OAAO,CAAC,eAAe,CAAC,CAiH1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAmC5D"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,eAAe,EAEf,eAAe,EAKf,OAAO,EACR,MAAM,MAAM,CAAC;AAcd,OAAO,EACL,mBAAmB,EACnB,aAAa,EAed,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,OAAO,EAEL,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA6B7D,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA8DD;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAYnB;AA6XD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,OAAO,EACvB,WAAW,UAAQ,GAClB,OAAO,CAAC,eAAe,CAAC,CAiH1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAmC5D"}
package/dist/index.js CHANGED
@@ -1924,6 +1924,7 @@ var init_docxImagePositioning = __esm({
1924
1924
 
1925
1925
  // src/core/generator.ts
1926
1926
  import { writeFileSync } from "fs";
1927
+ import { dirname, resolve as resolve3 } from "path";
1927
1928
 
1928
1929
  // src/types/index.ts
1929
1930
  import {
@@ -2698,9 +2699,34 @@ import {
2698
2699
  } from "docx";
2699
2700
 
2700
2701
  // src/utils/imageUtils.ts
2701
- init_widthUtils();
2702
2702
  import { readFileSync } from "fs";
2703
2703
  import probe from "probe-image-size";
2704
+
2705
+ // src/utils/generationContext.ts
2706
+ import { AsyncLocalStorage } from "async_hooks";
2707
+ import { isAbsolute, resolve } from "path";
2708
+ var generationDateStorage = new AsyncLocalStorage();
2709
+ function runWithGenerationDate(date, callback) {
2710
+ return generationDateStorage.run(date, callback);
2711
+ }
2712
+ function getGenerationDate() {
2713
+ return generationDateStorage.getStore() ?? /* @__PURE__ */ new Date();
2714
+ }
2715
+ var baseDirStorage = new AsyncLocalStorage();
2716
+ function runWithBaseDir(baseDir, callback) {
2717
+ return baseDir === void 0 ? callback() : baseDirStorage.run(resolve(baseDir), callback);
2718
+ }
2719
+ function getBaseDir() {
2720
+ return baseDirStorage.getStore();
2721
+ }
2722
+ function resolveFromBaseDir(filePath) {
2723
+ const base = baseDirStorage.getStore();
2724
+ if (!base || isAbsolute(filePath)) return filePath;
2725
+ return resolve(base, filePath);
2726
+ }
2727
+
2728
+ // src/utils/imageUtils.ts
2729
+ init_widthUtils();
2704
2730
  import { ImageRun } from "docx";
2705
2731
  function parseWidthValue(width, availableWidthPx) {
2706
2732
  if (typeof width === "number") {
@@ -2876,7 +2902,7 @@ async function getImageBuffer(imagePath) {
2876
2902
  if (isValidUrl(imagePath)) {
2877
2903
  return await downloadImageFromUrl(imagePath);
2878
2904
  }
2879
- return { buffer: readFileSync(imagePath) };
2905
+ return { buffer: readFileSync(resolveFromBaseDir(imagePath)) };
2880
2906
  }
2881
2907
  async function getImageDimensions(imagePath) {
2882
2908
  try {
@@ -3948,16 +3974,6 @@ function parseTextWithHyperlinks(text, baseStyle = {}, options = {}) {
3948
3974
  return runs;
3949
3975
  }
3950
3976
 
3951
- // src/utils/generationContext.ts
3952
- import { AsyncLocalStorage } from "async_hooks";
3953
- var generationDateStorage = new AsyncLocalStorage();
3954
- function runWithGenerationDate(date, callback) {
3955
- return generationDateStorage.run(date, callback);
3956
- }
3957
- function getGenerationDate() {
3958
- return generationDateStorage.getStore() ?? /* @__PURE__ */ new Date();
3959
- }
3960
-
3961
3977
  // src/utils/placeholderProcessor.ts
3962
3978
  function styledPlaceholderText(text, context) {
3963
3979
  return new TextRun2({
@@ -4312,8 +4328,9 @@ async function renderComponentWithCache(component, theme, themeName, context, by
4312
4328
  const themeHash = createThemeHash(theme);
4313
4329
  const contextKey = context?.section ? `${context.section.currentLayout}:${context.section.columnCount}` : "no-section";
4314
4330
  const generationDateKey = getGenerationDate().toISOString();
4331
+ const baseDirKey = getBaseDir() ?? "";
4315
4332
  const childrenKey = "children" in component && component.children ? `:children:${JSON.stringify(component.children)}` : "";
4316
- const cacheKey = `component:${component.name}:${themeHash}:${contextKey}:${generationDateKey}:${componentProps}${childrenKey}`;
4333
+ const cacheKey = `component:${component.name}:${themeHash}:${contextKey}:${generationDateKey}:${baseDirKey}:${componentProps}${childrenKey}`;
4317
4334
  const cached = await componentCache.get(cacheKey);
4318
4335
  if (cached) {
4319
4336
  return cached.result;
@@ -7045,14 +7062,14 @@ function visualToImageProps(props, base64DataUri) {
7045
7062
  ...props.alt !== void 0 && { alt: props.alt }
7046
7063
  };
7047
7064
  }
7048
- async function rasterize(presentation, dpi, propsServerUrl, serviceConfig) {
7065
+ async function rasterize(presentation, dpi, propsServerUrl, serviceConfig, baseDir) {
7049
7066
  if (!isNodeEnvironment()) {
7050
7067
  throw new Error(
7051
7068
  "Visual rasterization requires a Node.js environment. It is not available in browser environments."
7052
7069
  );
7053
7070
  }
7054
7071
  if (serviceConfig?.render) {
7055
- return serviceConfig.render({ presentation, dpi });
7072
+ return serviceConfig.render({ presentation, dpi, baseDir });
7056
7073
  }
7057
7074
  const serverUrl = resolveServiceUrl(
7058
7075
  propsServerUrl,
@@ -7062,7 +7079,7 @@ async function rasterize(presentation, dpi, propsServerUrl, serviceConfig) {
7062
7079
  const response = await postJsonToService({
7063
7080
  url: serverUrl,
7064
7081
  path: "/rasterize",
7065
- body: { presentation, dpi },
7082
+ body: { presentation, dpi, ...baseDir !== void 0 && { baseDir } },
7066
7083
  headers: serviceConfig?.headers,
7067
7084
  serviceLabel: "PPTX rasterization service",
7068
7085
  onUnreachable: (url, cause) => `PPTX rasterization service is not reachable at ${url}. Configure services.pptx with a \`render\` callback or a running \`serverUrl\`.
@@ -7095,7 +7112,8 @@ async function renderVisualComponent(component, theme, themeName, context) {
7095
7112
  presentation,
7096
7113
  dpi,
7097
7114
  props.serverUrl,
7098
- serviceConfig
7115
+ serviceConfig,
7116
+ getBaseDir()
7099
7117
  );
7100
7118
  return await createImage(
7101
7119
  result.base64DataUri,
@@ -7189,10 +7207,13 @@ function coreProperties(metadata) {
7189
7207
  async function renderDocument(structure, layout, options) {
7190
7208
  return runWithGenerationDate(
7191
7209
  structure.metadata.date,
7192
- () => globalBookmarkRegistry.runScoped(
7193
- () => globalRevisionIdRegistry.runScoped(
7194
- () => globalNumberingRegistry.runScoped(
7195
- () => renderDocumentScoped(structure, layout, options)
7210
+ () => runWithBaseDir(
7211
+ options?.baseDir,
7212
+ () => globalBookmarkRegistry.runScoped(
7213
+ () => globalRevisionIdRegistry.runScoped(
7214
+ () => globalNumberingRegistry.runScoped(
7215
+ () => renderDocumentScoped(structure, layout, options)
7216
+ )
7196
7217
  )
7197
7218
  )
7198
7219
  )
@@ -7787,10 +7808,10 @@ function normalizeDocument(document) {
7787
7808
 
7788
7809
  // src/json/filesystem.ts
7789
7810
  import { promises as fs3 } from "fs";
7790
- import { join, resolve, isAbsolute } from "path";
7811
+ import { join, resolve as resolve2, isAbsolute as isAbsolute2 } from "path";
7791
7812
  async function loadJsonDefinition(filePath) {
7792
7813
  try {
7793
- const absolutePath = isAbsolute(filePath) ? filePath : resolve(filePath);
7814
+ const absolutePath = isAbsolute2(filePath) ? filePath : resolve2(filePath);
7794
7815
  await fs3.access(absolutePath);
7795
7816
  const fileContent = await fs3.readFile(absolutePath, "utf-8");
7796
7817
  return parseJsonWithLineNumbers(fileContent);
@@ -7865,7 +7886,8 @@ async function generateDocument(document, options) {
7865
7886
  options?.services,
7866
7887
  options?.fonts,
7867
7888
  options?.warnings,
7868
- resolveGenerationDate(options)
7889
+ resolveGenerationDate(options),
7890
+ options?.baseDir
7869
7891
  );
7870
7892
  }
7871
7893
  async function generateFromConfig(props, components, options) {
@@ -7876,7 +7898,7 @@ async function generateFromConfig(props, components, options) {
7876
7898
  };
7877
7899
  return await generateDocument(reportComponent, options);
7878
7900
  }
7879
- async function generateDocumentWithCustomThemes(documentIn, customThemes, services, fonts, warnings, generationDate) {
7901
+ async function generateDocumentWithCustomThemes(documentIn, customThemes, services, fonts, warnings, generationDate, baseDir) {
7880
7902
  const { document, theme, themeName } = resolveThemeContext(documentIn, {
7881
7903
  customThemes,
7882
7904
  fonts,
@@ -7892,7 +7914,8 @@ async function generateDocumentWithCustomThemes(documentIn, customThemes, servic
7892
7914
  const layout = applyLayout(structure.sections, theme, themeName);
7893
7915
  const renderedDocument = await renderDocument(structure, layout, {
7894
7916
  bypassCache: false,
7895
- services
7917
+ services,
7918
+ baseDir
7896
7919
  });
7897
7920
  return renderedDocument;
7898
7921
  }
@@ -7937,7 +7960,8 @@ async function generateDocumentFromJson(jsonConfig, options) {
7937
7960
  options?.services,
7938
7961
  options?.fonts,
7939
7962
  options?.warnings,
7940
- resolveGenerationDate(options)
7963
+ resolveGenerationDate(options),
7964
+ options?.baseDir
7941
7965
  );
7942
7966
  }
7943
7967
  function validateJsonSchema(jsonConfig) {
@@ -7953,7 +7977,10 @@ async function generateAndSaveFromJson(jsonConfig, filename, options) {
7953
7977
  }
7954
7978
  async function generateDocumentFromFile(filePath, options) {
7955
7979
  const jsonDefinition = await loadJsonDefinition(filePath);
7956
- return await generateDocumentFromJson(jsonDefinition, options);
7980
+ return await generateDocumentFromJson(jsonDefinition, {
7981
+ baseDir: dirname(resolve3(filePath)),
7982
+ ...options
7983
+ });
7957
7984
  }
7958
7985
  async function generateBufferFromFile(filePath, options) {
7959
7986
  const document = await generateDocumentFromFile(filePath, options);
@@ -8001,7 +8028,7 @@ function createLimiter(max) {
8001
8028
  };
8002
8029
  return async function limit(fn) {
8003
8030
  if (active >= max)
8004
- await new Promise((resolve2) => queue.push(resolve2));
8031
+ await new Promise((resolve4) => queue.push(resolve4));
8005
8032
  active++;
8006
8033
  try {
8007
8034
  return await fn();
@@ -8014,6 +8041,7 @@ async function flattenVisuals(doc, options) {
8014
8041
  const ctx = {
8015
8042
  rasterize: options.rasterize,
8016
8043
  dpi: options.dpi,
8044
+ baseDir: options.baseDir,
8017
8045
  limit: createLimiter(
8018
8046
  Math.max(1, options.concurrency ?? DEFAULT_CONCURRENCY)
8019
8047
  )
@@ -8024,7 +8052,11 @@ async function rasterizeVisual(obj, ctx) {
8024
8052
  const props = obj.props;
8025
8053
  const dpi = clampVisualDpi2(props.dpi ?? ctx.dpi ?? DEFAULT_VISUAL_DPI2);
8026
8054
  const result = await ctx.limit(
8027
- () => ctx.rasterize({ presentation: buildVisualPresentation(props), dpi })
8055
+ () => ctx.rasterize({
8056
+ presentation: buildVisualPresentation(props),
8057
+ dpi,
8058
+ baseDir: ctx.baseDir
8059
+ })
8028
8060
  );
8029
8061
  const image = {
8030
8062
  name: "image",
@@ -8706,7 +8738,8 @@ function createBuilderImpl(state) {
8706
8738
  fonts: state.fonts,
8707
8739
  validation: state.validation,
8708
8740
  deterministic: state.deterministic,
8709
- generatedAt: state.generatedAt
8741
+ generatedAt: state.generatedAt,
8742
+ baseDir: state.baseDir
8710
8743
  };
8711
8744
  return createBuilderImpl(
8712
8745
  newState
@@ -8805,7 +8838,8 @@ function createBuilderImpl(state) {
8805
8838
  const layout = applyLayout(structure.sections, modedTheme, themeName);
8806
8839
  const generatedDocument = await renderDocument(structure, layout, {
8807
8840
  services: state.services,
8808
- bypassCache: !state.enableCache
8841
+ bypassCache: !state.enableCache,
8842
+ baseDir: options?.baseDir ?? state.baseDir
8809
8843
  });
8810
8844
  const preservedDefinition = preserveSet ? {
8811
8845
  ...modedRoot,
@@ -8935,7 +8969,8 @@ function createDocumentGenerator(options) {
8935
8969
  fonts: options.fonts,
8936
8970
  validation: options.validation,
8937
8971
  deterministic: options.deterministic ?? true,
8938
- generatedAt: options.generatedAt
8972
+ generatedAt: options.generatedAt,
8973
+ baseDir: options.baseDir
8939
8974
  };
8940
8975
  return createBuilderImpl(initialState);
8941
8976
  }