Skip to content

Modernize with async/await and internal library loading#4

Open
zachthedev wants to merge 6 commits intotanaikech:masterfrom
zachthedev:master
Open

Modernize with async/await and internal library loading#4
zachthedev wants to merge 6 commits intotanaikech:masterfrom
zachthedev:master

Conversation

@zachthedev
Copy link

  • Converted PDFApp to use async/await for all core operations.
  • Refactored library loading (pdf-lib, fontkit) to be managed within each PDFApp instance, restoring original helper method functionality.
  • Improved state handling for top-level chained calls.

- Converted PDFApp to use async/await for all core operations.
- Refactored library loading (pdf-lib, fontkit) to be managed within each PDFApp instance, restoring original helper method functionality.
- Improved state handling for top-level chained calls.
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @zachthedev, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request modernizes the PDFApp class by adopting async/await for asynchronous operations, leading to cleaner and more readable code. It also significantly changes how external libraries (pdf-lib, fontkit) are managed, making them instance-specific dependencies rather than global ones. Additionally, internal state management for chained method calls has been refined.

Highlights

  • Async/Await Conversion: Converted most public and internal methods within the PDFApp class to use async/await for handling asynchronous operations, moving away from explicit Promise constructors in many cases.
  • Library Loading Refactor: Refactored the loading of pdf-lib and fontkit libraries. Instead of being loaded globally/statically, they are now loaded asynchronously on demand via new _ensurePdfLibLoaded and _ensureFontkitLoaded functions and passed into the PDFApp constructor, making library dependencies instance-specific.
  • State Management: Improved state handling for chained calls by consolidating configuration options (useStandardFont, useCustomFont) into a _gPDFA_Config object and renaming the internal PDF blob storage from pdfBlob to _gPDFA_Blob.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configureGemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request modernizes the PDFApp library by migrating to async/await, enhancing code readability and maintainability. The refactoring of library loading (pdf-lib, fontkit) and injection into PDFApp instances is a solid architectural improvement.

Several critical issues need addressing, primarily missing await keywords for asynchronous operations which will lead to runtime errors. There's also a syntax error and a high-risk setTimeout override that requires careful consideration. Once these are resolved, the changes will greatly improve the library.

zachthedev and others added 5 commits June 12, 2025 23:27
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant