Conversation
…management - Removed the pylon-builder package and utilized esbuild watch mode for faster builds. - Added pm2 for automatic server restarts and logging. - Introduced cross-environment client builds using gqty. - Breaking change: removed client generation feature; users should now utilize GQty CLI for client generation.
🦋 Changeset detectedLatest commit: 34aeeac The changes in this PR will be included in the next version bump. This PR includes changesets to release 3 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
🚀 Snapshot Release (
|
| Package | Version | Info |
|---|---|---|
create-pylon |
1.1.5-canary-20260313082843.34aeeac66642f7cc26d40ebdc0f36eb226a68aca |
npm ↗︎ unpkg ↗︎ |
@getcronit/pylon |
3.0.0-canary-20260313082843.34aeeac66642f7cc26d40ebdc0f36eb226a68aca |
npm ↗︎ unpkg ↗︎ |
@getcronit/pylon-dev |
2.0.0-canary-20260313082843.34aeeac66642f7cc26d40ebdc0f36eb226a68aca |
npm ↗︎ unpkg ↗︎ |
This was
linked to
issues
Feb 19, 2025
…-routes plugin setup
enable source maps for client and server builds and update external dependencies
This fixes the the documentation of type fields (e.g. interfaces) in the schema parser. Previously, the return type of the property was used to determine the description of the field. If a type property used the `Date` type, the description of the `Date` type was used instead of the actual description of the field. This commit changes the behavior to use the property symbol instead of the return type of the property. closes #76
added 30 commits
January 27, 2026 14:33
Updates the schema builder to generate more meaningful names for anonymous argument types by combining the function name with the argument key. This prevents naming collisions between generic argument names like "filters" and improves schema clarity. - Generates names following the pattern: CapitalizedFunctionName + ArgKey + Input - Ensures anonymous argument types are always contextualized even if a heuristic name is found - Enhances schema readability by making input type names reflect their usage context
Refines the naming logic in the Pylon builder to exclude primitive types and known scalars from contextual renaming. This ensures that arguments like pagination "first" or "after" correctly map to their original scalar types (e.g., Number, String) instead of being incorrectly renamed to compound types like "ContactsFirstInput". - Adds a check to exclude primitive types from implicit naming logic - Ensures Pylon scalars (e.g., Date) are preserved as their original type names - Maintains descriptive naming only for complex anonymous input types
The JSONObject type represents the value better
…ration Implemented a robust in-memory testing infrastructure for the Pylon builder using Vitest. This includes automated snapshot testing for both GraphQL SDL generation and resolver logic, ensuring stability across complex type relationships. Key improvements and features: Testing Infrastructure: Built a high-performance, diskless testing harness that enables rapid verification of TypeScript-to-GraphQL transformations. Inheritance & Interfaces: Refined logic for multi-level class inheritance and interface implementation, ensuring deterministic output and correct base type discovery. Generic Transformations: Implemented and verified automatic transformation of patterns like Connection<T> and Edge<T> into standard GraphQL types (e.g., UserConnection, UserEdge). Input & Argument Refinement: Expanded support for diverse argument patterns, including direct positional arguments, nested objects, and tuple-based rest parameters. Implemented naming deduplication to prevent redundant suffixes (e.g., CreateUserInput instead of CreateUserInputInput). Primitive Union & Enum Fix: Enhanced type checking to correctly handle optional enums and nullable primitive unions in input fields, resolving incorrect "unsupported union" warnings. Schema Enhancements: Forced alphabetical sorting of implemented interfaces for stable SDL output. Improved interface promotion for unions sharing common fields. Added support for extracting GraphQL descriptions from JSDoc comments using block string formatting. Full Feature Coverage: Established test suites covering primitives, lists, optionality, promises, and JSON types.
Removed redundant "Input" suffix for enums, as they are shared between input and output types in GraphQL. Implemented JSONObject fallback for never types to correctly handle functions returning empty arrays []. Fixed isPrimitiveUnion logic to correctly handle optional enums in arguments, resolving incorrect "unsupported union" warnings. Updated test suites and snapshots to reflect cleaner naming and accurate fallback types.
- Share enum mapping across both input and output name maps to prevent double-processing of shared types. - Implement existence checks before pushing to internal enum and union collections. - Ensure consistent, single definitions for types used as both arguments and return values.
… for non react enviroments For example when the use-pages plugin is not used..
the previous attempt failed
- Update PageProps interface to support dynamic route parameters as string arrays - Implement automatic transformation of [...param] routes to splat routes (*) - Fix layout routing for catch-all pages by converting index children to splat routes - Memoize params and searchParams parsing in withLoaderData for performance optimization - Inject named catch-all parameters into route context for array transformation
- Replace naive config extraction with recursive AST-based dependency tracing - Trace variables, functions, classes, and imports used by the config export - Preserve original file order of declarations to ensure correct initialization - Add support for top-level destructuring in variable declarations - Remove redundant logging during config extraction - Fix ReferenceError/TypeError when config depends on local declarations
- Remove global state from directory scanning to improve concurrency and testability. - Modularize scanning logic into helper functions for better maintainability. - Fix and optimize catch-all route handling to correctly merge routes and avoid unnecessary nesting when layouts are present. - Optimize route file code generation for cleaner output. - Add snapshot tests and update the test suite to verify complex routing scenarios.
- Added compression - Added etag caching - Improved serve-file-path
- Update setup/index.tsx to wrap request handling in AsyncLocalStorage for proper client scoping. - Update build-client.ts to disable suspense in createReactClient defaults and expose the raw client.
- Implement WeakMap based caching for selection set extraction. - Cache unique field identifiers for abstract types to avoid repeated O(N^2) field comparisons. - Optimize array resolution by memoizing selection set findings. - Ensure memory safety by using WeakMaps keyed by schema types and AST nodes.
- Remove `etag()` from the wildcard SSR route in the pages plugin to enable true streaming and reduce TTFB/CPU usage. - Implement `X-Pylon-Internal` header to identify internal sub-requests from loaders and GraphQL clients. - Add [skipInternal](cci:1:/pylon/packages/pylon/src/app/index.ts:9:0-16:1) utility in the core app to bypass redundant global middleware (compression, Sentry, logging, ID generation) for internal sub-requests. - Significantly reduce CPU overhead and memory pressure during recursive SSR rendering of layouts and pages.
Removed the manual assignment of `crypto.randomUUID()` to `c.req.id` in `pylon/src/app/index.ts`. This property was not used elsewhere in the codebase and required a `// @ts-ignore` as it's not a standard Hono request property.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request includes significant updates to the
@getcronit/pylonpackages, introducing major changes and new features, as well as some minor improvements and bug fixes. The most important changes include the integration of@getcronit/pylon-builderinto@getcronit/pylon-dev, enhancements to the authentication system, and improvements to the plugin system.Major Changes:
Integration of
@getcronit/pylon-builderinto@getcronit/pylon-dev:pylon-builderpackage.esbuildwatch mode for faster and more efficient development.pm2for process management, restarting the server automatically after builds, and logging withconsola.Overhaul of the authentication system:
useAuthplugin, which automatically sets up authentication routes (/auth/login,/auth/callback,/auth/logout), manages token cookies, and enhances role-based route protection.Minor Changes:
Enhancements to the plugin system:
useViewerplugin.New
usePagesplugin:Option to disable playground and introspection:
Patch Changes:
Fixes and improvements in
create-pylon:consolafor clearer interactive prompts and logs.Bug fix:
These updates improve the overall functionality, performance, and developer experience of the
@getcronit/pylonpackages.