Skip to content

Add @fedify/nuxt package for Nuxt integration#674

Open
2chanhaeng wants to merge 7 commits intofedify-dev:mainfrom
2chanhaeng:fedify/nuxt
Open

Add @fedify/nuxt package for Nuxt integration#674
2chanhaeng wants to merge 7 commits intofedify-dev:mainfrom
2chanhaeng:fedify/nuxt

Conversation

@2chanhaeng
Copy link
Copy Markdown
Contributor

Add @fedify/nuxt package for Nuxt integration

Closes #149

Changes

New package: @fedify/nuxt

  • src/mod.ts: Defines the Nuxt module (defineNuxtModule) that:

    • Resolves user-configured federationModule and optional
      contextDataFactoryModule paths
    • Generates a virtual template that wires the Federation instance
      into a Nitro server handler
    • Registers a server plugin for deferred 406 handling
  • src/runtime/server/middleware.ts: Creates the Fedify middleware
    (defineEventHandler) that intercepts incoming requests, converts
    them via toWebRequest, and delegates to federation.fetch().
    Non-federation requests fall through to Nuxt routing.

  • src/runtime/server/logic.ts: Pure-logic helpers
    (fetchWithFedify, resolveDeferredNotAcceptable) that determine
    whether Fedify handled the request, the framework should take over
    (404 fallthrough), or a deferred 406 should be returned.

  • src/runtime/server/plugin.ts: Nitro beforeResponse hook
    plugin that resolves deferred 406 Not Acceptable responses when
    Fedify owns the route but the client does not accept ActivityPub and
    Nuxt itself returns 404.

  • src/mod.test.ts: Unit tests covering:

    1. Fedify handles a federation request successfully (returns JSON-LD)
    2. Non-federation requests are delegated to the framework
      (onNotFound fallthrough)
    3. 406 response when client does not accept ActivityPub and no
      framework route matches
    4. Framework response is preserved for shared HTML routes

Documentation

  • docs/manual/integration.md: Added Nuxt section with
    installation instructions, module configuration, and context data
    factory usage example.

Configuration updates

  • Added @fedify/nuxt to workspace configs (deno.json, deno.lock,
    pnpm-workspace.yaml, pnpm-lock.yaml)
  • Added @fedify/nuxt to AGENTS.md, CONTRIBUTING.md, and
    packages/fedify/README.md package listings
  • Added Nuxt-related terms to cspell.json and .hongdown.toml
  • Added tunnel task to mise.toml
  • Recorded the addition in CHANGES.md

Agent skill improvements (non-functional)

  • Updated create-integration-package, add-to-fedify-init, and
    create-example-app-with-integration skill docs with clarified
    guidance on version verification, fallthrough/406 behavior, template
    file references, and host restriction configuration.

Co-Authored-By: GPT-5.3-codex

@issues-auto-labeler issues-auto-labeler bot added component/build Build system and packaging component/federation Federation object related component/integration Web framework integration labels Apr 13, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 13, 2026

📝 Walkthrough

Walkthrough

Adds a new @fedify/nuxt package (Nuxt 4/Nitro integration) with runtime middleware, server plugin, request/response helpers, tests, package manifests, docs, workspace updates, agent skill doc tweaks, and build tooling for ESM/CJS outputs and publishing.

Changes

