Conversation
- as more related utilities will be added in same file in upcoming commits
- Replace the `keyof`-derived `AdapterId` with an explicit `AdapterIdList` tuple to preserve strict ordering. - Document why `PluginIdsByAdapter` and `AdapterIdList` intentionally duplicate adapter IDs and must be kept in sync. - Remove `AdapterId` intersection with `ExampleIdsLookup` and `ExampleIdsForAdapter` type since no longer required and eslint errors `@typescript-eslint/no-duplicate-type-constituents`
- Group plugin packages under their specific adapters in the API sidebar using dynamic separators. - Introduce `isValidPluginPackageForAdapter` type guard to improve type narrowing and readability. - Add dummy `route` to `createSeparatorItem` to cleanly satisfy Nextra's `PageMapItem` interface.
- create metadata obj using apiName param in api pages instead of calling `generateApiPage` - introduce `generateApiDefinition` for api definition generation logic only - replace `React.cache`(invalidated on each request) with module-level cache map in generateApiPage
… pages experimental change to optimise api page generation
- share a single `ts-morph` Project across packages instead of creating one per call with a separate `tsconfig` - eagerly compute `apiPageMap` at module scope so `getPageMap` doesn't reconstruct it on every render
Add \declarationKind\ to \ApiExport\ type and compute it exactly once in \getApiExports\ when the export metadata is first gathered. Update consumers (MDX generation, page maps, UI components) to use the precomputed \declarationKind\ instead of redundantly re-executing \checkDeclarationKind\ (which internally does repeated TS node type checks).
- for API pages without a TS declaration (e.g. .vue exports), skip the expensive MDX string generation, Nextra `compileMdx`, and evaluate steps. instead, return the static 'Under Development' React component directly, avoiding unnecessary AST parsing overhead. - introduce `ResolvedApiExport` to strongly type API exports that have successfully resolved their TS declarations - update `createRawMdxForApi` to require `ResolvedApiExport`, moving the fallback logic to the caller - add `isApiExportWithDeclaration` type guard in `generateApiPage`.
Replace the expensive deep recursive walk in \formatLinksInDefinitionParts\ (which cloned every single array and object property over the entire TSdoc AST) with a fast, targeted traversal. We now mutate the specific string fields (\description\ and \tags\) in-place, drastically reducing GC pressure and CPU overhead for large API definition objects.
…rts section - Extracted unparsed/unresolved exports into a new "In Progress" documentation section - Add `ExportedDeclarationsWithKind`, a discriminated union for accurate TS node narrowing - Merged declaration kind flags directly onto the `declaration` object
- Replace boolean flags on ExportedDeclarationsWithKind with a DeclarationKind enum - Group API exports dynamically using DeclarationKind in the page map - Move source/NPM links to a tip callout at the top of API pages - Add withPackageLink utility to api-packages
- add conceptual guides for GridSchema and GridStore, linking to generated API docs to avoid repetition - clarify JSOC introduction and the purpose of the @jsoc/grid-core package - refactor the UI Plugins overview to correctly describe the `configGenerator` approach and link core terms to API references - add API links in usage page
- Dual-Version TypeScript:
- Set up `typescript: npm:@typescript/typescript6@^6.0.2` (TS6 alias) and
`typescript-7: npm:typescript@^7.0.2` (TS7 Go-native) in `pnpm-workspace.yaml`.
- The root workspace and React examples now depend on both. The `typescript` (TS6)
alias is used by ESLint, while `npx tsc` resolves to TS7 because `typescript-7`
provides a `tsc` executable that takes priority.
Note: We use `^6.0.2` for the TS6 alias because `6.0.2` is the current highest version the
TypeScript team officially published under the special `@typescript/typescript6`
compatibility package. Functionally, it is same as 6.0.3 for AST parsing tools like ESLint.
- Vue & Vanilla Examples:
- Directly upgraded Vanilla examples to TS 7 since they don't use internal TS API.
- Vue examples stays on `typescript: ^6.0.3`. Because `vue-tsc` relies
heavily on TS APIs and has not stabilized for TS7, it must continue using TS6.
Note: We hardcoded `typescript: ^6.0.3` in the Vue packages instead of `typescript: catalog:`
because the catalog resolves to the TS6 alias (`npm:@typescript/typescript6@^6.0.2`). And when
`vue-tsc` attempts to resolve the compiler path from the aliased package structure, it crashes
with `Error: Failed to locate tsc module path from shim`.
- TSConfig Hygiene:
- Aligned over 30 `tsconfig.json` and `tsconfig.node.json` files with TS7 expectations.
- Added explicit `rootDir: ./src` to all required config files.
Exception: `rootDir` is deliberately NOT added in `docs/tsconfig.json` because it imports
files from outside its directory (e.g., `../packages/react-grid/src/...`).
Enforcing a `rootDir` there would cause TS6059 cross-directory compilation errors.
Workspace tooling requires every pnpm workspace package to declare a name field. Example apps were missing one, which caused `pnpm version-packages` to fail even though the apps are private and never published. Add stable `example-*` names for all adapter/plugin example apps so they can stay in the workspace and continue using local @JSoC package linking via `linkWorkspacePackages`, without adding `workspace:` specifiers to their package.json files. Co-authored-by: Cursor <cursoragent@cursor.com>
Apply patch releases across the packages workspace with per-package changelog entries for new adapters, extracted plugins, grid-core store API updates, and shared utility additions. Co-authored-by: Cursor <cursoragent@cursor.com>
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.
No description provided.