- Add Math.max(0, ...) guard when calculating localY in normalizePageSchemas
- Prevents TypeError when schema.position.y < paddingTop
- Fixes issue #1346 where PDF generation crashes with 'Cannot read properties of undefined (reading 'push')'
- Includes explanatory comment for future maintainers
- Add IPv4-mapped IPv6 (::ffff:x.x.x.x), link-local (fe80::/10), and
unique-local (fc00::/7) blocking to isUrlSafeToFetch
- Add defensive assertion in ensureBuffer cap to throw if size < requested
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- GHSA-vrqm-gvq7-rrwh: Add 100MB MAX_DECODED_SIZE limit to DecodeStream.ensureBuffer() to prevent decompression bomb attacks
- GHSA-xgx4-2wgv-4jhm: Replace innerHTML with safe DOM APIs in multiVariableText propPanel to prevent XSS via i18n labels
- GHSA-pgx6-7jcq-2qff: Add URL validation (isUrlSafeToFetch) before fetch() in getB64BasePdf and font loading to prevent SSRF
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(dynamicTemplate): rewrite layout engine for accurate multi-page table rendering
- Implement sequential offset-based layout algorithm for correct element positioning
- Add floating point tolerance (EPSILON) to prevent precision errors in page break calculations
- Fix __bodyRange indexing to correctly map dynamicHeights to table body data
- Prevent orphaned table headers by moving header with first data row when page breaks
- Fix UI recalculation timing to use immediate input values for dynamic templates
- Update tests to match new layout behavior
* refactor(common): process dynamic template per page and remove duplicate cloneDeep
* refactor(common): process each template page independently regardless of dynamic content
* build(deps): Bump zod from 3.25.76 to 4.1.12 in /packages/common
Bumps [zod](https://github.com/colinhacks/zod) from 3.25.76 to 4.1.12.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v3.25.76...v4.1.12)
---
updated-dependencies:
- dependency-name: zod
dependency-version: 4.1.12
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* Fix zod v4 API compatibility issues
- Update z.function() usage to z.any() for Plugin schema (zod v4 changed z.function() to a function factory)
- Update z.record() calls to use two arguments (key schema, value schema) as required by zod v4
- Add type assertions for Object.entries() to fix type inference issues
- Update test error message to match zod v4 format
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Update test expectations for zod v4 error message format
- Update error messages in common package tests to match zod v4 format
- 'Expected array, received string' → 'Invalid input: expected array, received string'
- 'Array must contain at least 1 element(s)' → 'Too small: expected array to have >=1 items'
- 'Required' → 'Invalid input: expected {type}, received undefined'
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyoheif@wix.com>
Co-authored-by: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* build(deps): bump zod from 3.25.67 to 4.1.11
Bumps [zod](https://github.com/colinhacks/zod) from 3.25.67 to 4.1.11.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v3.25.67...v4.1.11)
---
updated-dependencies:
- dependency-name: zod
dependency-version: 4.1.11
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* Fix zod v4 API compatibility issues
- Update z.function() usage to z.any() for Plugin schema (zod v4 changed z.function() to a function factory)
- Update z.record() calls to use two arguments (key schema, value schema) as required by zod v4
- Add type assertions for Object.entries() to fix type inference issues
- Update test error message to match zod v4 format
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Update test expectations for zod v4 error message format
- Update error messages in common package tests to match zod v4 format
- 'Expected array, received string' → 'Invalid input: expected array, received string'
- 'Array must contain at least 1 element(s)' → 'Too small: expected array to have >=1 items'
- 'Required' → 'Invalid input: expected {type}, received undefined'
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyoheif@wix.com>
Co-authored-by: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* test(expression): add XSS vulnerability prevention tests for replacePlaceholders function
* Update packages/common/src/expression.ts
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* test: group safe Object method tests into single test case
- Refactored individual tests for Object.keys, Object.values, Object.entries, and Object.assign
- Combined them into a single test case with multiple assertions for better organization
- Addresses code review feedback about test organization
Co-authored-by: Kyohei Fukuda <hand-dot@users.noreply.github.com>
* feat(security): implement safeAssign to prevent prototype pollution and enhance XSS protection
* fix(safeAssign): use object spread for safer target assignment
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <hand-dot@users.noreply.github.com>
* remove old japanese template
* Add new image snapshots and update font references in tests
* Refactor code structure for improved readability and maintainability
* Migrate pdf-lib into pdfme monorepo
- Add @pdfme/pdf-lib package to packages/ directory
- Update root package.json to include pdf-lib in workspaces
- Update all package dependencies to use workspace:* for @pdfme/pdf-lib
- Configure TypeScript build targets (cjs, esm, node) for pdf-lib
- Add ESLint configuration with relaxed rules for pdf-lib migration
- Integrate pdf-lib into monorepo build and clean scripts
- Add basic test suite for pdf-lib package
- All lint, build, and test suites pass successfully
This migration improves maintainability by consolidating all PDF operations
into a single repository and unified build/test/release process.
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Fix TypeScript module resolution for workspace dependencies
- Changed moduleResolution from 'bundler' to 'node' in common package
- This should resolve '@pdfme/pdf-lib' module resolution issues
- Reverted workspace dependency format back to '*' for npm compatibility
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Fix pdf-lib package.json exports paths
- Updated main, module, and exports paths to point to correct locations
- Changed from dist/*/index.js to dist/*/src/index.js to match build output
- Fixed TypeScript types path from dist/types/index.d.ts to dist/types/src/index.d.ts
- Resolves Vite package entry resolution errors and TypeScript module resolution issues
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Fix CodeQL security alerts in svg.ts
- Add input validation and sanitization for HTML/SVG parsing
- Prevent ReDoS attacks with regex limits and input size checks
- Sanitize font family names to prevent prototype pollution
- Add URL validation for image sources to prevent path traversal
- Limit transformation parsing to prevent infinite loops
- Maintain backward compatibility while improving security
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Implement comprehensive security fixes for CodeQL alerts in svg.ts
- Add input validation and sanitization for SVG content
- Implement safe HTML parsing with null checks and size limits
- Add controlled dynamic property access with allowlisted tag names
- Prevent style injection with filtered and limited style entries
- Add regex match limits to prevent ReDoS attacks
- Enhance font selection with input validation and type safety
- Sanitize image sources to prevent path traversal and injection
- Limit CSS style parsing to prevent potential vulnerabilities
These changes address the 2 high-severity CodeQL security alerts while
maintaining backward compatibility and functionality.
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Add additional security fixes for CodeQL alerts in svg.ts
- Implement safer property access for polygon node transformation
- Add input validation for points attribute with regex pattern matching
- Replace Object.assign with safer property assignment to prevent prototype pollution
- Add null checks and type validation for node attributes and childNodes
- Implement safer SVG node parsing with comprehensive validation
- Add array type checks for childNodes processing
These changes target the remaining 2 high-severity CodeQL security alerts
by addressing potential prototype pollution and unsafe property access.
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Implement comprehensive security hardening for CodeQL alerts in svg.ts
- Add comprehensive SVG content sanitization with allowlist-based tag filtering
- Implement strict input validation with bounds checking for all numeric inputs
- Replace unsafe dynamic property assignment with Object.defineProperty
- Add try-catch error handling for HTML parsing operations
- Restrict allowed style properties and validate string lengths
- Use setAttribute/removeAttribute instead of direct attribute manipulation
- Add type safety checks for all node operations
- Implement safer polygon-to-path conversion with validation
These changes address the 10 high-severity CodeQL security alerts by:
1. Preventing XSS through comprehensive input sanitization
2. Avoiding prototype pollution with safer property assignment
3. Adding bounds checking to prevent DoS attacks
4. Using allowlist-based validation for all user inputs
5. Implementing proper error handling to prevent crashes
Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>
* Potential fix for code scanning alert no. 32: Incomplete multi-character sanitization
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Potential fix for code scanning alert no. 39: Incomplete multi-character sanitization
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Fix inefficient regular expression in svg.ts to pass CodeQL
- Changed /([^:\s]+)*\s*:\s*([^;]+)/g to /([^:\s]+)\s*:\s*([^;]+)/g
- Removed the problematic * quantifier that could cause exponential backtracking
- This fixes the "Inefficient regular expression" security alert from GitHub Advanced Security
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* remove sanitize-html
* move tests
* fix for security
* update dependabot.yml
* organize
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
* Ignore XML repomix output
* Extend UIOptions schema
* Enable init and update of pageCursor, sidebarOpen, and zoomLevel through options
* Rollback options-configurable pageCursor for now
* Remove onPageCursorChange mistakenly kept in useEffect dependencies
* Add UI options section to documentation for controlling zoom level and sidebar state
---------
Co-authored-by: hand-dot <kyouhei.fukuda0729@gmail.com>
* add pluginRepository and make plugin checking more robust
* Apply suggestions from code review
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* f
* f
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* Fix lint errors across multiple packages
- Fixed TypeScript type safety issues in common, schemas, generator, and UI packages
- Replaced 'any' types with more specific types like Map<string | number, unknown>
- Added proper type assertions in UI components to ensure type compatibility
- Created BarcodeRenderOptions interface to improve type safety in barcode rendering
- Fixed unsafe member access and return value issues in helper functions
- Ensured type safety in React components with proper type narrowing
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Fix type safety issues in tables/pdfRender.ts
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Fix remaining lint errors in multiple packages
- Fixed type safety issues in DetailView/index.tsx by removing unsafe type assertions
- Improved type safety in select/index.ts with proper type assertions
- Enhanced type safety in generate.ts with proper type narrowing and error handling
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Fix type error in DetailView/index.tsx
- Added type assertion to i18n function call to satisfy union type constraint
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Enable problematic test in Playground E2E Tests
* TMP
* Fix TypeScript type compatibility issues across packages
- Update Map type definitions to use consistent Map<string | number, unknown> type
- Fix Plugin type definition to properly handle Schema types
- Update function signatures to maintain type compatibility
- Resolve type errors in UI components and context providers
- Ensure proper type handling in schema implementations
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Refactor typedI18n function to use a type-safe key assertion for i18n
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Fix linting errors in packages/common directory
- Replace explicit 'any' types with more specific types like 'unknown'
- Fix unsafe function calls with proper type assertions
- Remove unnecessary type assertions
- Replace non-null assertions with nullish coalescing operators
- Fix redundant type constituents in union types
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Fix type error in helper.ts getFontNamesInSchemas function
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Fix type errors in schemas package and test files
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Revert strict type changes to maintain backward compatibility
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Update TypeScript to version 5.8.2 and fix type compatibility issues
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Update package-lock.json for TypeScript 5.8.2
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Fix TypeScript errors in generator package
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Update moduleResolution to esnext in all tsconfig.esm.json files and fix type errors in generator package
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Update moduleResolution to bundler in all tsconfig.esm.json files
Co-Authored-By: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
* Refactor ESLint configuration: remove legacy .eslintrc.cjs files and replace with new .mjs configurations
* Remove unnecessary TypeScript ignore comments and simplify async calls in barcode tests
* Refactor date helper: remove TypeScript ignore comments and simplify AirDatepicker usage
* Enhance date helper: add AirDatepickerDate type and improve type annotations for onSelect callback
* Update TypeScript and ESLint configurations: change module to NodeNext, refine file patterns, and enhance lint command
* Refactor ESLint configuration: remove unnecessary language options for TypeScript files