Cohort / File(s) Summary
Nuxt integration core
packages/nuxt/src/mod.ts, packages/nuxt/src/runtime/server/logic.ts, packages/nuxt/src/runtime/server/middleware.ts, packages/nuxt/src/runtime/server/plugin.ts, packages/nuxt/src/runtime/server/lib.ts
New Nuxt module wiring Fedify into Nitro: exported types/options, template-based middleware registration, fetch/result normalization, middleware factory that delegates/marks deferred 406, and a plugin that resolves/apply deferred 406 responses.
Package manifests & build
packages/nuxt/package.json, packages/nuxt/deno.json, packages/nuxt/tsdown.config.ts
New package metadata for npm/Deno, exports map, peer/dev deps, scripts, and tsdown config producing ESM/CJS and dual-type outputs.
Tests & runtime files
packages/nuxt/src/mod.test.ts, packages/nuxt/src/runtime/server/...
Unit tests for fetchWithFedify, deferred 406 logic, and delegation behaviors; runtime server helpers and middleware implemented and exercised.
Docs, changelog & READMEs
packages/nuxt/README.md, docs/manual/integration.md, CHANGES.md, packages/fedify/README.md, AGENTS.md, AGENTS.md
Added package README and integration docs, release notes entry, and registry/readme table updates referencing the Nuxt integration.
Workspace & tooling config
deno.json, pnpm-workspace.yaml, mise.toml, cspell.json, .hongdown.toml
Added packages/nuxt to Deno/pnpm workspaces, new tunnel task, spellcheck entries (nuxt, nuxi), and added @fedify/nuxt as a proper-noun token.
Agent skills & example app docs
.agents/skills/*, .agents/skills/create-example-app-with-integration/example/README.md, .agents/skills/*/SKILL.md
Documentation improvements: convert placeholder refs to relative links, explicit template file checklist, example README tweaks, and enhanced skill instructions (version checks, testing guidance).

Sequence Diagram

