Skip to content

feat: add docs site, multi-framework adapters and plugins, and example apps - #3

Merged
amanx5 merged 235 commits into
mainfrom
dev-002
Jul 30, 2026
Merged

feat: add docs site, multi-framework adapters and plugins, and example apps#3
amanx5 merged 235 commits into
mainfrom
dev-002

Conversation

@amanx5

@amanx5 amanx5 commented Jul 30, 2026

Copy link
Copy Markdown
Member

No description provided.

amanx5 added 30 commits May 31, 2026 02:40
amanx5 and others added 27 commits July 30, 2026 23:33
- 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>
@amanx5
amanx5 merged commit 13815d4 into main Jul 30, 2026
1 check passed
@amanx5
amanx5 deleted the dev-002 branch August 3, 2026 07:07
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