-
-
Notifications
You must be signed in to change notification settings - Fork 381
docs: switch API docs generation to typedoc from api-extractor #2325
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Warning Rate limit exceeded@kazupon has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 2 minutes and 43 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (2)
WalkthroughConsolidates docs onto TypeDoc-generated API, updates VitePress to v2 alpha, restructures sidebar, exports new type utilities ( Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~55 minutes Areas to focus review on:
Possibly related PRs
Suggested labels
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Deploying vue-i18n-next with
|
| Latest commit: |
b205b2d
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://54a04dc6.vue-i18n-next.pages.dev |
| Branch Preview URL: | https://docs-migrate-to-typedoc.vue-i18n-next.pages.dev |
Size ReportBundles
Usages
|
@intlify/core
@intlify/core-base
@intlify/devtools-types
@intlify/message-compiler
petite-vue-i18n
@intlify/shared
vue-i18n
@intlify/vue-i18n-core
commit: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 11
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
packages/vue-i18n-core/src/i18n.ts (1)
950-1003: Fix JSDoc symbol name and wording inrt/number-formatting docsTwo documentation issues to correct in
packages/vue-i18n-core/src/composer.ts:
Line 957: The text refers to
{@link UseI18nScope}but this type does not exist in the codebase. The correct exported type isI18nScope(defined ini18n.ts). Update the link to{@link I18nScope}.Line 1191: In the "Number Formatting" JSDoc block, the description incorrectly says "local scope datetime formats" when describing
n()/ number formatting. It should say "number formats" for accuracy. The text currently repeats "datetime formats" twice in the same section.docs/api/v11/composition.md (1)
720-721: Missing closing quote in code example.The import statement is missing a closing quote:
-import { defineComponent } from 'vue +import { defineComponent } from 'vue'
♻️ Duplicate comments (1)
packages/vue-i18n-core/src/plugin/types.ts (1)
18-18: Same JSDoc tag change as in plugin.ts.This change is identical to the one in
packages/vue-i18n-core/src/plugin.tsat Line 25. Please verify both locations use the correct TypeDoc tag syntax.
🧹 Nitpick comments (3)
packages/petite-vue-i18n/src/vue.d.ts (1)
1-7: Imports align with$toverload typings; consider future DRYingImporting
JsonPathsandTranslateOptionsfrom@intlify/core-basematches how the$toverload generics are defined below, so the typing surface remains coherent and centralized around core-base types.If you touch this again, you might consider extracting a shared helper type for the repeated generic head (
DefinedLocaleMessage,Keys,ResourceKeys) used across all$toverloads to reduce duplication and keep future changes localized, but this is not urgent.typedoc.config.mjs (1)
1-37: Typedoc/VitePress config matches the new docs pipeline; consider a couple of small tweaksThis config lines up with the move to TypeDoc + markdown + VitePress:
entryPointsrestricted tovue-i18n’s main public surfaces is reasonable for API docs.- Markdown plugin and VitePress theme options (tables, lists,
docsRoot: './docs', etc.) look consistent with the newdocs/apilayout and sidebar JSON.Two minor things worth double‑checking:
Group names in
groupOrderDepending on the exact titles emitted by your TypeDoc/markdown theme (often
Classes,Interfaces,Type Aliases, etc.), using'Class'here may not have any effect if it doesn’t match the generated group label string. It might be worth confirming the exact group names and adjusting to something like:groupOrder: ['Variables', 'Functions', 'Classes']if that’s what the plugin actually outputs.
cleanOutputDir: falseand stale API pagesLeaving
cleanOutputDirasfalseavoids wiping manually curated files underdocs/api, but it does mean that removed symbols could leave behind stale.mdfiles. As long as you’re aware of that trade‑off and don’t rely ondocs/apito always reflect the exact current symbol set, this is fine; otherwise consider selectively cleaning or restructuring where custom docs live.Also, if you intend
tsconfig.typedoc.jsonto drive the docs build, make sure it’s either wired in via your npm script (CLI--tsconfig) or added here as atsconfigoption so this config is self‑contained.docs/api/v11/composition.md (1)
151-151: Markdown list indentation inconsistency.Lines 151 and 222 have inconsistent list indentation (1 space instead of 0). This may cause rendering issues in some Markdown parsers:
See about: -- [Local Scope](../../guide/essentials/scope#local-scope-2) +- [Local Scope](../../guide/essentials/scope#local-scope-2)Also applies to: 222-222
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (37)
.gitignore(1 hunks)docs/.vitepress/config.mts(4 hunks)docs/api/injection.md(0 hunks)docs/api/typedoc-sidebar.json(1 hunks)docs/api/v11/component.md(6 hunks)docs/api/v11/composition.md(82 hunks)docs/api/v11/general.md(26 hunks)docs/api/v11/legacy.md(44 hunks)docs/guide/advanced/composition.md(4 hunks)docs/guide/advanced/lazy.md(1 hunks)docs/guide/essentials/datetime.md(2 hunks)docs/guide/essentials/number.md(2 hunks)docs/guide/essentials/pluralization.md(1 hunks)docs/guide/essentials/syntax.md(1 hunks)eslint.config.ts(1 hunks)knip.config.ts(1 hunks)package.json(4 hunks)packages/core-base/src/runtime.ts(1 hunks)packages/core-base/src/types/utils.ts(1 hunks)packages/petite-vue-i18n/src/index.ts(1 hunks)packages/petite-vue-i18n/src/runtime.ts(1 hunks)packages/petite-vue-i18n/src/vue.d.ts(1 hunks)packages/vue-i18n-core/src/components/DatetimeFormat.ts(1 hunks)packages/vue-i18n-core/src/components/NumberFormat.ts(1 hunks)packages/vue-i18n-core/src/components/Translation.ts(1 hunks)packages/vue-i18n-core/src/composer.ts(46 hunks)packages/vue-i18n-core/src/i18n.ts(7 hunks)packages/vue-i18n-core/src/plugin.ts(1 hunks)packages/vue-i18n-core/src/plugin/types.ts(1 hunks)packages/vue-i18n/src/index.ts(2 hunks)packages/vue-i18n/src/runtime.ts(1 hunks)packages/vue-i18n/src/vue.d.ts(3 hunks)packages/vue-i18n/src/vue.ts(1 hunks)scripts/build-types.ts(1 hunks)tsconfig.typedoc.json(1 hunks)tsdoc.json(1 hunks)typedoc.config.mjs(1 hunks)
💤 Files with no reviewable changes (1)
- docs/api/injection.md
🧰 Additional context used
🧬 Code graph analysis (4)
packages/core-base/src/types/utils.ts (2)
packages/vue-i18n/src/index.ts (1)
IsPart(113-113)packages/vue-i18n/src/runtime.ts (1)
IsPart(103-103)
packages/vue-i18n-core/src/i18n.ts (2)
packages/core-base/src/runtime.ts (2)
Locale(46-46)FallbackLocale(56-56)packages/vue-i18n-core/src/index.ts (2)
Locale(16-16)FallbackLocale(8-8)
packages/vue-i18n/src/vue.ts (4)
packages/vue-i18n/src/vue.d.ts (2)
ComponentCustomOptions(36-45)ComponentCustomProperties(52-766)packages/vue-i18n-core/src/composer.ts (4)
CustomBlocks(246-246)DefineLocaleMessage(153-153)VueMessageType(126-126)DefineDateTimeFormat(180-180)packages/vue-i18n/src/index.ts (17)
CustomBlocks(80-80)ExportedGlobalComposer(90-90)DefineLocaleMessage(87-87)IsEmptyObject(111-111)JsonPaths(114-114)IsNever(112-112)TranslateOptions(64-64)NamedValue(57-57)MessageFunction(54-54)VueMessageType(107-107)Locale(46-46)DefineDateTimeFormat(86-86)PickupFormatPathKeys(115-115)DateTimeOptions(36-36)IsPart(113-113)NumberOptions(58-58)LocaleMessageValue(50-50)packages/core-base/src/runtime.ts (3)
NamedValue(118-118)MessageFunction(85-85)Locale(46-46)
packages/vue-i18n/src/vue.d.ts (2)
packages/core-base/src/types/utils.ts (1)
IsNever(6-6)packages/core-base/src/number.ts (1)
NumberOptions(78-101)
🪛 LanguageTool
docs/api/v11/legacy.md
[grammar] ~896-~896: Use a hyphen to join words.
Context: ...ontains html markup (e.g. around a user provided value). This usage pattern mos...
(QB_NEW_EN_HYPHEN)
docs/api/v11/composition.md
[style] ~827-~827: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ts than global scope datetime formats. If not, then it’s formatted with global sc...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~925-~925: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ts than global scope datetime formats. If not, then it’s formatted with global sc...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~1046-~1046: Use a hyphen to join words.
Context: ...contains html markup (e.g. around a user provided value). This usage pattern mos...
(QB_NEW_EN_HYPHEN)
[style] ~1270-~1270: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ack if is enabled, so the message will need to be resolved as well. The message resol...
(REP_NEED_TO_VB)
[style] ~1305-~1305: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... setting will be ignored. That is, you need to resolve the flat JSON by yourself. See...
(REP_NEED_TO_VB)
[style] ~1449-~1449: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ges than global scope locale messages. If not, then it’s translated with global s...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~1454-~1454: Ensure spelling is correct
Context: ...and and use the structure of the locale messge returned by tm. See about: - [Scope ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~1486-~1486: Ensure spelling is correct
Context: ...and and use the structure of the locale messge returned by tm. See about: - [Plural...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~1520-~1520: Ensure spelling is correct
Context: ...and and use the structure of the locale messge returned by tm. See about: - [List i...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~1554-~1554: Ensure spelling is correct
Context: ...and and use the structure of the locale messge returned by tm. See about: - [Named ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~1600-~1600: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ges than global scope locale messages. If not, then it’s translated with global s...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
docs/guide/advanced/lazy.md
[style] ~80-~80: This phrase is redundant. Consider using “outside”.
Context: ...ode example also shows how to handle it outside of the component using the [global prope...
(OUTSIDE_OF)
docs/api/v11/general.md
[grammar] ~515-~515: Ensure spelling is correct
Context: ...allbackWithSimple Fallback with simple implemenation Signature: ```typescript export declar...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~746-~746: Ensure spelling is correct
Context: ...s A resolve message. ### linked(key, optoins) Overloaded linked Signature: `...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~760-~760: Ensure spelling is correct
Context: ... --- | | key | Path | A message key | | optoins | LinkedOptions | An [linked options](#...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.18.1)
docs/guide/essentials/syntax.md
45-45: Blank line inside blockquote
(MD028, no-blanks-blockquote)
docs/guide/essentials/datetime.md
47-47: Blank line inside blockquote
(MD028, no-blanks-blockquote)
50-50: Blank line inside blockquote
(MD028, no-blanks-blockquote)
docs/api/v11/legacy.md
902-902: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
906-906: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
docs/api/v11/composition.md
151-151: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
222-222: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
759-759: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
852-852: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
878-878: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
950-950: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
976-976: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
docs/guide/essentials/pluralization.md
34-34: Blank line inside blockquote
(MD028, no-blanks-blockquote)
docs/api/v11/general.md
33-33: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
182-182: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
288-288: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
760-760: Link fragments should be valid
(MD051, link-fragments)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Build (windows-latest, 24)
- GitHub Check: Cloudflare Pages
🔇 Additional comments (46)
docs/guide/advanced/lazy.md (2)
77-83: Good use of eslint directives and admonition formatting.The eslint-disable/enable markers properly suppress markdown linting warnings, and the conversion from a plain NOTE block to a styled TIP admonition aligns with VitePress v2 conventions and improves documentation readability.
77-83: I'll help you verify the API reference links in this review comment. Let me search for the referenced documentation files.
<function_calls>
#!/bin/bashFind API documentation files related to I18n
find docs/api -type f -name "I18n" 2>/dev/null | head -20
</function_calls>
<function_calls>
#!/bin/bashCheck the structure of docs/api directory
fd -t f -e md 'general.*interfaces' docs/ 2>/dev/null | head -20
</function_calls>
<function_calls>
#!/bin/bashList the docs/api directory structure
ls -la docs/api/ 2>/dev/null || echo "docs/api not found"
</function_calls>
<function_calls>
#!/bin/bashList all markdown files in docs/api
find docs/api -type f -name "*.md" 2>/dev/null | sort
</function_calls>tsconfig.typedoc.json (1)
1-4: LGTM! TypeDoc configuration is well-structured.The configuration appropriately extends the base tsconfig and includes the necessary paths for documenting TypeScript sources across all packages.
packages/vue-i18n-core/src/components/Translation.ts (1)
87-91: LGTM! Documentation format modernized for TypeDoc.The migration from
@VueI18nSeetags to{@linkcode}and markdown link syntax aligns well with TypeDoc's modern linking capabilities.eslint.config.ts (1)
115-115: LGTM! Appropriate exclusion of TypeScript declaration file.Excluding
vue.d.tsfrom ESLint is reasonable, as declaration files often contain complex type definitions that don't need to follow the same linting rules as regular source files.packages/core-base/src/types/utils.ts (1)
193-193: LGTM! Good consolidation of type utility.The
IsParttype is being centralized here and exported for reuse across packages. This eliminates duplication and expands the public API surface appropriately. The type correctly extracts thepartproperty type when present, or returnsfalseotherwise.knip.config.ts (1)
43-43: LGTM! Appropriate file exclusions for Knip analysis.Excluding
vue.d.tsandvue.tsfrom Knip's dead code detection is reasonable, as these files likely contain type declarations and special runtime code that may appear unused but are actually consumed externally.scripts/build-types.ts (1)
42-45: Await is correctly applied and essential for proper type handling.The verification confirms that
isolatedDeclarationfromoxc-transformis an async function that returnsPromise<IsolatedDeclarationsResult>. Withoutawait,dtswould be a Promise object rather than the resolved result, causing.errorsand.codeproperty accesses to fail. The fix is correct and properly implemented.docs/api/v11/component.md (2)
9-10: Interface signature formatting change is non-semanticThese interface signature lines are just whitespace/formatting adjustments; no impact on the documented API surface. Looks good to keep docs tidy.
Also applies to: 115-116, 255-256
95-99: Updated See Also link paths look consistent with v11 docs layoutThe See Also links now point to
../../guide/..., which matches the expected relative path fromdocs/api/v11/*.mdinto the guide section. The cross‑references for datetime, number, and component interpolation appear correct.Also applies to: 169-173, 200-204
packages/vue-i18n-core/src/components/DatetimeFormat.ts (1)
61-75: DatetimeFormat JSDoc refactor aligns with new TypeDoc styleSwitching from custom
@VueI18nSeetags to explicit{@linkcode ...}and markdown links plus a[!CAUTION]block is clear and TypeDoc‑friendly, with no impact on runtime behavior.packages/vue-i18n-core/src/components/NumberFormat.ts (1)
66-80: NumberFormat JSDoc updates are consistent and safeThe new “See the following items…” section,
{@linkcode ...}usage, and CAUTION block mirror DatetimeFormat and are appropriate for TypeDoc without affecting the component API.packages/vue-i18n-core/src/i18n.ts (1)
256-377: ComposerOptions generic/type wiring and docs look coherentThe expanded generic parameters (MessagesLocales/DateTimeFormatsLocales/NumberFormatsLocales and derived
_Messages/_DateTimeFormats/_NumberFormats) and the updated “See about:” doc blocks improve type inference and documentation while keeping defaults compatible with existing schemas and locales. No runtime behavior is affected.packages/vue-i18n-core/src/composer.ts (1)
61-76: CentralizingIsParttype and conditional return types ford/nlook correctImporting
IsPartfrom@intlify/core-baseand reusing it in theComposerDateTimeFormattingandComposerNumberFormattingoverloads keeps the “return parts vs string” conditional logic in sync with the core utilities. TheOptionsTypeunions (Key | ResourceKeys | DateTimeOptions<…>/NumberOptions<…>) still driveIsPart<OptionsType>in the same way, so existing callers should see the same inferred return types.Also applies to: 1119-1155, 1216-1250
docs/api/v11/legacy.md (2)
77-78: VueI18n generic interface signature correction looks goodThe
VueI18n<…>interface now has a balanced generic parameter list and composition type parameter; this matches the corresponding Composer shape and restores a well‑formed signature for the legacy API docs.
128-129: Guide link path updates in legacy docs are consistentThe many “See Also” links now use
../../guide/...which matches the directory depth ofdocs/api/v11/legacy.mdand keeps legacy docs aligned with the reorganized guide structure.Also applies to: 142-143, 155-157, 169-171, 291-292, 347-348, 359-360, 379-381, 446-448, 461-462, 626-627, 750-751, 927-928, 947-948, 979-981, 1000-1001, 1048-1049, 1133-1136, 1170-1171, 1190-1191, 1231-1233, 1252-1254, 1309-1310, 1335-1336, 1364-1366, 1429-1430, 1461-1462, 1581-1582, 1610-1612, 1641-1642, 1674-1676
tsdoc.json (1)
4-7: Adding@moduleTSDoc block tag is straightforward and consistentDefining
@moduleas ablocktag alongside the existing Vue I18n custom tags is fine and should integrate cleanly with the TSDoc/TypeDoc pipeline.packages/core-base/src/runtime.ts (1)
76-82: JSDoc@returnstag normalization is fineChanging
@returnto@returnsforMessageFunctionaligns with standard JSDoc/TSDoc style and doesn’t affect types or runtime.packages/petite-vue-i18n/src/runtime.ts (1)
76-83: JsonPaths utility type re-export is consistent and safeAdding
JsonPathsalongside the other utility types from@intlify/core-basecleanly exposes the new path-typing helper to petite-vue-i18n consumers without affecting runtime behavior. Looks good.packages/petite-vue-i18n/src/index.ts (1)
77-84: Public JsonPaths export mirrors runtime and core-baseRe-exporting
JsonPathshere keeps the public petite-vue-i18n entrypoint aligned with the runtime and the main vue-i18n package, so consumers can access the path helper type directly from this package. No issues from a typing or API-shape perspective.packages/vue-i18n/src/runtime.ts (1)
100-108: Exposing IsPart and JsonPaths from vue-i18n runtime is consistentAdding
IsPartandJsonPathsto the exported utility types keeps vue-i18n’s runtime entrypoint aligned with@intlify/core-baseand the top-level vue-i18n exports, making the new path/segment helpers easily consumable without altering runtime behavior..gitignore (1)
11-17: Ignore patterns match the new VitePress/TypeDoc doc layoutIgnoring
**/.vitepress/cacheand the generated API docs underdocs/api/{general,vue}while explicitly keepingdocs/api/typedoc-sidebar.jsontracked aligns with the new docs generation flow and avoids polluting the repo with build artifacts. Looks appropriate.docs/guide/essentials/number.md (2)
48-53: TIP for$noverloads matches new API reference layoutThe new TIP succinctly points users from
$nusage to the centralized API reference (ComponentCustomProperties#n), which fits the TypeDoc-based docs structure and keeps this guide focused on examples. No issues here.
165-170: NOTE linking to NumberFormat scoped slot docs is clear and alignedThe NOTE that directs readers to the
NumberFormattype alias page for the full list of supportedi18n-nscoped slots and props fits well with the new API docs organization and avoids duplicating reference material in the guide. Looks good as-is; just keep the relative path in sync if the generated file layout ever changes.docs/api/typedoc-sidebar.json (1)
1-1: LGTM - TypeDoc-generated sidebar configuration.The sidebar JSON structure correctly defines the navigation for the new TypeDoc-based API documentation. The collapsed groups for Variables, Functions, Interfaces, and Type Aliases align with the expected API structure.
If this file is ever manually edited, consider formatting it for readability. However, since it appears to be auto-generated by TypeDoc, the current minified format is acceptable.
packages/vue-i18n/src/index.ts (2)
1-7: LGTM - Module annotation for TypeDoc grouping.The
@module generalJSDoc annotation correctly instructs TypeDoc to organize these exports under the "general" section, which aligns with the new sidebar structure intypedoc-sidebar.json.
110-118: Verification complete: Type export consistency confirmed.The re-export of
IsPartandJsonPathsinpackages/vue-i18n/src/index.ts(lines 110-118) is correct and consistent. Both types are properly defined in@intlify/core-base(utils.ts), imported invue.d.ts, and actively used in type guards and generic constraints:
IsPart<OptionsType>is used in return type conditions forformatDate,formatNumbermethods (vue.d.ts:617, 682, 737)JsonPathsis used in generic type constraints for multiple method overloads throughoutvue.d.tsdocs/guide/advanced/composition.md (4)
65-65: LGTM - Updated API reference link to new TypeDoc structure.The link correctly points to the new generated Composer interface documentation path.
138-138: LGTM - Composer#t reference updated.
221-221: LGTM - Composer#d reference updated.
259-259: LGTM - Composer#n reference updated.docs/guide/essentials/pluralization.md (1)
30-42: LGTM - Admonition format and API link updates.The conversion to
[!TIP]and[!NOTE]admonition syntax is consistent with other documentation files in this PR. The API reference link correctly points to the new TypeDoc-generated path.The markdownlint MD028 warning (blank line inside blockquote) at line 34 is a false positive in this context—the blank line intentionally separates two distinct callout blocks, and VitePress renders them correctly.
docs/guide/essentials/datetime.md (2)
43-58: LGTM - Admonition format and API link updates.The conversion to
[!NOTE]and[!TIP]syntax is consistent with the documentation formatting changes across the PR. The API reference links correctly point to the new TypeDoc-generated paths.The markdownlint MD028 warnings at lines 47 and 50 are expected—these blank lines intentionally separate distinct callout blocks.
154-159: LGTM - DatetimeFormat API reference updated.The link to the
DatetimeFormattype alias correctly uses the new TypeDoc structure.packages/vue-i18n/src/vue.d.ts (3)
1-14: LGTM - Import consolidation for IsPart and JsonPaths.Importing
IsPartandJsonPathsfrom@intlify/core-baseinstead of defining them locally is the correct approach. This eliminates duplication and ensures type consistency across the codebase.
29-45: LGTM - Internal annotations added.The
@internaland@VueI18nInjectionannotations help TypeDoc properly categorize this interface in the generated documentation.
722-737: LGTM - Improved $n overload with conditional return type.The addition of the
OptionsTypegeneric parameter and theIsPart<OptionsType>conditional return type provides better type inference. Whenoptions.partistrue, the return type correctly infersIntl.NumberFormatPart[]instead ofstring.This aligns with the
NumberOptionsinterface from@intlify/core-basewhich includespart?: boolean.docs/.vitepress/config.mts (3)
53-58: LGTM - Sidebar construction migrated to flat array.The sidebar is now built by spreading helper functions into a flat array, which is cleaner than the previous object-based approach. This also enables both the new TypeDoc API docs (
sidebarApi()) and the legacy v11 API docs (sidebarApiV11('v11/')) to coexist.
254-294: LGTM - Dual API reference structure.The renaming of the original
sidebarApitosidebarApiV11and the creation of a newsidebarApifunction that uses the TypeDoc-generated sidebar JSON is a clean approach for:
- Current API docs (
sidebarApi): TypeDoc-generated fromtypedoc-sidebar.json- Legacy v11 API docs (
sidebarApiV11): Manual sidebar for backward compatibilityThe v11 label clearly indicates these are legacy docs, and the namespace parameter (
ns = 'v11/') correctly prefixes the links.
3-5: JSON import assertion syntax is fully compatible with your build environment.The
with { type: 'json' }assertion is supported in Node.js 20+ (your project requires>= 20) and your TypeScript config usestarget: "esnext"andmodule: "esnext", which both support this syntax. Vite automatically handles JSON imports with assertions, so no additional configuration is needed.packages/vue-i18n/src/vue.ts (2)
603-619: InconsistentValuetype constraint in$doverload.This overload's
Valueconstraint isnumber | Datebut other$doverloads (lines 522, 548, 575) includestringas well (number | Date | string). Verify if this is intentional:$d< - Value extends number | Date = number, + Value extends number | Date | string = number,
1-47: New component injection API definitions look good.The
ComponentCustomOptionsandComponentCustomPropertiesinterfaces are well-structured with proper JSDoc documentation. The type imports from@intlify/core-baseand@intlify/vue-i18n-coreare correctly organized.package.json (3)
156-158: TypeDoc dependencies added for documentation generation.The new TypeDoc tooling additions look appropriate:
typedoc: Core documentation generatortypedoc-plugin-markdown: Markdown output supporttypedoc-vitepress-theme: VitePress integrationThese align well with the PR's objective to migrate from api-extractor to TypeDoc.
170-170: VitePress Vite override to rolldown-vite.The override
"vitepress>vite": "npm:rolldown-vite@7.2.7"pins VitePress's internal Vite dependency to rolldown-vite. This is likely required for compatibility with VitePress 2.x alpha. Ensure this is tracked and updated as VitePress stabilizes.
161-162: Based on my verification, I can now provide the rewritten review comment:
VitePress 2.0.0-alpha.15 is the current latest available version; verify TypeDoc migration compatibility and monitor for breaking changes.
VitePress 2.0.0 has not yet reached a stable release (as of November 2025), and
^2.0.0-alpha.15is the latest available. VitePress 2.0 alpha includes documented breaking changes in theme/config APIs (sidebar structure:children→items), composables (useLocalNav/useSidebarremoved), markdown rendering (markdown-it-async, Shiki v3), and search tooling (DocSearch v4 beta).Since this appears intentional for the TypeDoc migration, verify that:
- The docs configuration and theme are compatible with these breaking changes
- The caret range (
^) doesn't introduce unexpected alpha patch updates; consider pinning to a specific alpha version if stability is critical- The
vitepress>viteoverride torolldown-vite@7.2.7remains compatible as alpha releases proceeddocs/api/v11/composition.md (1)
692-692: Typo: "messge" should be "message".This typo appears in multiple WARNING blocks throughout the documentation (lines 692, 1454, 1486, 1520, 1554):
- [!WARNING] You need to use `rt` for the locale message returned by `tm`. see the `rt` details. + [!WARNING] You need to use `rt` for the locale message returned by `tm`. See the `rt` details.Also fix "locale messge" → "locale message" in the related warning blocks.
Likely an incorrect or invalid review comment.
docs/api/v11/composition.md
Outdated
| See about: - | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Incomplete "See about" sections in documentation.
Several method documentation sections have "See about: -" with no actual content. These appear to be placeholders that were not filled in:
- Line 382-383:
getMissingHandler() - Line 433-434:
getPostTranslationHandler() - Line 587-588:
setMissingHandler(handler) - Line 632-633:
setPostTranslationHandler(handler)
Also applies to: 433-434, 587-588, 632-633
🤖 Prompt for AI Agents
In docs/api/v11/composition.md around lines 382-383, 433-434, 587-588 and
632-633, the "See about: -" placeholders for getMissingHandler(),
getPostTranslationHandler(), setMissingHandler(handler) and
setPostTranslationHandler(handler) are incomplete; replace each placeholder with
the appropriate cross-reference or explanatory content: add a brief "See also"
pointing to related methods (e.g., the corresponding set/get counterpart and the
composition or i18n section), or include a short description of what the handler
does and an example usage link, ensuring each entry contains a clear reference
or content instead of the "-" placeholder.
| Whether to escape parameters for list or named interpolation values. When enabled, this option: - Escapes HTML special characters (`<`, `>`, `"`, `'`, `&`, `/`, `=`) in interpolation parameters - Sanitizes the final translated HTML to prevent XSS attacks by: - Escaping dangerous characters in HTML attribute values - Neutralizing event handler attributes (onclick, onerror, etc.) - Disabling javascript: URLs in href, src, action, formaction, and style attributes | ||
|
|
||
| This is useful when translation output is used in `v-html` and the translation resource contains html markup (e.g. around a user provided value). | ||
|
|
||
| This usage pattern mostly occurs when passing precomputed text strings into UI components. | ||
|
|
||
| The escape process involves replacing the following symbols with their respective HTML character entities: `<`, `>`, `"`, `'`. | ||
|
|
||
| Setting `escapeParameterHtml` as true should not break existing functionality but provides a safeguard against a subtle type of XSS attack vectors. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Search for escapeParameterHtml and escapeParameter implementations
echo "=== Searching for escapeParameterHtml implementation ==="
rg -n "escapeParameterHtml" -S -A 10 -B 2
echo ""
echo "=== Searching for escapeParameter implementation ==="
rg -n "escapeParameter" -S -A 10 -B 2
echo ""
echo "=== Searching for HTML escaping helpers ==="
rg -n "escapeHtml" -S -A 10 -B 2Repository: intlify/vue-i18n
Length of output: 33206
Align escapeParameterHtml documentation with actual implementation to avoid false security guarantees
The documentation in docs/api/v11/legacy.md (lines 894–901) incorrectly claims that escapeParameterHtml performs attribute-level sanitization, event handler neutralization, and javascript: URL filtering. The actual implementation (in packages/shared/src/utils.ts, lines 92–98 and packages/core-base/src/translate.ts, lines 743–753) only escapes four characters: <, >, ", '.
The documentation also incorrectly lists &, /, = as escaped characters, which are not. Compare with the accurate description in docs/api/v11/composition.md (line 1050): "The escape process involves replacing the following symbols with their respective HTML character entities: `<`, `>`, `"`, `'`."
Update the legacy.md documentation to match the actual behavior, either by removing the false sanitization claims or by implementing the described security features if they are intended.
As a minor style fix, change "user provided value" to "user‑provided value" on line 896.
🧰 Tools
🪛 LanguageTool
[grammar] ~896-~896: Use a hyphen to join words.
Context: ...ontains html markup (e.g. around a user provided value). This usage pattern mos...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
In docs/api/v11/legacy.md around lines 894–901 (and the phrase on line 896),
update the documentation to accurately describe escapeParameterHtml: replace the
current claim that it escapes `&`, `/`, `=` and performs attribute-level
sanitization, event-handler neutralization, and javascript: URL filtering with
the actual behavior (it only replaces the four characters `<`, `>`, `"` and `'`
with HTML entities); remove the false sanitization/security guarantees or
alternatively note that those additional protections are not implemented here
and would require a separate sanitizer; also change "user provided value" to
"user‑provided value" on line 896.
| * If you want to install manually in the `import` syntax, you can set it to `false` to install when needed. | ||
| * | ||
| * @defaultValue `true` | ||
| * @default `true` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
TypeDoc JSDoc @default vs @defaultValue documentation
💡 Result:
Short answer: Use @DefaultValue for TSDoc/TypeDoc (TypeDoc also accepts the JSDoc @default/@DefaultValue synonym). TypeDoc’s docs recommend/recognize the TSDoc tag @DefaultValue and note they also “recognize the commonly used alternative @default” so both work, but @DefaultValue is the TSDoc-standard form. [1][2]
References:
- TypeDoc @DefaultValue (notes it also recognizes @default). [1]
- JSDoc @default / @DefaultValue (JSDoc synonym & usage). [2]
Reconsider the JSDoc tag change; @defaultValue is the TypeDoc standard, not @default.
TypeDoc's official documentation recommends the TSDoc standard tag @defaultValue for documenting default values. While TypeDoc does recognize @default as a JSDoc synonym for backwards compatibility, it is not the preferred form for TypeDoc. The change from @defaultValue to @default appears to move away from TypeDoc's recommended standard rather than being part of a proper migration. If this change is intentional (e.g., adopting JSDoc conventions), it should be documented or reconsidered in favor of the TSDoc standard @defaultValue.
🤖 Prompt for AI Agents
In packages/vue-i18n-core/src/plugin.ts around line 25, the JSDoc tag was
changed from the TSDoc/TypeDoc-standard @defaultValue to @default; revert or
update this to use @defaultValue (or document the deliberate switch to JSDoc if
intentional). Replace the @default tag with @defaultValue to follow TypeDoc
recommendations, or if the change was deliberate, add a brief comment in the
file or repo docs explaining the rationale for adopting @default so reviewers
know it is intentional.
|
related #2098 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (5)
packages/vue-i18n/src/vue.d.ts (3)
669-683: Incorrect type reference:$noverload usesDefineDateTimeFormatinstead ofDefineNumberFormat.This overload incorrectly references
DefineDateTimeFormatfor number formatting. This will cause incorrect type inference when using the options-based$nsignature.$n< Key extends string = string, DefinedNumberFormat extends - RemovedIndexResources<DefineDateTimeFormat> = RemovedIndexResources<DefineDateTimeFormat>, + RemovedIndexResources<DefineNumberFormat> = RemovedIndexResources<DefineNumberFormat>, Keys = IsEmptyObject<DefinedNumberFormat> extends false
696-710: Incorrect type reference:$noverload usesDefineDateTimeFormatinstead ofDefineNumberFormat.Same issue as above—this key+locale overload incorrectly references
DefineDateTimeFormat.$n< Key extends string = string, DefinedNumberFormat extends - RemovedIndexResources<DefineDateTimeFormat> = RemovedIndexResources<DefineDateTimeFormat>, + RemovedIndexResources<DefineNumberFormat> = RemovedIndexResources<DefineNumberFormat>, Keys = IsEmptyObject<DefinedNumberFormat> extends false
723-738: Incorrect type reference:$noverload usesDefineDateTimeFormatinstead ofDefineNumberFormat.Same issue—this options+locale overload incorrectly references
DefineDateTimeFormat.$n< Key extends string = string, DefinedNumberFormat extends - RemovedIndexResources<DefineDateTimeFormat> = RemovedIndexResources<DefineDateTimeFormat>, + RemovedIndexResources<DefineNumberFormat> = RemovedIndexResources<DefineNumberFormat>, Keys = IsEmptyObject<DefinedNumberFormat> extends falsedocs/api/v11/general.md (1)
184-184: Fix awkward phrasing in ExportedGlobalComposer description.Line 184 contains awkward phrasing: "This interface is the global composer that is provided interface that is injected..."
Reword for clarity:
-This interface is the [global composer](general#global) that is provided interface that is injected into each component with `app.config.globalProperties`. +This interface is the [global composer](general#global) that is injected into each component via `app.config.globalProperties`.docs/api/v11/legacy.md (1)
894-902: Remove false security claims fromescapeParameterdocumentation and fix typo.The documentation at lines 894–902 is contradictory and overstates the functionality. Lines 894–895 falsely claim escaping of
&,/,=and advanced sanitization (event handler neutralization, javascript: URL filtering), but the actual implementation (packages/shared/src/utils.ts:92-98) only escapes four characters:<,>,",'. Line 900 correctly states this; lines 894–895 must be removed.Additionally, line 896 contains a typo: "user provided" should be "user-provided".
-Whether to escape parameters for list or named interpolation values. When enabled, this option: - Escapes HTML special characters (`<`, `>`, `"`, `'`, `&`, `/`, `=`) in interpolation parameters - Sanitizes the final translated HTML to prevent XSS attacks by: - Escaping dangerous characters in HTML attribute values - Neutralizing event handler attributes (onclick, onerror, etc.) - Disabling javascript: URLs in href, src, action, formaction, and style attributes +Whether to escape parameters for list or named interpolation values. When enabled, interpolation parameters are escaped before the message is translated. -This is useful when translation output is used in `v-html` and the translation resource contains html markup (e.g. around a user provided value). +This is useful when translation output is used in `v-html` and the translation resource contains html markup (e.g. around a user-provided value). This usage pattern mostly occurs when passing precomputed text strings into UI components. The escape process involves replacing the following symbols with their respective HTML character entities: `<`, `>`, `"`, `'`. Setting `escapeParameter` as true should not break existing functionality but provides a safeguard against a subtle type of XSS attack vectors.
♻️ Duplicate comments (4)
packages/vue-i18n/src/vue.ts (1)
671-740: Type definition error:$noverloads incorrectly useDefineDateTimeFormatinstead ofDefineNumberFormat.Three
$noverloads (lines 671-685, 698-712, 725-740) incorrectly referenceDefineDateTimeFormatwhen they should useDefineNumberFormat. This mirrors the same issue invue.d.tsand was previously flagged.Apply this fix to all three affected overloads (lines 674, 701, 728):
DefinedNumberFormat extends - RemovedIndexResources<DefineDateTimeFormat> = RemovedIndexResources<DefineDateTimeFormat>, + RemovedIndexResources<DefineNumberFormat> = RemovedIndexResources<DefineNumberFormat>,docs/api/v11/legacy.md (1)
896-896: Fix hyphenation: "user provided" should be "user-provided".Line 896 uses the phrase "user provided value" which should be hyphenated when used as a compound modifier.
-around a user provided value +around a user-provided valuedocs/api/v11/general.md (1)
744-760: Fix parameter name typo: "optoins" should be "options".The parameter name is misspelled in the method signature and documentation:
- Line 744:
### linked(key, optoins)- Line 750:
linked(key: Path, optoins?: LinkedOptions)- Line 758:
| optoins | LinkedOptions | ...Update all occurrences to "options":
-### linked(key, optoins) +### linked(key, options)-linked(key: Path, optoins?: LinkedOptions): MessageType<T>; +linked(key: Path, options?: LinkedOptions): MessageType<T>;-| optoins | LinkedOptions | An [linked options](#linkedoptions) | +| options | LinkedOptions | An [linked options](#linkedoptions) |docs/api/v11/composition.md (1)
585-585: Fix incomplete "See about" section.Line 585 shows "See about: -" with no content. Add proper references or remove the incomplete section.
-See about: - +See about: +- [Post Translation Handler](composition#posttranslationhandler) +- [Handler setup](../../guide/advanced/composition)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (12)
benchmark/complex-jit-aot.mjs(1 hunks)benchmark/complex-jit.mjs(1 hunks)benchmark/complex.mjs(1 hunks)benchmark/simple-jit-aot.mjs(1 hunks)benchmark/simple-jit.mjs(1 hunks)benchmark/simple.mjs(1 hunks)docs/api/v11/composition.md(81 hunks)docs/api/v11/general.md(26 hunks)docs/api/v11/legacy.md(45 hunks)docs/guide/advanced/lazy.md(1 hunks)packages/vue-i18n/src/vue.d.ts(4 hunks)packages/vue-i18n/src/vue.ts(1 hunks)
✅ Files skipped from review due to trivial changes (5)
- benchmark/complex-jit.mjs
- benchmark/simple-jit.mjs
- benchmark/complex-jit-aot.mjs
- benchmark/complex.mjs
- benchmark/simple-jit-aot.mjs
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/guide/advanced/lazy.md
🧰 Additional context used
🧬 Code graph analysis (2)
packages/vue-i18n/src/vue.d.ts (3)
packages/core-base/src/types/utils.ts (2)
RemovedIndexResources(173-175)IsNever(6-6)packages/vue-i18n-core/src/composer.ts (1)
DefineNumberFormat(208-208)packages/core-base/src/number.ts (1)
NumberOptions(78-101)
packages/vue-i18n/src/vue.ts (2)
packages/vue-i18n/src/vue.d.ts (2)
ComponentCustomOptions(37-46)ComponentCustomProperties(53-767)packages/core-base/src/runtime.ts (3)
NamedValue(118-118)MessageFunction(85-85)Locale(46-46)
🪛 LanguageTool
docs/api/v11/general.md
[grammar] ~744-~744: Ensure spelling is correct
Context: ...s A resolve message. ### linked(key, optoins) Overloaded linked Signature: `...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~758-~758: Ensure spelling is correct
Context: ... --- | | key | Path | A message key | | optoins | LinkedOptions | An [linked options](#...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
docs/api/v11/composition.md
[style] ~825-~825: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ts than global scope datetime formats. If not, then it’s formatted with global sc...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~923-~923: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ts than global scope datetime formats. If not, then it’s formatted with global sc...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~1044-~1044: Use a hyphen to join words.
Context: ...contains html markup (e.g. around a user provided value). This usage pattern mos...
(QB_NEW_EN_HYPHEN)
[style] ~1268-~1268: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ack if is enabled, so the message will need to be resolved as well. The message resol...
(REP_NEED_TO_VB)
[style] ~1303-~1303: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... setting will be ignored. That is, you need to resolve the flat JSON by yourself. See...
(REP_NEED_TO_VB)
[style] ~1447-~1447: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ges than global scope locale messages. If not, then it’s translated with global s...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~1452-~1452: Ensure spelling is correct
Context: ...and and use the structure of the locale messge returned by tm. See about: - [Scope ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~1484-~1484: Ensure spelling is correct
Context: ...and and use the structure of the locale messge returned by tm. See about: - [Plural...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~1518-~1518: Ensure spelling is correct
Context: ...and and use the structure of the locale messge returned by tm. See about: - [List i...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~1552-~1552: Ensure spelling is correct
Context: ...and and use the structure of the locale messge returned by tm. See about: - [Named ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~1598-~1598: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ges than global scope locale messages. If not, then it’s translated with global s...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🪛 markdownlint-cli2 (0.18.1)
docs/api/v11/general.md
33-33: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
288-288: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
758-758: Link fragments should be valid
(MD051, link-fragments)
docs/api/v11/composition.md
84-84: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
151-151: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
194-194: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
207-207: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
431-431: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
442-442: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
572-572: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
617-617: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
698-698: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
771-771: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
862-862: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
873-873: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
877-877: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
924-924: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
944-944: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
948-948: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
962-962: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
973-973: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1045-1045: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1049-1049: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1052-1052: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1091-1091: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1128-1128: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1243-1243: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1270-1270: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1302-1302: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1420-1420: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1454-1454: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1485-1485: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1519-1519: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1547-1547: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (16)
- GitHub Check: E2E test for rolldown build (macos-latest, 20)
- GitHub Check: E2E test for rolldown build (ubuntu-latest, 24)
- GitHub Check: E2E test for rolldown build (macos-latest, 24)
- GitHub Check: E2E test for rolldown build (macos-latest, 22)
- GitHub Check: E2E test for rolldown build (ubuntu-latest, 20)
- GitHub Check: E2E test for rolldown build (ubuntu-latest, 22)
- GitHub Check: release
- GitHub Check: upload
- GitHub Check: Unit test (windows-latest, 20)
- GitHub Check: Unit test (windows-latest, 24)
- GitHub Check: Unit test (windows-latest, 22)
- GitHub Check: Build (ubuntu-latest, 24)
- GitHub Check: Build (macos-latest, 24)
- GitHub Check: Build (windows-latest, 24)
- GitHub Check: release
- GitHub Check: Cloudflare Pages
🔇 Additional comments (3)
benchmark/simple.mjs (1)
1-1: Import change is fine; no runtime impactDropping the inline ESLint disable on this
@intlify/core-baseimport is safe from a runtime perspective, and the import itself is idiomatic ESM. As long as ESLint passes with current rules, this looks good.packages/vue-i18n/src/vue.d.ts (1)
1-14: Import additions look correct.The imports of
IsPart,JsonPaths, andDefineNumberFormatare properly added to support the new type machinery for number formatting overloads.packages/vue-i18n/src/vue.ts (1)
1-48: Module structure and imports look correct.The module documentation, imports from
@intlify/core-baseand@intlify/vue-i18n-core, and theComponentCustomOptionsinterface are properly defined.
docs/api/v11/composition.md
Outdated
| This is useful when translation output is used in `v-html` and the translation resource contains html markup (e.g. around a user provided value). | ||
| This usage pattern mostly occurs when passing precomputed text strings into UI components. | ||
| The escape process involves replacing the following symbols with their respective HTML character entities: `<`, `>`, `"`, `'`. | ||
|
|
||
| Setting `escapeParameter` as true should not break existing functionality but provides a safeguard against a subtle type of XSS attack vectors. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add hyphenation to compound words and fix grammatical phrase.
Lines 1044-1050 contain two compound word phrasing issues:
- Line 1044: "user provided value" should be "user-provided value"
- Line 1049: "html markup" should be "html markup" (acceptable) but check for consistency
-This is useful when translation output is used in `v-html` and the translation resource contains html markup (e.g. around a user provided value).
+This is useful when translation output is used in `v-html` and the translation resource contains html markup (e.g. around a user-provided value).🧰 Tools
🪛 LanguageTool
[grammar] ~1044-~1044: Use a hyphen to join words.
Context: ...contains html markup (e.g. around a user provided value). This usage pattern mos...
(QB_NEW_EN_HYPHEN)
🪛 markdownlint-cli2 (0.18.1)
1045-1045: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1049-1049: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
🤖 Prompt for AI Agents
In docs/api/v11/composition.md around lines 1044 to 1050, change the phrase
"user provided value" to the hyphenated "user-provided value" and standardize
"html" to "HTML" for consistency (e.g., "HTML markup"); keep the rest of the
sentence and punctuation unchanged.
docs/api/v11/general.md
Outdated
| This property is proxy-like property for `Composer#availableLocales`. About details, see the | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Complete incomplete documentation sentences.
Lines 197, 210, and 223 all end with incomplete phrases "About details, see the" with no target reference. Add proper cross-references or reword:
-This property is proxy-like property for `Composer#availableLocales`. About details, see the
+This property is a proxy-like property for `Composer#availableLocales`. See [Composer.availableLocales](composition#availablelocales) for details.-This property is proxy-like property for `Composer#fallbackLocale`. About details, see the
+This property is a proxy-like property for `Composer#fallbackLocale`. See [Composer.fallbackLocale](composition#fallbacklocale) for details.-This property is proxy-like property for `Composer#locale`. About details, see the
+This property is a proxy-like property for `Composer#locale`. See [Composer.locale](composition#locale) for details.Also applies to: 210-211, 223-224
🤖 Prompt for AI Agents
In docs/api/v11/general.md around lines 197-198, 210-211 and 223-224 the
sentences end with "About details, see the" without a target; update each to
complete the sentence by either (a) adding a proper cross-reference to the
appropriate section or symbol (for example "About details, see
Composer#availableLocales" or use the markdown link to the relevant API
section), or (b) rewording to a self-contained sentence such as "For more
details, see Composer#availableLocales." Ensure the inserted reference matches
the repo's linking style and verify anchors resolve correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (2)
docs/api/v11/general.md (2)
184-184: Complete incomplete property descriptions.These lines still contain incomplete documentation fragments that were flagged in previous reviews but remain unresolved:
Line 184: "that is provided interface" — awkward phrasing. Reword to: "This interface is a proxy to the global composer that is injected into each component via app.config.globalProperties."
Lines 197, 210, 223: All end with dangling "About details, see the" with no target reference. Add complete cross-references:
- Line 197 (availableLocales): Add link to
Composer#availableLocales- Line 210 (fallbackLocale): Add link to
Composer#fallbackLocale- Line 223 (locale): Add link to
Composer#localeExample fix for line 197:
-This property is proxy-like property for `Composer#availableLocales`. About details, see the +This property is a proxy-like property for `Composer#availableLocales`. See [Composer.availableLocales](composition#availablelocales) for details.Also applies to: 197-197, 210-210, 223-223
288-291: Use heading markup and complete the interface description.Two issues here:
- Line 288: Use
###heading instead of**Details**for consistency (MD036).- Line 290: Complete the incomplete sentence "Specific options for". Add context explaining what these options control:
-**Details** +### Details -Specific options for +I18nAdditionalOptions provides additional Vue I18n plugin configuration options that control global behavior, such as component injection and feature flags.
🧹 Nitpick comments (2)
docs/api/v11/general.md (2)
33-35: Use heading markup for "Examples" section.Line 33 uses bold emphasis (
**Examples**) instead of a Markdown heading. Per markdownlint (MD036), section headers should use heading syntax for consistency:-**Examples** +### Examples
309-309: Clarify default value formatting.Lines 309 and 360 contain unusual formatting (
true`` ) for default values. These should either be:
- Properly formatted as: "Default:
true"- Or integrated into the Details section above
Currently they appear as orphaned text. Verify this is the intended output from TypeDoc and reformat for clarity:
If you want to install manually in the `import` syntax, you can set it to `false` to install when needed. - `true` +**Default:** `true`Also applies to: 360-360
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
benchmark/complex-jit-aot.mjs(1 hunks)benchmark/complex-jit.mjs(1 hunks)benchmark/complex.mjs(1 hunks)benchmark/simple-jit-aot.mjs(1 hunks)benchmark/simple-jit.mjs(1 hunks)benchmark/simple.mjs(1 hunks)docs/api/v11/general.md(25 hunks)packages/core-base/src/runtime.ts(2 hunks)
✅ Files skipped from review due to trivial changes (1)
- benchmark/simple.mjs
🚧 Files skipped from review as they are similar to previous changes (5)
- benchmark/simple-jit.mjs
- benchmark/simple-jit-aot.mjs
- packages/core-base/src/runtime.ts
- benchmark/complex.mjs
- benchmark/complex-jit-aot.mjs
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
docs/api/v11/general.md
33-33: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
288-288: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (10)
- GitHub Check: E2E test for rolldown build (macos-latest, 22)
- GitHub Check: E2E test for rolldown build (macos-latest, 24)
- GitHub Check: Unit test (windows-latest, 20)
- GitHub Check: Unit test (windows-latest, 22)
- GitHub Check: Build (ubuntu-latest, 24)
- GitHub Check: Build (windows-latest, 24)
- GitHub Check: Build (macos-latest, 24)
- GitHub Check: release
- GitHub Check: release
- GitHub Check: Cloudflare Pages
🔇 Additional comments (2)
benchmark/complex-jit.mjs (1)
9-9: I'll help you verify and rewrite this review comment. Let me start by examining the actual file and verifying the change.
<function_calls>
#!/bin/bashFirst, let's check the current state of the file and understand the context around line 9
head -n 20 benchmark/complex-jit.mjs | cat -n
</function_calls>Let me also check what the ESLint disable comment was by looking at the git diff:
<function_calls>
#!/bin/bashCheck the git diff to see what was removed
git diff HEAD~1 benchmark/complex-jit.mjs 2>/dev/null || git diff benchmark/complex-jit.mjs 2>/dev/null || echo "No git history available"
</function_calls>Now let me check if there's an ESLint configuration and verify linting:
<function_calls>
#!/bin/bashLook for ESLint configuration files
fd -e ".eslintrc*" -e "eslint.config.*" 2>/dev/null | head -20
Check package.json for lint scripts
if [ -f package.json ]; then
grep -A 5 '"lint"' package.json || echo "No lint script found"
fi
</function_calls>docs/api/v11/general.md (1)
1-1076: Documentation structure migration appears sound.The TypeDoc migration has successfully consolidated the API documentation with proper signature formatting, improved "See about" cross-references, and clearer section organization. The major issues are the unresolved incomplete descriptions and markdown linting inconsistencies noted above.
Please verify that the previously addressed issues (commit 126ef80) were not reverted and confirm whether these incomplete fragments are expected in the current TypeDoc output configuration.
Summary by CodeRabbit
New Features
Documentation
Bug Fixes
Chores
✏️ Tip: You can customize this high-level summary in your review settings.