sequenceDiagram
    participant Client
    participant Nitro as Nitro/H3 Event Handler
    participant FedifyMiddleware as Fedify Middleware
    participant FedifyFetch as fetchWithFedify
    participant Federation as Federation Instance
    participant Framework as Nuxt Framework Handler
    participant Plugin as Deferred Response Plugin

    Client->>Nitro: HTTP Request
    Nitro->>FedifyMiddleware: Invoke handler (H3 event)
    FedifyMiddleware->>FedifyMiddleware: toWebRequest / compute contextData
    FedifyMiddleware->>FedifyFetch: Call fetchWithFedify(fetch, request, contextData)
    FedifyFetch->>Federation: federation.fetch(request, { onNotFound, onNotAcceptable, ... })
    Federation->>Framework: onNotFound/onNotAcceptable callbacks (delegate to Nuxt)
    Framework-->>Federation: Framework Response (status, headers, body)
    Federation-->>FedifyFetch: Response
    alt handled (ActivityPub)
        FedifyFetch-->>FedifyMiddleware: { kind: "handled", response }
        FedifyMiddleware->>Nitro: return federation response
        Nitro-->>Client: federation response
    else not-found
        FedifyFetch-->>FedifyMiddleware: { kind: "not-found" }
        FedifyMiddleware->>Nitro: return undefined (delegate)
        Nitro->>Framework: continue to Nuxt handler
        Framework-->>Nitro: framework response
        Nitro-->>Client: framework response
    else not-acceptable
        FedifyFetch-->>FedifyMiddleware: { kind: "not-acceptable" }
        FedifyMiddleware->>FedifyMiddleware: set deferred flag in event.context
        FedifyMiddleware->>Nitro: return undefined (delegate)
        Nitro->>Framework: continue to Nuxt handler
        Framework-->>Nitro: framework response
        Nitro->>Plugin: beforeResponse hook
        Plugin->>Plugin: resolveDeferredNotAcceptable(deferred, frameworkStatus)
        alt returns 406
            Plugin->>Nitro: set status, headers, body -> 406 Not Acceptable
        else undefined
            Plugin->>Nitro: leave framework response intact
        end
        Nitro-->>Client: final response
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • dahlia
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title accurately summarizes the main change: adding a new Nuxt integration package (@fedify/nuxt) to the monorepo.
Description check ✅ Passed The pull request description is comprehensive and directly related to the changeset, covering the new package implementation, documentation, configuration updates, and skill improvements.
Linked Issues check ✅ Passed The PR successfully fulfills the objective from issue #149 by providing an official Nuxt integration package with module setup, request handling, 406 negotiation, and documentation.
Out of Scope Changes check ✅ Passed All changes are within scope: the new package, documentation, configuration updates, and skill documentation improvements directly support the Nuxt integration objective.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@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 introduces the @fedify/nuxt package to integrate Fedify with the Nuxt framework, providing a module, Nitro middleware, and a plugin for deferred 406 Not Acceptable handling. It also updates documentation, agent skills, and workspace configurations. Feedback recommends improving TypeScript type safety by using specific types from @nuxt/kit and h3, and suggests extracting the "Not acceptable" response body into a shared constant to prevent duplication across the runtime logic and plugin.

},
setup(
options: ModuleOptions,
nuxt: { options: { alias: Record<string, string> } },
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Instead of manually typing a subset of the Nuxt object, use the Nuxt type imported from @nuxt/kit. This ensures better maintainability and alignment with Nuxt module development standards.

Suggested change
nuxt: { options: { alias: Record<string, string> } },
nuxt: Nuxt,
References
  1. Maintain strict TypeScript typing throughout. (link)

Comment on lines +5 to +6
const createNotAcceptableResponse = () =>
new Response("Not acceptable", {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The string "Not acceptable" is duplicated in plugin.ts. It's better to extract it into a shared constant to ensure consistency across the module.

export const NOT_ACCEPTABLE_BODY = "Not acceptable";

const createNotAcceptableResponse = () =>
  new Response(NOT_ACCEPTABLE_BODY, {

@@ -0,0 +1,46 @@
import type { Federation } from "@fedify/fedify/federation";
import { defineEventHandler, toWebRequest } from "h3";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Import H3Event to properly type the event parameter in the middleware and factory functions.

Suggested change
import { defineEventHandler, toWebRequest } from "h3";
import { defineEventHandler, toWebRequest, type H3Event } from "h3";
References
  1. Maintain strict TypeScript typing throughout. (link)


export function createFedifyMiddleware(
federation: unknown,
contextDataFactory?: (event: unknown, request: Request) => unknown,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The event parameter should be typed as H3Event instead of unknown to maintain strict type safety, consistent with the ContextDataFactory definition in mod.ts.

Suggested change
contextDataFactory?: (event: unknown, request: Request) => unknown,
contextDataFactory?: (event: H3Event, request: Request) => unknown,
References
  1. Maintain strict TypeScript typing throughout. (link)

Comment on lines +3 to +6
import {
DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY,
resolveDeferredNotAcceptable,
} from "./logic.ts";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Import the shared NOT_ACCEPTABLE_BODY constant to avoid duplication.

Suggested change
import {
DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY,
resolveDeferredNotAcceptable,
} from "./logic.ts";
import {
DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY,
NOT_ACCEPTABLE_BODY,
resolveDeferredNotAcceptable,
} from "./logic.ts";

setResponseHeader(event, key, value);
});

payload.body = "Not acceptable";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Use the shared NOT_ACCEPTABLE_BODY constant instead of a hardcoded string to ensure consistency with logic.ts.

Suggested change
payload.body = "Not acceptable";
payload.body = NOT_ACCEPTABLE_BODY;

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 7

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.agents/skills/create-example-app-with-integration/SKILL.md (1)

180-193: ⚠️ Potential issue | 🟠 Major

Close the bash fence immediately after the curl example.

Line 180 opens a fence, but it is only closed at Line 193. That makes the “Lint, format, and final checks” section render as code.

Suggested fix
 ~~~~ bash
 curl -H "Accept: application/activity+json" http://localhost:0000/users/demo
+~~~~
 
 Lint, format, and final checks
 ------------------------------
@@
-~~~~
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/skills/create-example-app-with-integration/SKILL.md around lines 180
- 193, The markdown code fence opened with "~~~~ bash" around the curl example
is left open; close that fence immediately after the curl command so the
following "Lint, format, and final checks" section is not rendered as code—i.e.,
move or add the matching closing fence "~~~~" directly after the line with `curl
-H "Accept: application/activity+json" http://localhost:0000/users/demo` (refer
to the fenced block starting with "~~~~ bash" in SKILL.md) and ensure subsequent
text is plain markdown outside the fence.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.agents/skills/create-example-app-with-integration/SKILL.md:
- Line 178: Update the wording in SKILL.md where the sentence reads "If the
`test:examples` can not be run, just run the server and test with curl:" to use
the standard single-word form "cannot" (i.e., change "can not" to "cannot") so
the line becomes "If the `test:examples` cannot be run, just run the server and
test with curl:".

In `@docs/manual/integration.md`:
- Around line 397-418: The Nuxt docs use inconsistent path styling; update the
Nuxt section so all file and module paths are wrapped in asterisks instead of
underscores or backticks—replace occurrences like _server/federation.ts_,
_nuxt.config.ts_, and `~/server/federation` with *server/federation.ts*,
*nuxt.config.ts*, and *~/server/federation* respectively (in the block that
shows createFederation / MemoryKvStore and the module enablement) so path
styling matches the repo guideline.

In `@packages/nuxt/README.md`:
- Around line 71-72: Replace the inline code backticks around the default module
path with asterisks: change the instance that reads "`@fedify/nuxt` loads your
Federation instance from `~/server/federation`" so that the module and path use
asterisk wrapping (e.g., *@fedify/nuxt* and *~/server/federation*) to comply
with the repo Markdown rule; update the README line containing "@fedify/nuxt"
and "~/server/federation" accordingly.

In `@packages/nuxt/src/mod.test.ts`:
- Line 2: Replace the runtime-specific import of the test entrypoint by
importing the test function from the runtime-agnostic package: change the import
of test from "node:test" to "@fedify/fixture" (i.e., replace the existing import
statement that references node:test with one that imports test from
`@fedify/fixture`), ensuring any usages of the test identifier remain unchanged.

In `@packages/nuxt/src/runtime/server/logic.ts`:
- Around line 47-53: Add a JSDoc block above the exported function
resolveDeferredNotAcceptable that documents its purpose (handle deferred
requests that should return a 406 Not Acceptable when the framework routed to
404), describes parameters isDeferred:boolean and frameworkStatus:number,
explains the return type Response|undefined and the conditions when
createNotAcceptableResponse() is returned, and notes that this is part of the
deferred 406 handling pattern for public API consumers; keep the comment concise
and follow existing project JSDoc style.
- Around line 22-45: Add a JSDoc block to the exported function fetchWithFedify
describing its purpose, parameters (fetcher: (request: Request, options:
FederationFetchOptions<unknown>) => Promise<Response>, request: Request,
contextData: unknown) and return value (Promise<FetchResult>), and note the
behavior/assumption that a response equal to DUMMY_NOT_FOUND_RESPONSE maps to {
kind: "not-found" } and any Response with status 406 is treated as { kind:
"not-acceptable" } (which relies on user handlers not returning 406 for
unrelated reasons); reference DUMMY_NOT_FOUND_RESPONSE and
createNotAcceptableResponse in the doc so callers understand the special-case
mappings.

In `@packages/nuxt/src/runtime/server/middleware.ts`:
- Around line 20-23: Add a JSDoc block above the exported createFedifyMiddleware
function that documents its parameters and return value: describe the
"federation" parameter type/expected shape (unknown but clarify expected usage),
the optional "contextDataFactory" callback signature ((event: unknown, request:
Request) => unknown) and when it is invoked, the middleware behavior (what the
returned function does, side effects, and that it returns a
Connect/Node/Fetch-style middleware handler), and the return type expectations
(e.g., middleware function or handler). Use the function name
createFedifyMiddleware and mention the contextDataFactory callback to make the
doc discoverable.

---

Outside diff comments:
In @.agents/skills/create-example-app-with-integration/SKILL.md:
- Around line 180-193: The markdown code fence opened with "~~~~ bash" around
the curl example is left open; close that fence immediately after the curl
command so the following "Lint, format, and final checks" section is not
rendered as code—i.e., move or add the matching closing fence "~~~~" directly
after the line with `curl -H "Accept: application/activity+json"
http://localhost:0000/users/demo` (refer to the fenced block starting with "~~~~
bash" in SKILL.md) and ensure subsequent text is plain markdown outside the
fence.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 833b06e0-e342-4d98-af3c-fa0f0c532116

📥 Commits

Reviewing files that changed from the base of the PR and between 5323388 and 90757cb.

⛔ Files ignored due to path filters (2)
  • deno.lock is excluded by !**/*.lock
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (24)
  • .agents/skills/add-to-fedify-init/SKILL.md
  • .agents/skills/create-example-app-with-integration/SKILL.md
  • .agents/skills/create-example-app-with-integration/example/README.md
  • .agents/skills/create-example-app-with-integration/example/src/logging.ts
  • .agents/skills/create-integration-package/SKILL.md
  • .hongdown.toml
  • AGENTS.md
  • CHANGES.md
  • CONTRIBUTING.md
  • cspell.json
  • deno.json
  • docs/manual/integration.md
  • mise.toml
  • packages/fedify/README.md
  • packages/nuxt/README.md
  • packages/nuxt/deno.json
  • packages/nuxt/package.json
  • packages/nuxt/src/mod.test.ts
  • packages/nuxt/src/mod.ts
  • packages/nuxt/src/runtime/server/logic.ts
  • packages/nuxt/src/runtime/server/middleware.ts
  • packages/nuxt/src/runtime/server/plugin.ts
  • packages/nuxt/tsdown.config.ts
  • pnpm-workspace.yaml

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

Files with missing lines Coverage Δ
packages/nuxt/src/runtime/server/lib.ts 100.00% <100.00%> (ø)
packages/nuxt/src/runtime/server/logic.ts 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

- Use @fedify/fixture instead of node:test in mod.test.ts
- Type event parameter as H3Event instead of unknown in middleware.ts

Co-Authored-By: Claude (claude-opus-4-20250514)
Move NOT_ACCEPTABLE_BODY and DEFERRED_NOT_ACCEPTABLE_CONTEXT_KEY into
a shared lib.ts to avoid string duplication across logic.ts and
plugin.ts.

Co-Authored-By: Claude (claude-opus-4-20250514)
- Close unclosed bash code fence in SKILL.md
- Fix "can not" to "cannot" in SKILL.md
- Use asterisk-wrapped file paths in README.md and integration.md

Co-Authored-By: Claude (claude-opus-4-20250514)
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.agents/skills/add-to-fedify-init/SKILL.md:
- Around line 37-39: Replace the inline link and plain file paths in the
sentence that mentions WebFrameworkDescription, changing `./init/framework.ts`
and `packages/init/src/types.ts` to wrapped paths (*./init/framework.ts*,
*packages/init/src/types.ts*) and convert the inline link to a reference-style
link (e.g., [init/framework.ts][init-framework]) with the corresponding
reference entry placed at the end of the section; update the sentence to refer
to the reference label and ensure the symbol WebFrameworkDescription remains
mentioned so you can find the exact line to edit.

In `@packages/nuxt/deno.json`:
- Line 24: The "check" npm script currently only runs deno check on "src/*.ts"
which skips nested runtime files (e.g., src/runtime/server/); update the "check"
script (the "check" key value that currently contains "deno fmt --check && deno
lint && deno check src/*.ts") to use a recursive glob such as "src/**/*.ts" or
explicitly include the runtime folder (for example add
"src/runtime/server/**/*.ts") so that deno check covers all nested runtime
TypeScript files.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 44c494fa-0e71-490b-ad31-ac3a6bde1a5c

📥 Commits

Reviewing files that changed from the base of the PR and between 90757cb and 7c3f831.

⛔ Files ignored due to path filters (2)
  • deno.lock is excluded by !**/*.lock
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • .agents/skills/add-to-fedify-init/SKILL.md
  • .agents/skills/create-example-app-with-integration/SKILL.md
  • .agents/skills/create-example-app-with-integration/example/README.md
  • .agents/skills/create-example-app-with-integration/example/src/logging.ts
  • .agents/skills/create-integration-package/SKILL.md
  • .hongdown.toml
  • AGENTS.md
  • CHANGES.md
  • CONTRIBUTING.md
  • cspell.json
  • deno.json
  • docs/manual/integration.md
  • mise.toml
  • packages/fedify/README.md
  • packages/nuxt/README.md
  • packages/nuxt/deno.json
  • packages/nuxt/package.json
  • packages/nuxt/src/mod.test.ts
  • packages/nuxt/src/mod.ts
  • packages/nuxt/src/runtime/server/lib.ts
  • packages/nuxt/src/runtime/server/logic.ts
  • packages/nuxt/src/runtime/server/middleware.ts
  • packages/nuxt/src/runtime/server/plugin.ts
  • packages/nuxt/tsdown.config.ts
  • pnpm-workspace.yaml

Comment on lines +37 to +39
`WebFrameworkDescription` object, referring to
[init/framework.ts](./init/framework.ts). Check the specifications in the
comments in `packages/init/src/types.ts` for details.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use project markdown link/path style in this sentence.

Please switch the inline link to a reference-style link and wrap file paths with asterisks for consistency with repo docs conventions.

✏️ Suggested doc fix
-`WebFrameworkDescription` object, referring to
-[init/framework.ts](./init/framework.ts).  Check the specifications in the
-comments in `packages/init/src/types.ts` for details.
+`WebFrameworkDescription` object, referring to
+[*init/framework.ts*][init-framework-ts].  Check the specifications in the
+comments in *packages/init/src/types.ts* for details.
+
+[init-framework-ts]: ./init/framework.ts

As per coding guidelines, "/*.md: Wrap file paths in asterisks in Markdown documentation" and "/*.md: Place reference-style links at the end of each section in Markdown documentation".

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
`WebFrameworkDescription` object, referring to
[init/framework.ts](./init/framework.ts). Check the specifications in the
comments in `packages/init/src/types.ts` for details.
`WebFrameworkDescription` object, referring to
[*init/framework.ts*][init-framework-ts]. Check the specifications in the
comments in *packages/init/src/types.ts* for details.
[init-framework-ts]: ./init/framework.ts
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/skills/add-to-fedify-init/SKILL.md around lines 37 - 39, Replace the
inline link and plain file paths in the sentence that mentions
WebFrameworkDescription, changing `./init/framework.ts` and
`packages/init/src/types.ts` to wrapped paths (*./init/framework.ts*,
*packages/init/src/types.ts*) and convert the inline link to a reference-style
link (e.g., [init/framework.ts][init-framework]) with the corresponding
reference entry placed at the end of the section; update the sentence to refer
to the reference label and ensure the symbol WebFrameworkDescription remains
mentioned so you can find the exact line to edit.

},
"tasks": {
"test": "deno test",
"check": "deno fmt --check && deno lint && deno check src/*.ts"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Type-check coverage is incomplete for nested runtime files.

Line 24 only checks src/*.ts, so files under src/runtime/server/ are skipped by deno check. That can allow runtime type errors to pass CI.

🔧 Proposed fix
-    "check": "deno fmt --check && deno lint && deno check src/*.ts"
+    "check": "deno fmt --check && deno lint && deno check src/*.ts src/runtime/server/*.ts"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"check": "deno fmt --check && deno lint && deno check src/*.ts"
"check": "deno fmt --check && deno lint && deno check src/*.ts src/runtime/server/*.ts"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/nuxt/deno.json` at line 24, The "check" npm script currently only
runs deno check on "src/*.ts" which skips nested runtime files (e.g.,
src/runtime/server/); update the "check" script (the "check" key value that
currently contains "deno fmt --check && deno lint && deno check src/*.ts") to
use a recursive glob such as "src/**/*.ts" or explicitly include the runtime
folder (for example add "src/runtime/server/**/*.ts") so that deno check covers
all nested runtime TypeScript files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/build Build system and packaging component/federation Federation object related component/integration Web framework integration

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nuxt integration

1 participant