@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.
- package/dist/components/visual.d.ts.map +1 -1
- package/dist/core/cached-render.d.ts.map +1 -1
- package/dist/core/flattenVisuals.d.ts +5 -0
- package/dist/core/flattenVisuals.d.ts.map +1 -1
- package/dist/core/generator.d.ts +6 -0
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/render.d.ts +5 -0
- package/dist/core/render.d.ts.map +1 -1
- package/dist/index.js +68 -33
- package/dist/index.js.map +1 -1
- package/dist/plugin/createDocumentGenerator.d.ts +6 -0
- package/dist/plugin/createDocumentGenerator.d.ts.map +1 -1
- package/dist/plugin/example/index.js +49 -26
- package/dist/plugin/example/index.js.map +1 -1
- package/dist/plugin/types.d.ts +6 -0
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/generationContext.d.ts +15 -0
- package/dist/utils/generationContext.d.ts.map +1 -1
- package/dist/utils/imageUtils.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -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;
|
|
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,
|
|
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;
|
|
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"}
|
package/dist/core/generator.d.ts
CHANGED
|
@@ -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":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/core/render.d.ts
CHANGED
|
@@ -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;
|
|
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
|
-
() =>
|
|
7193
|
-
|
|
7194
|
-
|
|
7195
|
-
|
|
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 =
|
|
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,
|
|
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((
|
|
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({
|
|
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
|
}
|