pagyra-js 0.0.1
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/.eslintrc.json +30 -0
- package/CHANGELOG.md +13 -0
- package/README.md +275 -0
- package/UA_Styles_Chromium.md +93 -0
- package/_ext/woff2_conversion/brotli-decode.d.ts +139 -0
- package/_ext/woff2_conversion/brotli-encode.d.ts +129 -0
- package/_ext/woff2_conversion/brotli-port.d.ts +12 -0
- package/_ext/woff2_conversion/brotli-shared-dictionary.d.ts +25 -0
- package/_ext/woff2_conversion/brotli-types.d.ts +15 -0
- package/_ext/woff2_conversion/woff2-common.d.ts +37 -0
- package/_ext/woff2_conversion/woff2-decode.d.ts +32 -0
- package/_ext/woff2_conversion/woff2-encode.d.ts +31 -0
- package/_ext/woff2_conversion/woff2-output.d.ts +39 -0
- package/_ext/woff2_original_cpp/brotli/brotli.c +1559 -0
- package/_ext/woff2_original_cpp/brotli/brotli.md +116 -0
- package/_ext/woff2_original_cpp/brotli/decode.h +409 -0
- package/_ext/woff2_original_cpp/brotli/encode.h +505 -0
- package/_ext/woff2_original_cpp/brotli/port.h +302 -0
- package/_ext/woff2_original_cpp/brotli/shared_dictionary.h +100 -0
- package/_ext/woff2_original_cpp/brotli/types.h +83 -0
- package/_ext/woff2_original_cpp/cmake/FindBrotliDec.cmake +35 -0
- package/_ext/woff2_original_cpp/cmake/FindBrotliEnc.cmake +35 -0
- package/_ext/woff2_original_cpp/include/woff2/decode.h +36 -0
- package/_ext/woff2_original_cpp/include/woff2/encode.h +43 -0
- package/_ext/woff2_original_cpp/include/woff2/output.h +86 -0
- package/_ext/woff2_original_cpp/src/buffer.h +164 -0
- package/_ext/woff2_original_cpp/src/convert_woff2ttf_fuzzer.cc +13 -0
- package/_ext/woff2_original_cpp/src/convert_woff2ttf_fuzzer_new_entry.cc +12 -0
- package/_ext/woff2_original_cpp/src/file.h +30 -0
- package/_ext/woff2_original_cpp/src/font.cc +400 -0
- package/_ext/woff2_original_cpp/src/font.h +105 -0
- package/_ext/woff2_original_cpp/src/glyph.cc +383 -0
- package/_ext/woff2_original_cpp/src/glyph.h +71 -0
- package/_ext/woff2_original_cpp/src/normalize.cc +314 -0
- package/_ext/woff2_original_cpp/src/normalize.h +39 -0
- package/_ext/woff2_original_cpp/src/port.h +66 -0
- package/_ext/woff2_original_cpp/src/round.h +27 -0
- package/_ext/woff2_original_cpp/src/store_bytes.h +55 -0
- package/_ext/woff2_original_cpp/src/table_tags.cc +82 -0
- package/_ext/woff2_original_cpp/src/table_tags.h +30 -0
- package/_ext/woff2_original_cpp/src/transform.cc +430 -0
- package/_ext/woff2_original_cpp/src/transform.h +26 -0
- package/_ext/woff2_original_cpp/src/variable_length.cc +129 -0
- package/_ext/woff2_original_cpp/src/variable_length.h +30 -0
- package/_ext/woff2_original_cpp/src/woff2_common.cc +50 -0
- package/_ext/woff2_original_cpp/src/woff2_common.h +64 -0
- package/_ext/woff2_original_cpp/src/woff2_compress.cc +43 -0
- package/_ext/woff2_original_cpp/src/woff2_dec.cc +1398 -0
- package/_ext/woff2_original_cpp/src/woff2_decompress.cc +41 -0
- package/_ext/woff2_original_cpp/src/woff2_enc.cc +458 -0
- package/_ext/woff2_original_cpp/src/woff2_info.cc +142 -0
- package/_ext/woff2_original_cpp/src/woff2_out.cc +63 -0
- package/assets/fonts/ttf/arimo/Arimo-Bold.ttf +0 -0
- package/assets/fonts/ttf/arimo/Arimo-BoldItalic.ttf +0 -0
- package/assets/fonts/ttf/arimo/Arimo-Italic.ttf +0 -0
- package/assets/fonts/ttf/arimo/Arimo-Regular.ttf +0 -0
- package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Black.ttf +0 -0
- package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Bold.ttf +0 -0
- package/assets/fonts/ttf/cinzeldecorative/CinzelDecorative-Regular.ttf +0 -0
- package/assets/fonts/ttf/dejavu/DejaVuSans.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-Bold.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-Light.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-Medium.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-Regular.ttf +0 -0
- package/assets/fonts/ttf/firecode/FiraCode-SemiBold.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-Bold.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-Light.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-Medium.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-Regular.ttf +0 -0
- package/assets/fonts/ttf/notoemoji/NotoEmoji-SemiBold.ttf +0 -0
- package/assets/fonts/ttf/notosans/NotoSans-Regular.ttf +0 -0
- package/assets/fonts/ttf/roboto/Roboto-Bold.ttf +0 -0
- package/assets/fonts/ttf/roboto/Roboto-BoldItalic.ttf +0 -0
- package/assets/fonts/ttf/roboto/Roboto-Italic.ttf +0 -0
- package/assets/fonts/ttf/roboto/Roboto-Regular.ttf +0 -0
- package/assets/fonts/ttf/stixtwomath/STIXTwoMath-Regular.ttf +0 -0
- package/assets/fonts/ttf/tinos/Tinos-Bold.ttf +0 -0
- package/assets/fonts/ttf/tinos/Tinos-BoldItalic.ttf +0 -0
- package/assets/fonts/ttf/tinos/Tinos-Italic.ttf +0 -0
- package/assets/fonts/ttf/tinos/Tinos-Regular.ttf +0 -0
- package/assets/fonts/woff/lato/lato-latin-400-italic.woff +0 -0
- package/assets/fonts/woff/lato/lato-latin-400-normal.woff +0 -0
- package/assets/fonts/woff/lato/lato-latin-700-italic.woff +0 -0
- package/assets/fonts/woff/lato/lato-latin-700-normal.woff +0 -0
- package/assets/fonts/woff2/caveat/Caveat-Bold.woff2 +0 -0
- package/assets/fonts/woff2/caveat/Caveat-Regular.woff2 +0 -0
- package/assets/fonts/woff2/lato/lato-latin-400-italic.woff2 +0 -0
- package/assets/fonts/woff2/lato/lato-latin-400-normal.woff2 +0 -0
- package/assets/fonts/woff2/lato/lato-latin-700-italic.woff2 +0 -0
- package/assets/fonts/woff2/lato/lato-latin-700-normal.woff2 +0 -0
- package/docs/AGENTS.md +288 -0
- package/docs/BACKGROUND-REPEAT-IMPLEMENTATION.md +127 -0
- package/docs/BACKGROUND-REPEAT-REFERENCE.md +127 -0
- package/docs/BACKGROUND-REPEAT-SPACE-ROUND.md +164 -0
- package/docs/css-properties-support.md +256 -0
- package/docs/src_modules_table.md +172 -0
- package/docs/text-overlap-fix.md +85 -0
- package/docs/text-overlap-investigation.md +27 -0
- package/eslint.config.js +36 -0
- package/glyph_measure.htm +1458 -0
- package/package.json +50 -0
- package/playground/browser-entry.ts +2 -0
- package/playground/exports/background-text-debug.pdf +0 -0
- package/playground/public/app.js +875 -0
- package/playground/public/assets/1.webp +0 -0
- package/playground/public/examples/accents-test.html +24 -0
- package/playground/public/examples/advanced-selectors-demo.html +118 -0
- package/playground/public/examples/background-advanced-showcase.html +82 -0
- package/playground/public/examples/background-clip-text.html +36 -0
- package/playground/public/examples/background-origin-showcase.html +137 -0
- package/playground/public/examples/background-position-showcase.html +83 -0
- package/playground/public/examples/background-repeat-showcase.html +83 -0
- package/playground/public/examples/background-repeat-space-round.html +348 -0
- package/playground/public/examples/background-size-showcase.html +82 -0
- package/playground/public/examples/background-text-debug.html +18 -0
- package/playground/public/examples/baseline-test.html +24 -0
- package/playground/public/examples/bold-showcase.html +150 -0
- package/playground/public/examples/bold-strike-example.html +12 -0
- package/playground/public/examples/border-collapse-test.html +23 -0
- package/playground/public/examples/centered-shadow-div.html +72 -0
- package/playground/public/examples/css-variables.html +50 -0
- package/playground/public/examples/debug-accents.html +11 -0
- package/playground/public/examples/debug-text-overlap.html +46 -0
- package/playground/public/examples/flex-gap-column.html +130 -0
- package/playground/public/examples/flex-gap-row.html +137 -0
- package/playground/public/examples/flex-padding-test.html +29 -0
- package/playground/public/examples/flexbox-text-test.html +193 -0
- package/playground/public/examples/fonts-demo.html +126 -0
- package/playground/public/examples/footer-example.html +4 -0
- package/playground/public/examples/gradient-text.html +54 -0
- package/playground/public/examples/grid-gap-demo.html +156 -0
- package/playground/public/examples/header-example.html +4 -0
- package/playground/public/examples/header-footer-example.html +27 -0
- package/playground/public/examples/image-showcase.html +33 -0
- package/playground/public/examples/justify-text.html +22 -0
- package/playground/public/examples/linear-gradient-example.html +38 -0
- package/playground/public/examples/lorem-span.html +14 -0
- package/playground/public/examples/margin-block-showcase.html +21 -0
- package/playground/public/examples/margin-inline-showcase.html +21 -0
- package/playground/public/examples/monthly-summary.html +95 -0
- package/playground/public/examples/multi-page-lorem.html +190 -0
- package/playground/public/examples/opacity-debug.html +39 -0
- package/playground/public/examples/opacity-example.html +70 -0
- package/playground/public/examples/png-image-example.html +13 -0
- package/playground/public/examples/red-rectangle.html +18 -0
- package/playground/public/examples/repro.html +24 -0
- package/playground/public/examples/rounded-borders-test.html +24 -0
- package/playground/public/examples/simple-list.html +89 -0
- package/playground/public/examples/simple-svg.html +37 -0
- package/playground/public/examples/simple-table.html +52 -0
- package/playground/public/examples/skew-div.html +138 -0
- package/playground/public/examples/skew-text.html +21 -0
- package/playground/public/examples/starter-report.css +51 -0
- package/playground/public/examples/starter-report.html +23 -0
- package/playground/public/examples/svg-aspect-ratio-showcase.html +116 -0
- package/playground/public/examples/svg-gradients-linear.html +28 -0
- package/playground/public/examples/svg-gradients-radial.html +29 -0
- package/playground/public/examples/svg-gradients-showcase.html +66 -0
- package/playground/public/examples/svg-image-path-test.html +43 -0
- package/playground/public/examples/svg-images-clipping.html +27 -0
- package/playground/public/examples/svg-path-gallery.html +118 -0
- package/playground/public/examples/svg-radial-transform-demo.html +78 -0
- package/playground/public/examples/svg-transform-stack.html +103 -0
- package/playground/public/examples/svg-transforms-demo.html +127 -0
- package/playground/public/examples/table-merge-test.html +34 -0
- package/playground/public/examples/text-decoration-showcase.html +138 -0
- package/playground/public/examples/text-indent-showcase.html +137 -0
- package/playground/public/examples/text-shadow-example.html +29 -0
- package/playground/public/examples/very-complex-css.html +293 -0
- package/playground/public/examples/webp-example.html +13 -0
- package/playground/public/examples/z-index-demo.html +93 -0
- package/playground/public/examples.json +240 -0
- package/playground/public/images/dice.png +0 -0
- package/playground/public/images/duck.jpg +0 -0
- package/playground/public/index.html +149 -0
- package/playground/public/mode.js +1 -0
- package/playground/public/styles.css +382 -0
- package/playground/public/tmp-h2-debug.html +33 -0
- package/playground/public/tmp-italic-debug.html +32 -0
- package/playground/public/vendor/codemirror/codemirror.min.css +1 -0
- package/playground/public/vendor/codemirror/codemirror.min.js +1 -0
- package/playground/public/vendor/codemirror/css.min.js +1 -0
- package/playground/public/vendor/codemirror/darcula.min.css +1 -0
- package/playground/public/vendor/codemirror/htmlmixed.min.js +1 -0
- package/playground/public/vendor/codemirror/javascript.min.js +1 -0
- package/playground/public/vendor/codemirror/xml.min.js +1 -0
- package/playground/public/vendor/pagyra-playground-browser.js +165966 -0
- package/playground/public/vendor/pagyra-playground-browser.js.map +7 -0
- package/playground/server.d.ts +1 -0
- package/playground/server.js +68 -0
- package/playground/server.ts +128 -0
- package/scripts/browser-build.ts +101 -0
- package/scripts/build-browser-bundle.ts +52 -0
- package/scripts/glyph-comparison/simulate.ts +744 -0
- package/scripts/playground-browser-server.ts +57 -0
- package/scripts/probe-roboto.ts +6 -0
- package/scripts/render-playground-example.ts +121 -0
- package/scripts/run-glyph-atlas-tuner-runner.mjs +113 -0
- package/scripts/run-glyph-atlas-tuner.ts +141 -0
- package/scripts/top-ts-files.ps1 +39 -0
- package/scripts/top-ts-files.sh +37 -0
- package/scripts/woff2_info.ps1 +132 -0
- package/src/browser-entry.ts +14 -0
- package/src/compression/adler32.ts +45 -0
- package/src/compression/brotli/brotli.ts +463 -0
- package/src/compression/brotli/index.ts +15 -0
- package/src/compression/brotli/transform.ts +184 -0
- package/src/compression/brotli/types.ts +58 -0
- package/src/compression/brotli/utils.ts +157 -0
- package/src/compression/brotli/vendor/bit_reader.js +124 -0
- package/src/compression/brotli/vendor/context.js +250 -0
- package/src/compression/brotli/vendor/decode.d.ts +2 -0
- package/src/compression/brotli/vendor/decode.js +938 -0
- package/src/compression/brotli/vendor/dictionary-data.js +9469 -0
- package/src/compression/brotli/vendor/dictionary.js +36 -0
- package/src/compression/brotli/vendor/huffman.js +123 -0
- package/src/compression/brotli/vendor/package.json +3 -0
- package/src/compression/brotli/vendor/prefix.js +60 -0
- package/src/compression/brotli/vendor/streams.js +31 -0
- package/src/compression/brotli/vendor/transform.js +247 -0
- package/src/compression/brotli/vendor-decode.d.ts +4 -0
- package/src/compression/brotli/woff2-glyf-transform.ts +623 -0
- package/src/compression/decompress.ts +16 -0
- package/src/compression/deflate.ts +295 -0
- package/src/compression/index.ts +4 -0
- package/src/compression/types.ts +26 -0
- package/src/compression/utils.ts +107 -0
- package/src/core.ts +18 -0
- package/src/css/apply-declarations.ts +86 -0
- package/src/css/background-types.ts +65 -0
- package/src/css/browser-defaults.ts +16 -0
- package/src/css/clip-path-types.ts +13 -0
- package/src/css/compute-style.ts +494 -0
- package/src/css/css-unit-resolver.ts +65 -0
- package/src/css/custom-properties.ts +215 -0
- package/src/css/enums.ts +127 -0
- package/src/css/font-face-parser.ts +233 -0
- package/src/css/font-weight.ts +65 -0
- package/src/css/inline-style-parser.ts +27 -0
- package/src/css/layout-property-resolver.ts +75 -0
- package/src/css/length.ts +141 -0
- package/src/css/line-height.ts +96 -0
- package/src/css/named-colors.ts +150 -0
- package/src/css/parsers/background-parser-extended.ts +111 -0
- package/src/css/parsers/background-parser.ts +456 -0
- package/src/css/parsers/border-block-parser.ts +26 -0
- package/src/css/parsers/border-inline-parser.ts +26 -0
- package/src/css/parsers/border-parser-extended.ts +256 -0
- package/src/css/parsers/border-parser.ts +175 -0
- package/src/css/parsers/box-shadow-parser.ts +106 -0
- package/src/css/parsers/clip-path-parser.ts +92 -0
- package/src/css/parsers/color-parser.ts +14 -0
- package/src/css/parsers/dimension-parser.ts +117 -0
- package/src/css/parsers/display-flex-parser.ts +59 -0
- package/src/css/parsers/flex-parser.ts +144 -0
- package/src/css/parsers/font-parser.ts +40 -0
- package/src/css/parsers/gradient-parser.ts +366 -0
- package/src/css/parsers/grid-parser-extended.ts +55 -0
- package/src/css/parsers/grid-parser.ts +218 -0
- package/src/css/parsers/length-parser.ts +95 -0
- package/src/css/parsers/list-style-parser.ts +39 -0
- package/src/css/parsers/margin-block-parser.ts +12 -0
- package/src/css/parsers/margin-inline-parser.ts +12 -0
- package/src/css/parsers/margin-parser.ts +30 -0
- package/src/css/parsers/opacity-parser.ts +32 -0
- package/src/css/parsers/overflow-wrap-parser.ts +38 -0
- package/src/css/parsers/padding-block-parser.ts +12 -0
- package/src/css/parsers/padding-inline-parser.ts +12 -0
- package/src/css/parsers/padding-parser.ts +30 -0
- package/src/css/parsers/position-parser.ts +75 -0
- package/src/css/parsers/register-parsers.ts +302 -0
- package/src/css/parsers/registry.ts +18 -0
- package/src/css/parsers/text-parser-extended.ts +144 -0
- package/src/css/parsers/text-parser.ts +25 -0
- package/src/css/parsers/text-shadow-parser.ts +94 -0
- package/src/css/properties/box-model.ts +82 -0
- package/src/css/properties/flexbox.ts +44 -0
- package/src/css/properties/gap.ts +14 -0
- package/src/css/properties/grid.ts +94 -0
- package/src/css/properties/layout.ts +59 -0
- package/src/css/properties/misc.ts +44 -0
- package/src/css/properties/typography.ts +71 -0
- package/src/css/properties/visual.ts +68 -0
- package/src/css/selectors/matcher.ts +219 -0
- package/src/css/selectors/parser.ts +163 -0
- package/src/css/selectors/simple-key.ts +31 -0
- package/src/css/selectors/specificity.ts +41 -0
- package/src/css/selectors/types.ts +31 -0
- package/src/css/shorthands/border-shorthand.ts +68 -0
- package/src/css/shorthands/box-shorthand.ts +33 -0
- package/src/css/style-inheritance.ts +50 -0
- package/src/css/style.ts +402 -0
- package/src/css/ua-defaults/base-defaults.ts +266 -0
- package/src/css/ua-defaults/browser-defaults.ts +134 -0
- package/src/css/ua-defaults/element-defaults.ts +374 -0
- package/src/css/ua-defaults/types.ts +43 -0
- package/src/css/unit-conversion.ts +24 -0
- package/src/css/utils.ts +108 -0
- package/src/css/viewport.ts +17 -0
- package/src/debug/audit.ts +20 -0
- package/src/debug/ids.ts +13 -0
- package/src/debug/log.js +28 -0
- package/src/debug/log.ts +52 -0
- package/src/debug/tree.ts +57 -0
- package/src/dom/node.ts +133 -0
- package/src/environment/browser-environment.ts +78 -0
- package/src/environment/environment.ts +35 -0
- package/src/environment/global.ts +13 -0
- package/src/environment/node-environment.browser.ts +28 -0
- package/src/environment/node-environment.ts +64 -0
- package/src/fonts/detector.ts +28 -0
- package/src/fonts/engines/ttf-engine.ts +28 -0
- package/src/fonts/engines/woff-engine.ts +38 -0
- package/src/fonts/engines/woff2-engine.ts +41 -0
- package/src/fonts/extractors/metrics-extractor.ts +362 -0
- package/src/fonts/font-registry-resolver.ts +132 -0
- package/src/fonts/index.ts +3 -0
- package/src/fonts/orchestrator.ts +92 -0
- package/src/fonts/parsers/base-parser.ts +23 -0
- package/src/fonts/types.ts +85 -0
- package/src/fonts/utils/ttf-reconstructor.ts +120 -0
- package/src/fonts/woff/decoder.ts +105 -0
- package/src/fonts/woff2/buffer.ts +106 -0
- package/src/fonts/woff2/decoder.ts +981 -0
- package/src/geometry/box.ts +48 -0
- package/src/geometry/matrix.ts +59 -0
- package/src/html/css/parse-css.ts +85 -0
- package/src/html/dom-converter.ts +433 -0
- package/src/html/image-converter.ts +200 -0
- package/src/html-to-pdf.ts +410 -0
- package/src/image/base-decoder.ts +149 -0
- package/src/image/image-service.ts +188 -0
- package/src/image/jpeg-decoder.ts +73 -0
- package/src/image/png-decoder.ts +550 -0
- package/src/image/types.ts +20 -0
- package/src/image/webp-decoder.ts +242 -0
- package/src/image/webp-huffman.ts +218 -0
- package/src/image/webp-riff-parser.ts +54 -0
- package/src/image/webp-vp8l-decoder.ts +199 -0
- package/src/index.ts +35 -0
- package/src/layout/context/float-context.ts +62 -0
- package/src/layout/context/layout-environment.ts +29 -0
- package/src/layout/debug.ts +18 -0
- package/src/layout/inline/bounding-box-calculator.ts +132 -0
- package/src/layout/inline/font-baseline-calculator.ts +76 -0
- package/src/layout/inline/inline-utils.ts +94 -0
- package/src/layout/inline/layout.ts +285 -0
- package/src/layout/inline/line_breaker.ts +109 -0
- package/src/layout/inline/measurement.ts +144 -0
- package/src/layout/inline/run-placer.ts +139 -0
- package/src/layout/inline/text-alignment.ts +70 -0
- package/src/layout/inline/tokenizer.ts +195 -0
- package/src/layout/inline/types.ts +76 -0
- package/src/layout/pipeline/context-factory.ts +16 -0
- package/src/layout/pipeline/default-engine.ts +24 -0
- package/src/layout/pipeline/engine.ts +59 -0
- package/src/layout/pipeline/layout-tree.ts +13 -0
- package/src/layout/pipeline/out-of-flow-manager.ts +73 -0
- package/src/layout/pipeline/strategy.ts +12 -0
- package/src/layout/pipeline/text-metrics-initializer.ts +13 -0
- package/src/layout/strategies/block.ts +236 -0
- package/src/layout/strategies/display-none.ts +14 -0
- package/src/layout/strategies/fallback.ts +15 -0
- package/src/layout/strategies/flex.ts +477 -0
- package/src/layout/strategies/fragmentation.ts +17 -0
- package/src/layout/strategies/grid.ts +247 -0
- package/src/layout/strategies/image.ts +342 -0
- package/src/layout/strategies/inline.ts +128 -0
- package/src/layout/strategies/table.ts +595 -0
- package/src/layout/table/cell_layout.ts +31 -0
- package/src/layout/table/diagnostics.ts +19 -0
- package/src/layout/text-run.ts +42 -0
- package/src/layout/utils/content-measurer.ts +117 -0
- package/src/layout/utils/display-utils.ts +24 -0
- package/src/layout/utils/floats.ts +98 -0
- package/src/layout/utils/gap-calculator.ts +167 -0
- package/src/layout/utils/inline-formatter.ts +31 -0
- package/src/layout/utils/inline-formatting.ts +9 -0
- package/src/layout/utils/margin.ts +140 -0
- package/src/layout/utils/node-math.ts +237 -0
- package/src/layout/utils/overflow.ts +14 -0
- package/src/layout/utils/sizing.ts +12 -0
- package/src/layout/utils/text-metrics.ts +361 -0
- package/src/logging/debug.ts +58 -0
- package/src/pdf/font/base14/widths-courier-bold.ts +159 -0
- package/src/pdf/font/base14/widths-courier.ts +159 -0
- package/src/pdf/font/base14/widths-helvetica-bold.ts +158 -0
- package/src/pdf/font/base14/widths-helvetica.ts +158 -0
- package/src/pdf/font/base14/widths-times-bold.ts +158 -0
- package/src/pdf/font/base14/widths-times-roman.ts +158 -0
- package/src/pdf/font/base14/widths-types.ts +25 -0
- package/src/pdf/font/base14-widths.ts +32 -0
- package/src/pdf/font/blur.ts +81 -0
- package/src/pdf/font/builtin-fonts.browser.ts +262 -0
- package/src/pdf/font/builtin-fonts.ts +126 -0
- package/src/pdf/font/composite-glyph-parser.ts +242 -0
- package/src/pdf/font/embedder.ts +395 -0
- package/src/pdf/font/font-config.ts +190 -0
- package/src/pdf/font/font-registry.ts +263 -0
- package/src/pdf/font/font-subset.ts +258 -0
- package/src/pdf/font/glyph-atlas-maxrects.ts +305 -0
- package/src/pdf/font/glyph-atlas-tuner.ts +98 -0
- package/src/pdf/font/glyph-atlas.ts +226 -0
- package/src/pdf/font/glyph-cache.ts +127 -0
- package/src/pdf/font/loca-reader.ts +109 -0
- package/src/pdf/font/managers/font-resource-manager.ts +73 -0
- package/src/pdf/font/managers/subset-resource-manager.ts +164 -0
- package/src/pdf/font/rasterizer.ts +270 -0
- package/src/pdf/font/resolvers/base-font-mapper.ts +77 -0
- package/src/pdf/font/resolvers/family-resolver.ts +33 -0
- package/src/pdf/font/resolvers/weight-style-applicator.ts +63 -0
- package/src/pdf/font/simple-glyph-parser.ts +289 -0
- package/src/pdf/font/to-unicode.ts +109 -0
- package/src/pdf/font/transformation-matrix.ts +136 -0
- package/src/pdf/font/ttf-cmap.ts +180 -0
- package/src/pdf/font/ttf-global-metrics.ts +58 -0
- package/src/pdf/font/ttf-glyf.ts +125 -0
- package/src/pdf/font/ttf-glyph-metrics.ts +43 -0
- package/src/pdf/font/ttf-lite.ts +269 -0
- package/src/pdf/font/ttf-table-parser.ts +132 -0
- package/src/pdf/font/ttf-table-provider.ts +61 -0
- package/src/pdf/font/widths.ts +79 -0
- package/src/pdf/font-subset/font-registry.ts +127 -0
- package/src/pdf/header-footer-layout.ts +153 -0
- package/src/pdf/header-footer-painter.ts +209 -0
- package/src/pdf/header-footer-renderer.ts +357 -0
- package/src/pdf/header-footer-tokens.ts +55 -0
- package/src/pdf/header-footer.ts +25 -0
- package/src/pdf/layout-tree-builder.ts +261 -0
- package/src/pdf/page-painter.ts +241 -0
- package/src/pdf/pagination.ts +155 -0
- package/src/pdf/primitives/pdf-builder.ts +378 -0
- package/src/pdf/primitives/pdf-bytes.ts +40 -0
- package/src/pdf/primitives/pdf-document.ts +108 -0
- package/src/pdf/primitives/pdf-reference-manager.ts +47 -0
- package/src/pdf/primitives/pdf-resource-registries.ts +255 -0
- package/src/pdf/primitives/pdf-serializers.ts +194 -0
- package/src/pdf/primitives/pdf-types.ts +73 -0
- package/src/pdf/render.ts +210 -0
- package/src/pdf/renderer/box-painter.ts +236 -0
- package/src/pdf/renderer/page-paint.ts +102 -0
- package/src/pdf/renderer/paint-box-shadows.ts +218 -0
- package/src/pdf/renderer/radius.ts +58 -0
- package/src/pdf/renderers/graphics-state-manager.ts +40 -0
- package/src/pdf/renderers/image-renderer.ts +127 -0
- package/src/pdf/renderers/radius-utils.ts +80 -0
- package/src/pdf/renderers/rectangle-renderer.ts +129 -0
- package/src/pdf/renderers/rounded-rect-path.ts +120 -0
- package/src/pdf/renderers/shape-renderer.ts +563 -0
- package/src/pdf/renderers/shape-utils.ts +194 -0
- package/src/pdf/renderers/text-decoration-renderer.ts +313 -0
- package/src/pdf/renderers/text-encoder.ts +41 -0
- package/src/pdf/renderers/text-font-resolver.ts +75 -0
- package/src/pdf/renderers/text-renderer-utils.ts +28 -0
- package/src/pdf/renderers/text-renderer.ts +391 -0
- package/src/pdf/renderers/text-shadow-renderer.ts +300 -0
- package/src/pdf/shading/gradient-service.ts +525 -0
- package/src/pdf/shading/index.ts +1 -0
- package/src/pdf/stacking/build-stacking-contexts.ts +93 -0
- package/src/pdf/stacking/resolve-paint-order.ts +157 -0
- package/src/pdf/stacking/types.ts +40 -0
- package/src/pdf/svg/aspect-ratio.ts +81 -0
- package/src/pdf/svg/coordinate-mapper.ts +81 -0
- package/src/pdf/svg/geometry-builder.ts +45 -0
- package/src/pdf/svg/render-svg.ts +296 -0
- package/src/pdf/svg/shape-renderer.ts +463 -0
- package/src/pdf/svg/style-computer.ts +246 -0
- package/src/pdf/transform-adapter.ts +26 -0
- package/src/pdf/types.ts +377 -0
- package/src/pdf/utils/background-layer-resolver.ts +439 -0
- package/src/pdf/utils/background-tiles.ts +192 -0
- package/src/pdf/utils/border-dashes.ts +109 -0
- package/src/pdf/utils/border-radius-utils.ts +86 -0
- package/src/pdf/utils/box-dimensions-utils.ts +47 -0
- package/src/pdf/utils/clip-path-resolver.ts +50 -0
- package/src/pdf/utils/clipping-path-builder.ts +190 -0
- package/src/pdf/utils/color-utils.ts +102 -0
- package/src/pdf/utils/coordinate-transformer.ts +30 -0
- package/src/pdf/utils/drop-shadow-raster.ts +233 -0
- package/src/pdf/utils/encoding.ts +98 -0
- package/src/pdf/utils/glyph-atlas-registrar.ts +13 -0
- package/src/pdf/utils/glyph-run-renderer.ts +129 -0
- package/src/pdf/utils/image-command-partitioner.ts +28 -0
- package/src/pdf/utils/image-matrix-builder.ts +31 -0
- package/src/pdf/utils/image-utils.ts +26 -0
- package/src/pdf/utils/list-utils.ts +194 -0
- package/src/pdf/utils/node-text-run-factory.ts +202 -0
- package/src/pdf/utils/page-resource-registrar.ts +46 -0
- package/src/pdf/utils/result-combiner.ts +102 -0
- package/src/pdf/utils/shadow-utils.ts +127 -0
- package/src/pdf/utils/text-alignment-resolver.ts +76 -0
- package/src/pdf/utils/text-decoration-utils.ts +64 -0
- package/src/pdf/utils/text-layout-adjuster.ts +185 -0
- package/src/pdf/utils/text-utils.ts +193 -0
- package/src/pdf/utils/transform-scope-manager.ts +69 -0
- package/src/render/offset.ts +170 -0
- package/src/shim/empty.ts +2 -0
- package/src/shim/fs-empty.ts +5 -0
- package/src/shim/url-empty.ts +7 -0
- package/src/shim/zlib-empty.ts +9 -0
- package/src/style/shorthands/index.ts +19 -0
- package/src/style/ua/defaults.ts +69 -0
- package/src/svg/index.ts +4 -0
- package/src/svg/parser-registry.ts +71 -0
- package/src/svg/parser.ts +486 -0
- package/src/svg/path-data.ts +515 -0
- package/src/svg/types.ts +194 -0
- package/src/text/line-breaker.ts +321 -0
- package/src/text/text-transform.ts +43 -0
- package/src/text/text.ts +33 -0
- package/src/transform/css-parser.ts +95 -0
- package/src/types/fonts.ts +62 -0
- package/src/types/public.ts +19 -0
- package/src/units/page-utils.ts +58 -0
- package/src/units/units.ts +50 -0
- package/src/utils/base64.ts +24 -0
- package/test-output.txt +79 -0
- package/tests/css/background-parser.spec.ts +14 -0
- package/tests/css/clip-path-parser.spec.ts +66 -0
- package/tests/environment/path-resolution.spec.ts +104 -0
- package/tests/helpers/ai-layout-diagnostics.ts +141 -0
- package/tests/helpers/render-utils.ts +52 -0
- package/tests/helpers/text-geometry.ts +56 -0
- package/tests/layout/custom-properties.test.ts +38 -0
- package/tests/layout/gap-calculator.spec.ts +196 -0
- package/tests/layout/inline-background-alignment.spec.ts +93 -0
- package/tests/layout/inline-fragments.spec.ts +26 -0
- package/tests/layout/run-placer-baseline.spec.ts +108 -0
- package/tests/pdf/alignments.spec.ts +26 -0
- package/tests/pdf/background-clip.spec.ts +57 -0
- package/tests/pdf/background-repeat-space-round.spec.ts +35 -0
- package/tests/pdf/background-repeat.spec.ts +137 -0
- package/tests/pdf/border-radius.spec.ts +151 -0
- package/tests/pdf/clip-path.spec.ts +92 -0
- package/tests/pdf/radial-gradient.spec.ts +50 -0
- package/tests/pdf/svg-stroke-dash.spec.ts +81 -0
- package/tests/pdf/text-transform-matrix.spec.ts +43 -0
- package/tsconfig.json +17 -0
- package/types/fonts.js +10 -0
- package/vitest.config.ts +9 -0
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"env": {
|
|
3
|
+
"browser": true,
|
|
4
|
+
"node": true,
|
|
5
|
+
"es2021": true,
|
|
6
|
+
"jest": true
|
|
7
|
+
},
|
|
8
|
+
"parser": "@typescript-eslint/parser",
|
|
9
|
+
"parserOptions": {
|
|
10
|
+
"ecmaVersion": "latest",
|
|
11
|
+
"sourceType": "module"
|
|
12
|
+
},
|
|
13
|
+
"plugins": [
|
|
14
|
+
"@typescript-eslint"
|
|
15
|
+
],
|
|
16
|
+
"extends": [
|
|
17
|
+
"eslint:recommended",
|
|
18
|
+
"plugin:@typescript-eslint/recommended"
|
|
19
|
+
],
|
|
20
|
+
"rules": {
|
|
21
|
+
"no-undef": "off",
|
|
22
|
+
"@typescript-eslint/no-unused-vars": [
|
|
23
|
+
"error",
|
|
24
|
+
{
|
|
25
|
+
"argsIgnorePattern": "^_"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"@typescript-eslint/no-explicit-any": "warn"
|
|
29
|
+
}
|
|
30
|
+
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Full `overflow-wrap` / `word-wrap` parsing, inheritance, and layout support so long tokens wrap deterministically in PDF output.
|
|
7
|
+
- Support for resolving `em`/`rem` units (font-size, spacing, borders, shadows, grids) using inherited/root font sizes to keep layout deterministic.
|
|
8
|
+
- `text-transform` parsing plus layout/PDF rendering so uppercase/lowercase/capitalize behave deterministically across the pipeline.
|
|
9
|
+
- Support for SVG `stroke-dasharray` and `stroke-dashoffset` attributes for dashed line rendering.
|
|
10
|
+
- Support for CSS custom properties (variables) with inheritance, fallback values, and `var()` function resolution.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Apply justified spacing consistently across all inline fragments by marking the last line during inline layout and reusing it in PDF text-run generation.
|
package/README.md
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# Pagyra-js
|
|
2
|
+
|
|
3
|
+
A TypeScript-based HTML to PDF converter library with comprehensive CSS support and advanced layout capabilities.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### Core Capabilities
|
|
8
|
+
- **HTML to PDF Conversion**: Convert HTML content to PDF with precise layout control
|
|
9
|
+
- **Comprehensive CSS Support**: Full CSS parsing, inheritance, and layout support
|
|
10
|
+
- **Advanced Text Handling**: Complete text layout with overflow wrapping, justification, and text transformation
|
|
11
|
+
- **Font Management**: Built-in font support with custom font embedding via `@font-face`
|
|
12
|
+
- **Cross-Platform**: Works in both Node.js and browser environments
|
|
13
|
+
|
|
14
|
+
### Recent Additions (from CHANGELOG)
|
|
15
|
+
- **Overflow Wrapping**: Full `overflow-wrap` / `word-wrap` parsing and layout support
|
|
16
|
+
- **Relative Units**: Support for `em`/`rem` units using inherited/root font sizes
|
|
17
|
+
- **Text Transformation**: `text-transform` parsing and rendering (uppercase/lowercase/capitalize)
|
|
18
|
+
- **SVG Stroke Support**: `stroke-dasharray` and `stroke-dashoffset` for dashed line rendering
|
|
19
|
+
- **CSS Variables**: Custom properties with inheritance and `var()` function resolution
|
|
20
|
+
- **Justified Text**: Consistent justified spacing across all inline fragments
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install pagyra-js
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
### Minimal Example (HTML only)
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { renderHtmlToPdf } from 'pagyra-js';
|
|
34
|
+
|
|
35
|
+
// Minimal usage - only HTML is required
|
|
36
|
+
// Other parameters will use sensible defaults (A4 size, standard margins)
|
|
37
|
+
const pdfBytes = await renderHtmlToPdf({
|
|
38
|
+
html: '<h1>Hello World</h1><p>This is a PDF generated from HTML!</p>'
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Basic Example with Full Control
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
import { renderHtmlToPdf } from 'pagyra-js';
|
|
46
|
+
|
|
47
|
+
const pdfBytes = await renderHtmlToPdf({
|
|
48
|
+
html: '<h1>Hello World</h1><p>This is a PDF generated from HTML!</p>',
|
|
49
|
+
css: 'body { font-family: Arial; } h1 { color: blue; }',
|
|
50
|
+
viewportWidth: 800,
|
|
51
|
+
viewportHeight: 600,
|
|
52
|
+
pageWidth: 800,
|
|
53
|
+
pageHeight: 1100,
|
|
54
|
+
margins: { top: 20, right: 20, bottom: 20, left: 20 }
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Save or use the PDF bytes
|
|
58
|
+
fs.writeFileSync('output.pdf', Buffer.from(pdfBytes));
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Advanced Example with Custom Fonts
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
import { renderHtmlToPdf } from 'pagyra-js';
|
|
65
|
+
|
|
66
|
+
const pdfBytes = await renderHtmlToPdf({
|
|
67
|
+
html: `
|
|
68
|
+
<div class="container">
|
|
69
|
+
<h1>Advanced PDF Example</h1>
|
|
70
|
+
<p class="justified">This text will be justified and use custom fonts.</p>
|
|
71
|
+
<div class="box">Styled box with border-radius</div>
|
|
72
|
+
</div>
|
|
73
|
+
`,
|
|
74
|
+
css: `
|
|
75
|
+
@font-face {
|
|
76
|
+
font-family: 'CustomFont';
|
|
77
|
+
src: url('/path/to/font.woff2') format('woff2');
|
|
78
|
+
font-weight: normal;
|
|
79
|
+
}
|
|
80
|
+
body {
|
|
81
|
+
font-family: 'CustomFont', Arial;
|
|
82
|
+
font-size: 14px;
|
|
83
|
+
}
|
|
84
|
+
.justified {
|
|
85
|
+
text-align: justify;
|
|
86
|
+
overflow-wrap: break-word;
|
|
87
|
+
}
|
|
88
|
+
.box {
|
|
89
|
+
width: 200px;
|
|
90
|
+
height: 100px;
|
|
91
|
+
background-color: #f0f0f0;
|
|
92
|
+
border-radius: 8px;
|
|
93
|
+
border: 1px solid #ccc;
|
|
94
|
+
}
|
|
95
|
+
`,
|
|
96
|
+
viewportWidth: 1000,
|
|
97
|
+
viewportHeight: 800,
|
|
98
|
+
pageWidth: 1000,
|
|
99
|
+
pageHeight: 1400,
|
|
100
|
+
margins: { top: 30, right: 30, bottom: 30, left: 30 },
|
|
101
|
+
fontConfig: {
|
|
102
|
+
fontFaceDefs: [
|
|
103
|
+
{
|
|
104
|
+
name: 'CustomFont',
|
|
105
|
+
family: 'CustomFont',
|
|
106
|
+
src: '/path/to/font.woff2',
|
|
107
|
+
weight: 400,
|
|
108
|
+
style: 'normal'
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## API Reference
|
|
116
|
+
|
|
117
|
+
### Main Functions
|
|
118
|
+
|
|
119
|
+
#### `renderHtmlToPdf(options: RenderHtmlOptions): Promise<Uint8Array>`
|
|
120
|
+
|
|
121
|
+
Converts HTML to PDF and returns the PDF as a Uint8Array.
|
|
122
|
+
|
|
123
|
+
**Parameters:**
|
|
124
|
+
|
|
125
|
+
**Mandatory Parameters:**
|
|
126
|
+
- `html`: HTML content string (the only truly required parameter)
|
|
127
|
+
|
|
128
|
+
**Optional Parameters (with sensible defaults available):**
|
|
129
|
+
- `css`: CSS styles string (defaults to empty string)
|
|
130
|
+
- `viewportWidth`: Viewport width in pixels (can be calculated from page size)
|
|
131
|
+
- `viewportHeight`: Viewport height in pixels (can be calculated from page size)
|
|
132
|
+
- `pageWidth`: Page width in pixels (defaults to A4 width: ~595pt/8.27in)
|
|
133
|
+
- `pageHeight`: Page height in pixels (defaults to A4 height: ~841pt/11.69in)
|
|
134
|
+
- `margins`: Page margins in pixels (defaults to standard A4 margins: ~36pt/0.5in all sides)
|
|
135
|
+
- `debug`: Enable debug logging (optional, defaults to false)
|
|
136
|
+
- `debugLevel`: Debug log level (optional)
|
|
137
|
+
- `debugCats`: Debug categories (optional)
|
|
138
|
+
- `fontConfig`: Font configuration (optional, loads built-in fonts by default)
|
|
139
|
+
- `resourceBaseDir`: Base directory for resource resolution (optional)
|
|
140
|
+
- `assetRootDir`: Asset root directory (optional)
|
|
141
|
+
- `headerFooter`: Header/footer configuration (optional)
|
|
142
|
+
- `environment`: Environment abstraction (Node/browser, optional - defaults to Node environment)
|
|
143
|
+
|
|
144
|
+
**Note:** While the TypeScript interface requires all parameters, in practice only `html` is truly mandatory. The playground server demonstrates how to compute reasonable defaults for other parameters using helper functions like `sanitizeDimension()` and `resolvePageMarginsPx()`.
|
|
145
|
+
|
|
146
|
+
#### `prepareHtmlRender(options: RenderHtmlOptions): Promise<PreparedRender>`
|
|
147
|
+
|
|
148
|
+
Prepares HTML for rendering without generating the final PDF. Useful for debugging layout.
|
|
149
|
+
|
|
150
|
+
**Returns:**
|
|
151
|
+
- `layoutRoot`: Root layout node
|
|
152
|
+
- `renderTree`: Render tree structure
|
|
153
|
+
- `pageSize`: Page dimensions in points
|
|
154
|
+
- `margins`: Applied margins
|
|
155
|
+
|
|
156
|
+
### CSS Support
|
|
157
|
+
|
|
158
|
+
Pagyra-js supports a comprehensive set of CSS properties:
|
|
159
|
+
|
|
160
|
+
- **Layout**: `display`, `position`, `float`, `clear`, `z-index`
|
|
161
|
+
- **Box Model**: `width`, `height`, `margin`, `padding`, `border`, `box-sizing`
|
|
162
|
+
- **Flexbox**: `flex-direction`, `flex-wrap`, `justify-content`, `align-items`, etc.
|
|
163
|
+
- **Grid**: `grid-template`, `grid-gap`, `grid-auto-flow`
|
|
164
|
+
- **Text**: `font-family`, `font-size`, `font-weight`, `line-height`, `text-align`, `text-transform`, `overflow-wrap`
|
|
165
|
+
- **Colors**: `color`, `background-color`, `opacity`
|
|
166
|
+
- **Spacing**: `gap`, `margin-block`, `margin-inline`
|
|
167
|
+
- **Units**: `px`, `em`, `rem`, `pt`, `mm`, `cm`, `in`, `%`
|
|
168
|
+
- **Custom Properties**: CSS variables with `var()`
|
|
169
|
+
|
|
170
|
+
### Font Configuration
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
interface FontConfig {
|
|
174
|
+
fontFaceDefs: Array<{
|
|
175
|
+
name: string;
|
|
176
|
+
family: string;
|
|
177
|
+
src: string;
|
|
178
|
+
data?: ArrayBuffer; // Font data (required for browser environment)
|
|
179
|
+
weight: number;
|
|
180
|
+
style: 'normal' | 'italic';
|
|
181
|
+
}>;
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Development
|
|
186
|
+
|
|
187
|
+
### Project Structure
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
src/
|
|
191
|
+
├── core.ts # Core exports and types
|
|
192
|
+
├── html-to-pdf.ts # Main HTML to PDF conversion logic
|
|
193
|
+
├── index.ts # Main entry point
|
|
194
|
+
├── browser-entry.ts # Browser-specific entry point
|
|
195
|
+
├── css/ # CSS parsing and styling
|
|
196
|
+
├── dom/ # DOM node handling
|
|
197
|
+
├── html/ # HTML parsing and conversion
|
|
198
|
+
├── layout/ # Layout calculation engine
|
|
199
|
+
├── pdf/ # PDF generation and rendering
|
|
200
|
+
├── svg/ # SVG support
|
|
201
|
+
├── units/ # Unit conversion utilities
|
|
202
|
+
└── ... (other modules)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Build Process
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Install dependencies
|
|
209
|
+
npm install
|
|
210
|
+
|
|
211
|
+
# Build the project
|
|
212
|
+
npm run build
|
|
213
|
+
|
|
214
|
+
# Run tests
|
|
215
|
+
npm test
|
|
216
|
+
|
|
217
|
+
# Run linter
|
|
218
|
+
npm run lint
|
|
219
|
+
|
|
220
|
+
# Run playground (Node environment)
|
|
221
|
+
npm run playground
|
|
222
|
+
|
|
223
|
+
# Run browser playground
|
|
224
|
+
npm run playground:browser
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Development Scripts
|
|
228
|
+
|
|
229
|
+
- `npm run build`: Compile TypeScript to JavaScript
|
|
230
|
+
- `npm run clean`: Remove build artifacts
|
|
231
|
+
- `npm run test`: Run test suite
|
|
232
|
+
- `npm run lint`: Run ESLint
|
|
233
|
+
- `npm run playground`: Interactive development environment
|
|
234
|
+
- `npm run playground:browser`: Browser-based playground
|
|
235
|
+
- `npm run build:browser`: Build browser bundle
|
|
236
|
+
|
|
237
|
+
## Browser Support
|
|
238
|
+
|
|
239
|
+
Pagyra-js can run in browser environments with some configuration:
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
import { renderHtmlToPdfBrowser } from 'pagyra-js/browser-entry';
|
|
243
|
+
|
|
244
|
+
// Use the browser-specific entry point
|
|
245
|
+
const pdfBytes = await renderHtmlToPdfBrowser({
|
|
246
|
+
html: '<p>Browser PDF generation</p>',
|
|
247
|
+
css: 'body { font-family: Arial; }',
|
|
248
|
+
// ... other options
|
|
249
|
+
environment: new BrowserEnvironment() // Provide browser environment
|
|
250
|
+
});
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Examples
|
|
254
|
+
|
|
255
|
+
Check the `playground/public/examples/` directory for various usage examples:
|
|
256
|
+
- Basic HTML to PDF conversion
|
|
257
|
+
- CSS layout demonstrations
|
|
258
|
+
- SVG rendering examples
|
|
259
|
+
- Advanced text formatting
|
|
260
|
+
- Custom font usage
|
|
261
|
+
|
|
262
|
+
## Contributing
|
|
263
|
+
|
|
264
|
+
Contributions are welcome! Please follow these guidelines:
|
|
265
|
+
|
|
266
|
+
1. Fork the repository
|
|
267
|
+
2. Create a feature branch
|
|
268
|
+
3. Implement your changes
|
|
269
|
+
4. Add tests for new functionality
|
|
270
|
+
5. Run `npm run lint` and `npm test`
|
|
271
|
+
6. Submit a pull request
|
|
272
|
+
|
|
273
|
+
## License
|
|
274
|
+
|
|
275
|
+
MIT License
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# UA styles do Chromium/Blink — Tabelas Markdown
|
|
2
|
+
|
|
3
|
+
## Blocos básicos
|
|
4
|
+
| Seletor | display | margin (block) | margin (inline) | Outros |
|
|
5
|
+
|---|---|---:|---:|---|
|
|
6
|
+
| `html` | block | – | – | – |
|
|
7
|
+
| `body` | block | `8px` (todas as direções) | – | – |
|
|
8
|
+
| `p` | block | `1em` topo/baixo | `0` esq/dir | – |
|
|
9
|
+
| `div` | block | – | – | – |
|
|
10
|
+
| `blockquote` | block | `1em` top/`1em` bottom | `40px` esq/dir | – |
|
|
11
|
+
| `figure` | block | `1em` top/`1em` bottom | `40px` esq/dir | – |
|
|
12
|
+
| `hr` | block | `0.5em` top/bottom | auto | `border: 1px inset; color: gray; overflow: hidden` |
|
|
13
|
+
|
|
14
|
+
## Cabeçalhos
|
|
15
|
+
| Seletor | display | font-size | margin-block | font-weight | Notas |
|
|
16
|
+
|---|---|---|---|---|---|
|
|
17
|
+
| `h1` | block | `2em` | `0.67em` / `0.67em` | bold | – |
|
|
18
|
+
| `h2` | block | `1.5em` | `0.83em` / `0.83em` | bold | – |
|
|
19
|
+
| `h3` | block | `1.17em` | `1em` / `1em` | bold | – |
|
|
20
|
+
| `h4` | block | `1em` aprox. | `1.33em` / `1.33em` | bold | – |
|
|
21
|
+
| `h5` | block | `.83em` | `1.67em` / `1.67em` | bold | – |
|
|
22
|
+
| `h6` | block | `.67em` | `2.33em` / `2.33em` | bold | – |
|
|
23
|
+
|
|
24
|
+
## Listas
|
|
25
|
+
| Seletor | display | list-style | margin-block | padding-inline-start |
|
|
26
|
+
|---|---|---|---|---|
|
|
27
|
+
| `ul, menu, dir` | block | disc | `1em` / `1em` | `40px` |
|
|
28
|
+
| `ol` | block | decimal | `1em` / `1em` | `40px` |
|
|
29
|
+
| `li` | list-item | – | – | `text-align: match-parent` |
|
|
30
|
+
| `dl` | block | – | `1em` / `1em` | – |
|
|
31
|
+
| `dt` | block | – | – | – |
|
|
32
|
+
| `dd` | block | – | – | `margin-inline-start: 40px` |
|
|
33
|
+
|
|
34
|
+
## Tabelas
|
|
35
|
+
| Seletor | display | border | spacing | vertical-align | Outros |
|
|
36
|
+
|---|---|---|---|---|---|
|
|
37
|
+
| `table` | table | `border-collapse: separate` | `2px` | – | `box-sizing: border-box; text-indent: initial; border-color: gray` |
|
|
38
|
+
| `thead` | table-header-group | – | – | middle | – |
|
|
39
|
+
| `tbody` | table-row-group | – | – | middle | – |
|
|
40
|
+
| `tfoot` | table-footer-group | – | – | middle | – |
|
|
41
|
+
| `tr` | table-row | – | – | inherit | – |
|
|
42
|
+
| `td, th` | table-cell | – | – | inherit | `padding: 1px` |
|
|
43
|
+
| `th` | table-cell | – | – | inherit | `font-weight: bold; text-align: center` |
|
|
44
|
+
| `caption` | table-caption | – | – | – | `text-align: center` |
|
|
45
|
+
|
|
46
|
+
## Links
|
|
47
|
+
| Seletor | Cor | Decoração | Cursor | Foco |
|
|
48
|
+
|---|---|---|---|---|
|
|
49
|
+
| `a:-webkit-any-link` | `-webkit-link` | underline | pointer | `:focus-visible { outline-offset: 1px }` |
|
|
50
|
+
| `a:-webkit-any-link:active` | `-webkit-activelink` | – | – | – |
|
|
51
|
+
| `a:-webkit-any-link:read-write` | – | – | text | – |
|
|
52
|
+
|
|
53
|
+
## Formulários (núcleo)
|
|
54
|
+
| Seletor | display | margin | font | Outros |
|
|
55
|
+
|---|---|---|---|---|
|
|
56
|
+
| `form` | block | `margin-top: 0` | – | – |
|
|
57
|
+
| `fieldset` | block | `margin-inline: 2px` | – | `border: groove 2px ThreeDFace; padding-block: .35em .625em; padding-inline: .75em; min-inline-size: min-content` |
|
|
58
|
+
| `legend` | block | – | – | `padding-inline: 2px` |
|
|
59
|
+
| `input, textarea, select, button` | inline-block | `0` | `-webkit-small-control` | `text-align: start` |
|
|
60
|
+
|
|
61
|
+
## Mídia e conteúdo substituído
|
|
62
|
+
| Seletor | display/overflow | Dimensões | Outros |
|
|
63
|
+
|---|---|---|---|
|
|
64
|
+
| `audio:not([controls])` | `display: none !important` | – | – |
|
|
65
|
+
| `audio` | – | `width: 300px; height: 54px` | – |
|
|
66
|
+
| `video, canvas, img` | `overflow: clip` | – | `overflow-clip-margin: content-box` |
|
|
67
|
+
| `video` | – | – | `object-fit: contain` |
|
|
68
|
+
|
|
69
|
+
## Ruby
|
|
70
|
+
| Seletor | display | font-size | alinhamento |
|
|
71
|
+
|---|---|---|---|
|
|
72
|
+
| `ruby` | ruby | – | – |
|
|
73
|
+
| `ruby > rt` | ruby-text | 50% | `text-align: start` |
|
|
74
|
+
|
|
75
|
+
## Dialog & Popover
|
|
76
|
+
| Seletor | display/posicionamento | caixa | Cores |
|
|
77
|
+
|---|---|---|---|
|
|
78
|
+
| `dialog` | `position: absolute; inset-inline-start:0; inset-inline-end:0; margin:auto` | `width/height: fit-content; border: solid; padding: 1em` | `background: Canvas; color: CanvasText` |
|
|
79
|
+
| `dialog:not([open])`, `[popover]:not(:popover-open)` | `display: none` | – | – |
|
|
80
|
+
| `dialog[open]`, `[popover]:popover-open` | `display: block` | – | – |
|
|
81
|
+
|
|
82
|
+
## Quirks Mode (diferenças comuns)
|
|
83
|
+
| Item | Efeito |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `img[align=left|right]` | margens laterais `3px` |
|
|
86
|
+
| `table` | reseta `white-space`, `line-height`, `font-*`, `color`, `text-align` |
|
|
87
|
+
| `input` (exceto `type=image`) e `textarea` | `box-sizing: border-box` |
|
|
88
|
+
| `form` | `margin-block-end: 1em` |
|
|
89
|
+
| `li` | `list-style-position: inside` |
|
|
90
|
+
|
|
91
|
+
> Observações
|
|
92
|
+
> - O UA pode variar por SO e por *quirks mode*.
|
|
93
|
+
> - Em resets, costuma-se zerar `body { margin: 8px }` e ajustar listas/tabelas conforme o design.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { BrotliAllocFunc, BrotliFreeFunc, BrotliBool } from "./brotli-types";
|
|
2
|
+
import type { BrotliSharedDictionaryType } from "./brotli-shared-dictionary";
|
|
3
|
+
|
|
4
|
+
export interface BrotliDecoderState {} // opaque
|
|
5
|
+
|
|
6
|
+
export enum BrotliDecoderResult {
|
|
7
|
+
BROTLI_DECODER_RESULT_ERROR = 0,
|
|
8
|
+
BROTLI_DECODER_RESULT_SUCCESS = 1,
|
|
9
|
+
BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT = 2,
|
|
10
|
+
BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT = 3,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export enum BrotliDecoderErrorCode {
|
|
14
|
+
BROTLI_DECODER_NO_ERROR = 0,
|
|
15
|
+
BROTLI_DECODER_SUCCESS = 1,
|
|
16
|
+
BROTLI_DECODER_NEEDS_MORE_INPUT = 2,
|
|
17
|
+
BROTLI_DECODER_NEEDS_MORE_OUTPUT = 3,
|
|
18
|
+
|
|
19
|
+
BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE = -1,
|
|
20
|
+
BROTLI_DECODER_ERROR_FORMAT_RESERVED = -2,
|
|
21
|
+
BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE = -3,
|
|
22
|
+
BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET = -4,
|
|
23
|
+
BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME = -5,
|
|
24
|
+
BROTLI_DECODER_ERROR_FORMAT_CL_SPACE = -6,
|
|
25
|
+
BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE = -7,
|
|
26
|
+
BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT = -8,
|
|
27
|
+
BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1 = -9,
|
|
28
|
+
BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2 = -10,
|
|
29
|
+
BROTLI_DECODER_ERROR_FORMAT_TRANSFORM = -11,
|
|
30
|
+
BROTLI_DECODER_ERROR_FORMAT_DICTIONARY = -12,
|
|
31
|
+
BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS = -13,
|
|
32
|
+
BROTLI_DECODER_ERROR_FORMAT_PADDING_1 = -14,
|
|
33
|
+
BROTLI_DECODER_ERROR_FORMAT_PADDING_2 = -15,
|
|
34
|
+
BROTLI_DECODER_ERROR_FORMAT_DISTANCE = -16,
|
|
35
|
+
|
|
36
|
+
BROTLI_DECODER_ERROR_COMPOUND_DICTIONARY = -18,
|
|
37
|
+
BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET = -19,
|
|
38
|
+
BROTLI_DECODER_ERROR_INVALID_ARGUMENTS = -20,
|
|
39
|
+
|
|
40
|
+
BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES = -21,
|
|
41
|
+
BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS = -22,
|
|
42
|
+
BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP = -25,
|
|
43
|
+
BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1 = -26,
|
|
44
|
+
BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2 = -27,
|
|
45
|
+
BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES = -30,
|
|
46
|
+
|
|
47
|
+
BROTLI_DECODER_ERROR_UNREACHABLE = -31,
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const BROTLI_LAST_ERROR_CODE: BrotliDecoderErrorCode;
|
|
51
|
+
|
|
52
|
+
export enum BrotliDecoderParameter {
|
|
53
|
+
BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION = 0,
|
|
54
|
+
BROTLI_DECODER_PARAM_LARGE_WINDOW = 1,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export declare function BrotliDecoderSetParameter(
|
|
58
|
+
state: BrotliDecoderState,
|
|
59
|
+
param: BrotliDecoderParameter,
|
|
60
|
+
value: number,
|
|
61
|
+
): BrotliBool;
|
|
62
|
+
|
|
63
|
+
export declare function BrotliDecoderAttachDictionary(
|
|
64
|
+
state: BrotliDecoderState,
|
|
65
|
+
type: BrotliSharedDictionaryType,
|
|
66
|
+
dataSize: number,
|
|
67
|
+
data: Uint8Array,
|
|
68
|
+
): BrotliBool;
|
|
69
|
+
|
|
70
|
+
export declare function BrotliDecoderCreateInstance(
|
|
71
|
+
allocFunc: BrotliAllocFunc | null,
|
|
72
|
+
freeFunc: BrotliFreeFunc | null,
|
|
73
|
+
opaque: unknown,
|
|
74
|
+
): BrotliDecoderState;
|
|
75
|
+
|
|
76
|
+
export declare function BrotliDecoderDestroyInstance(
|
|
77
|
+
state: BrotliDecoderState | null,
|
|
78
|
+
): void;
|
|
79
|
+
|
|
80
|
+
export declare function BrotliDecoderDecompress(
|
|
81
|
+
encodedSize: number,
|
|
82
|
+
encodedBuffer: Uint8Array,
|
|
83
|
+
decodedSizeRef: { value: number },
|
|
84
|
+
decodedBuffer: Uint8Array,
|
|
85
|
+
): BrotliDecoderResult;
|
|
86
|
+
|
|
87
|
+
export declare function BrotliDecoderDecompressStream(
|
|
88
|
+
state: BrotliDecoderState,
|
|
89
|
+
availableIn: { value: number },
|
|
90
|
+
nextIn: { value: Uint8Array | null },
|
|
91
|
+
availableOut: { value: number },
|
|
92
|
+
nextOut: { value: Uint8Array | null },
|
|
93
|
+
totalOut: { value: number },
|
|
94
|
+
): BrotliDecoderResult;
|
|
95
|
+
|
|
96
|
+
export declare function BrotliDecoderHasMoreOutput(
|
|
97
|
+
state: BrotliDecoderState,
|
|
98
|
+
): BrotliBool;
|
|
99
|
+
|
|
100
|
+
export declare function BrotliDecoderTakeOutput(
|
|
101
|
+
state: BrotliDecoderState,
|
|
102
|
+
sizeOut: { value: number },
|
|
103
|
+
): Uint8Array | null;
|
|
104
|
+
|
|
105
|
+
export declare function BrotliDecoderIsUsed(
|
|
106
|
+
state: BrotliDecoderState,
|
|
107
|
+
): BrotliBool;
|
|
108
|
+
|
|
109
|
+
export declare function BrotliDecoderIsFinished(
|
|
110
|
+
state: BrotliDecoderState,
|
|
111
|
+
): BrotliBool;
|
|
112
|
+
|
|
113
|
+
export declare function BrotliDecoderGetErrorCode(
|
|
114
|
+
state: BrotliDecoderState,
|
|
115
|
+
): BrotliDecoderErrorCode;
|
|
116
|
+
|
|
117
|
+
export declare function BrotliDecoderErrorString(
|
|
118
|
+
code: BrotliDecoderErrorCode,
|
|
119
|
+
): string;
|
|
120
|
+
|
|
121
|
+
export declare function BrotliDecoderVersion(): number;
|
|
122
|
+
|
|
123
|
+
export type BrotliDecoderMetadataStartFunc = (
|
|
124
|
+
opaque: unknown,
|
|
125
|
+
size: number,
|
|
126
|
+
) => void;
|
|
127
|
+
|
|
128
|
+
export type BrotliDecoderMetadataChunkFunc = (
|
|
129
|
+
opaque: unknown,
|
|
130
|
+
data: Uint8Array,
|
|
131
|
+
size: number,
|
|
132
|
+
) => void;
|
|
133
|
+
|
|
134
|
+
export declare function BrotliDecoderSetMetadataCallbacks(
|
|
135
|
+
state: BrotliDecoderState,
|
|
136
|
+
startFunc: BrotliDecoderMetadataStartFunc | null,
|
|
137
|
+
chunkFunc: BrotliDecoderMetadataChunkFunc | null,
|
|
138
|
+
opaque: unknown,
|
|
139
|
+
): void;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { BrotliAllocFunc, BrotliFreeFunc, BrotliBool } from "./brotli-types";
|
|
2
|
+
import type { BrotliSharedDictionaryType } from "./brotli-shared-dictionary";
|
|
3
|
+
|
|
4
|
+
export const BROTLI_MIN_WINDOW_BITS = 10;
|
|
5
|
+
export const BROTLI_MAX_WINDOW_BITS = 24;
|
|
6
|
+
export const BROTLI_LARGE_MAX_WINDOW_BITS = 30;
|
|
7
|
+
|
|
8
|
+
export const BROTLI_MIN_INPUT_BLOCK_BITS = 16;
|
|
9
|
+
export const BROTLI_MAX_INPUT_BLOCK_BITS = 24;
|
|
10
|
+
|
|
11
|
+
export const BROTLI_MIN_QUALITY = 0;
|
|
12
|
+
export const BROTLI_MAX_QUALITY = 11;
|
|
13
|
+
|
|
14
|
+
export enum BrotliEncoderMode {
|
|
15
|
+
BROTLI_MODE_GENERIC = 0,
|
|
16
|
+
BROTLI_MODE_TEXT = 1,
|
|
17
|
+
BROTLI_MODE_FONT = 2,
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const BROTLI_DEFAULT_QUALITY: number;
|
|
21
|
+
export const BROTLI_DEFAULT_WINDOW: number;
|
|
22
|
+
export const BROTLI_DEFAULT_MODE: BrotliEncoderMode;
|
|
23
|
+
|
|
24
|
+
export enum BrotliEncoderOperation {
|
|
25
|
+
BROTLI_OPERATION_PROCESS = 0,
|
|
26
|
+
BROTLI_OPERATION_FLUSH = 1,
|
|
27
|
+
BROTLI_OPERATION_FINISH = 2,
|
|
28
|
+
BROTLI_OPERATION_EMIT_METADATA = 3,
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export enum BrotliEncoderParameter {
|
|
32
|
+
BROTLI_PARAM_MODE = 0,
|
|
33
|
+
BROTLI_PARAM_QUALITY = 1,
|
|
34
|
+
BROTLI_PARAM_LGWIN = 2,
|
|
35
|
+
BROTLI_PARAM_LGBLOCK = 3,
|
|
36
|
+
BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING = 4,
|
|
37
|
+
BROTLI_PARAM_SIZE_HINT = 5,
|
|
38
|
+
BROTLI_PARAM_LARGE_WINDOW = 6,
|
|
39
|
+
BROTLI_PARAM_NPOSTFIX = 7,
|
|
40
|
+
BROTLI_PARAM_NDIRECT = 8,
|
|
41
|
+
BROTLI_PARAM_STREAM_OFFSET = 9,
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface BrotliEncoderState {} // opaque
|
|
45
|
+
export interface BrotliEncoderPreparedDictionary {} // opaque
|
|
46
|
+
|
|
47
|
+
export declare function BrotliEncoderSetParameter(
|
|
48
|
+
state: BrotliEncoderState,
|
|
49
|
+
param: BrotliEncoderParameter,
|
|
50
|
+
value: number,
|
|
51
|
+
): BrotliBool;
|
|
52
|
+
|
|
53
|
+
export declare function BrotliEncoderCreateInstance(
|
|
54
|
+
allocFunc: BrotliAllocFunc | null,
|
|
55
|
+
freeFunc: BrotliFreeFunc | null,
|
|
56
|
+
opaque: unknown,
|
|
57
|
+
): BrotliEncoderState;
|
|
58
|
+
|
|
59
|
+
export declare function BrotliEncoderDestroyInstance(
|
|
60
|
+
state: BrotliEncoderState | null,
|
|
61
|
+
): void;
|
|
62
|
+
|
|
63
|
+
export declare function BrotliEncoderPrepareDictionary(
|
|
64
|
+
type: BrotliSharedDictionaryType,
|
|
65
|
+
dataSize: number,
|
|
66
|
+
data: Uint8Array,
|
|
67
|
+
quality: number,
|
|
68
|
+
allocFunc: BrotliAllocFunc | null,
|
|
69
|
+
freeFunc: BrotliFreeFunc | null,
|
|
70
|
+
opaque: unknown,
|
|
71
|
+
): BrotliEncoderPreparedDictionary | null;
|
|
72
|
+
|
|
73
|
+
export declare function BrotliEncoderDestroyPreparedDictionary(
|
|
74
|
+
dict: BrotliEncoderPreparedDictionary | null,
|
|
75
|
+
): void;
|
|
76
|
+
|
|
77
|
+
export declare function BrotliEncoderAttachPreparedDictionary(
|
|
78
|
+
state: BrotliEncoderState,
|
|
79
|
+
dict: BrotliEncoderPreparedDictionary,
|
|
80
|
+
): BrotliBool;
|
|
81
|
+
|
|
82
|
+
export declare function BrotliEncoderMaxCompressedSize(
|
|
83
|
+
inputSize: number,
|
|
84
|
+
): number;
|
|
85
|
+
|
|
86
|
+
export declare function BrotliEncoderCompress(
|
|
87
|
+
quality: number,
|
|
88
|
+
lgwin: number,
|
|
89
|
+
mode: BrotliEncoderMode,
|
|
90
|
+
inputSize: number,
|
|
91
|
+
inputBuffer: Uint8Array,
|
|
92
|
+
encodedSizeRef: { value: number },
|
|
93
|
+
encodedBuffer: Uint8Array,
|
|
94
|
+
): BrotliBool;
|
|
95
|
+
|
|
96
|
+
export declare function BrotliEncoderCompressStream(
|
|
97
|
+
state: BrotliEncoderState,
|
|
98
|
+
op: BrotliEncoderOperation,
|
|
99
|
+
availableIn: { value: number },
|
|
100
|
+
nextIn: { value: Uint8Array | null },
|
|
101
|
+
availableOut: { value: number },
|
|
102
|
+
nextOut: { value: Uint8Array | null },
|
|
103
|
+
totalOut: { value: number },
|
|
104
|
+
): BrotliBool;
|
|
105
|
+
|
|
106
|
+
export declare function BrotliEncoderIsFinished(
|
|
107
|
+
state: BrotliEncoderState,
|
|
108
|
+
): BrotliBool;
|
|
109
|
+
|
|
110
|
+
export declare function BrotliEncoderHasMoreOutput(
|
|
111
|
+
state: BrotliEncoderState,
|
|
112
|
+
): BrotliBool;
|
|
113
|
+
|
|
114
|
+
export declare function BrotliEncoderTakeOutput(
|
|
115
|
+
state: BrotliEncoderState,
|
|
116
|
+
sizeOut: { value: number },
|
|
117
|
+
): Uint8Array | null;
|
|
118
|
+
|
|
119
|
+
export declare function BrotliEncoderEstimatePeakMemoryUsage(
|
|
120
|
+
quality: number,
|
|
121
|
+
lgwin: number,
|
|
122
|
+
inputSize: number,
|
|
123
|
+
): number;
|
|
124
|
+
|
|
125
|
+
export declare function BrotliEncoderGetPreparedDictionarySize(
|
|
126
|
+
dict: BrotliEncoderPreparedDictionary,
|
|
127
|
+
): number;
|
|
128
|
+
|
|
129
|
+
export declare function BrotliEncoderVersion(): number;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Build version number used by Brotli (major*1e6 + minor*1e3 + revision). */
|
|
2
|
+
export function BROTLI_MAKE_VERSION(
|
|
3
|
+
major: number,
|
|
4
|
+
minor: number,
|
|
5
|
+
revision: number,
|
|
6
|
+
): number;
|
|
7
|
+
|
|
8
|
+
/** Visibility / attribute markers; no effect in TS, kept for parity. */
|
|
9
|
+
export const BROTLI_COMMON_API: string;
|
|
10
|
+
export const BROTLI_DEC_API: string;
|
|
11
|
+
export const BROTLI_ENC_API: string;
|
|
12
|
+
export const BROTLI_ENC_EXTRA_API: string;
|