-
Notifications
You must be signed in to change notification settings - Fork 21
feat(#693): update modules to use @nuxt/kit #697
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
base: develop
Are you sure you want to change the base?
Conversation
🦋 Changeset detectedLatest commit: 34ada4d The changes in this PR will be included in the next version bump. This PR includes changesets to release 10 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
WalkthroughThis update introduces several new Nuxt.js modules across various packages within the Druxt framework, enhancing integration with Vue.js components and improving configuration management. Key changes include the adoption of the Changes
Possibly related PRs
Poem
Recent review detailsConfiguration used: CodeRabbit UI Files selected for processing (1)
Files skipped from review as they are similar to previous changes (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #697 +/- ##
===========================================
- Coverage 96.72% 96.62% -0.11%
===========================================
Files 91 97 +6
Lines 2291 2428 +137
Branches 511 522 +11
===========================================
+ Hits 2216 2346 +130
- Misses 60 67 +7
Partials 15 15 ☔ View full report in Codecov by Sentry. |
415f8da to
2a0fb42
Compare
aeb593b to
b06a2e2
Compare
6993208 to
f727731
Compare
f727731 to
d8b8ca6
Compare
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: 9
Outside diff range, codebase verification and nitpick comments (13)
packages/menu/test/index.test.js (1)
1-5: LGTM!The test case is correctly implemented and follows the best practices.
Consider removing the async keyword from the test case for clarity, as there are no async operations being performed:
-test('Default function', async () => { +test('Default function', () => { expect(() => Default()).toThrow("DruxtMenu Nuxt module must be installed as 'druxt-menu/nuxt'") })packages/router/test/index.test.js (1)
1-5: LGTM! The test case is well-structured and tests the error scenario.The test case follows the AAA (Arrange, Act, Assert) pattern and tests the error scenario, which is a good practice. The error message is clear and informative. The test case is self-contained and doesn't depend on any external state.
Consider removing the
asynckeyword from the test case as there are no asynchronous operations in the test case.-test('Default function', async () => { +test('Default function', () => { expect(() => Default()).toThrow("DruxtRouter Nuxt module must be installed as 'druxt-router/nuxt'") })packages/breadcrumb/src/index.js (1)
15-17: Enforce proper module installation.The change to the default export is necessary to enforce proper module installation due to breaking changes in the
@nuxt/kitupdate. The error message provides clear instructions on how to install the module correctly.Consider adding documentation comments to clarify the module's intended use, as the previous documentation comments have been removed. For example:
/** * The DruxtBreadcrumb Nuxt module. * * This module provides breadcrumb functionality for Druxt. * It must be installed as 'druxt-breadcrumb/nuxt'. * * @throws {Error} If the module is not installed correctly. */ export default () => { throw new Error("DruxtBreadcrumb Nuxt module must be installed as 'druxt-breadcrumb/nuxt'") }packages/blocks/test/nuxt/index.test.js (1)
20-25: Improve the test case by adding assertions and covering more scenarios.The current test case for the Nuxt module setup can be improved in the following ways:
Add assertions to verify the behavior of the
setupfunction. For example, you can assert that the expected hooks are called with the correct arguments.Cover different scenarios and edge cases to ensure the robustness of the module. For example, you can test scenarios where the
druxtoptions are not provided or have different values.Provide a more complete representation of the Nuxt module in the mocked
nuxtMockobject. For example, you can include other relevant properties and methods that are used by the module.Here's an example of how you can improve the test case:
test('Nuxt module', async () => { const mockHook = jest.fn() nuxtMock.hook.mockImplementation((hook, fn) => { if (hook === 'components:dirs') { fn([]) } mockHook(hook) }) nuxtMock.options = { druxt: { // Add relevant options for testing } } await DruxtBlocksNuxtModule.setup({}, nuxtMock) expect(mockHook).toHaveBeenCalledWith('components:dirs') // Add more assertions for other hooks and behaviors })In this example:
- The
mockHookfunction is used to track the calls to thehookfunction and execute the callback with the expected arguments.- The
druxtoptions are populated with relevant values for testing.- Assertions are added to verify that the expected hooks are called.
By improving the test case, you can ensure that the Nuxt module is properly tested and catch potential issues early in the development process.
packages/breadcrumb/test/nuxt/index.test.js (1)
19-25: LGTM, but consider adding assertions to the test.The code changes are approved, but the test is not making any assertions. Consider adding some assertions to ensure that the
setupmethod is working as expected.packages/views/src/index.js (1)
30-32: Update or remove references to the old moduleDruxtViewsNuxtModule.The codebase still contains references to the old module
DruxtViewsNuxtModule, which may lead to inconsistencies. Ensure that all references are updated to use the new module export or confirm if the old module is needed for backward compatibility testing.
packages/views/test/nuxt/index.test.js: Contains imports and usage ofDruxtViewsNuxtModule.packages/views/src/nuxt/index.js: Defines and exportsDruxtViewsNuxtModule.Analysis chain
Breaking change: Explicit error handling for incorrect module installation.
The change aligns with the PR objective of integrating the core Druxt modules with the
@nuxt/kitpackage and introduces explicit error handling for incorrect module installation.Verify the impact of this breaking change on the codebase by running the following script:
Update the documentation and release notes to communicate this breaking change and provide instructions for the correct module installation.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: # - Verify if the module is imported correctly as 'druxt-views/nuxt' in the codebase. # - Check if there are any imports of the old 'DruxtViewsNuxtModule'. # Test 1: Search for correct module import. Expect: At least one occurrence. rg --type js -g '!*node_modules*' -g '!*dist*' $'\'druxt-views/nuxt\'' # Test 2: Search for old module import. Expect: No occurrences. rg --type js -g '!*node_modules*' -g '!*dist*' $'DruxtViewsNuxtModule'Length of output: 775
packages/site/test/nuxt/index.test.js (1)
1-39: LGTM! Consider adding more test cases.The code changes are approved. The file structure and the test setup look good.
The current test is only checking if the correct number of modules are installed. Consider adding more test cases to check the functionality of the installed modules.
packages/site/README.md (1)
28-28: Inconsistent module path change detected.The module path change from
'druxt-site'to'druxt-site/nuxt'has not been fully applied across the codebase and documentation. The old module path is still present in several files, which could lead to confusion or errors. Please update the following files to ensure consistency:
JavaScript files:
packages/site/templates/druxt-site.stories.jspackages/site/src/index.jspackages/site/src/nuxt/index.jspackages/site/src/mixins/site.jspackages/site/src/mixins/index.jspackages/site/src/components/DruxtSite.vueexamples/_deprecated/router-modes/nuxt.config.jsMarkdown documentation files:
packages/site/CHANGELOG.mddocs/nuxt/content/modules/site/README.mddocs/nuxt/content/modules/site/getting-started.mddocs/nuxt/content/guide/getting-started.mdAnalysis chain
Verify the impact of the module path change.
The module path has been updated from
'druxt-site'to'druxt-site/nuxt'. This change is consistent with the PR summary and the list of alterations.Please verify the impact of this change on the codebase and documentation by running the following script:
If the tests fail, please update the codebase and documentation accordingly.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the impact of the module path change on the codebase and documentation. # Test 1: Search for the old module path in the codebase. # Expect: No occurrences of the old module path. rg --type js $'\'druxt-site\'' # Test 2: Search for the new module path in the codebase. # Expect: Occurrences of the new module path in the relevant files. rg --type js $'\'druxt-site/nuxt\'' # Test 3: Search for the old module path in the documentation. # Expect: No occurrences of the old module path. rg --type md $'\'druxt-site\'' # Test 4: Search for the new module path in the documentation. # Expect: Occurrences of the new module path in the relevant files. rg --type md $'\'druxt-site/nuxt\''Length of output: 1328
packages/breadcrumb/README.md (1)
26-26: Inconsistency in module path documentation.The module path has been updated to
'druxt-breadcrumb/nuxt'inpackages/breadcrumb/README.md, but the old path'druxt-breadcrumb'is still present in other documentation files. Please update the following locations to ensure consistency:
docs/nuxt/content/modules/breadcrumb/README.md: Update the module path to'druxt-breadcrumb/nuxt'.The presence of the old path in
CHANGELOG.mdmay be acceptable if it refers to historical changes, but ensure that all current documentation reflects the new module path for accurate user guidance.Analysis chain
Update to the module path in the configuration example.
The module path has been changed from
'druxt-breadcrumb'to'druxt-breadcrumb/nuxt'. This change suggests a more specific import path for the module, likely indicating that the module has been restructured or that the intended usage now requires this more explicit reference.Please note that this change may affect how users configure the module in their
nuxt.config.js, potentially impacting the module's integration within Nuxt.js applications.Verify if the documentation is up-to-date with this change. Run the following script to check for any inconsistencies:
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the documentation is up-to-date with the module path change. # Test 1: Search for the old module path. Expect: No occurrences. rg --type markdown $'\'druxt-breadcrumb\'' # Test 2: Search for the new module path. Expect: Only occurrences in relevant sections. rg --type markdown $'\'druxt-breadcrumb/nuxt\''Length of output: 338
packages/menu/src/nuxt/index.js (1)
29-79: LGTM!The code changes are approved.
Please remember to uncomment the Nuxt Storybook integration (lines 75-77) once the compatibility issues between
@nuxt/kitand@nuxt/storybookare resolved.packages/schema/src/nuxt/index.js (1)
41-99: Remove theasynckeyword from thesetupfunction.The
setupfunction is marked asasync, but it doesn't useawaitanywhere. This can be misleading.Apply this diff to remove the
asynckeyword:- async setup(moduleOptions, nuxt) { + setup(moduleOptions, nuxt) {packages/router/src/nuxt/index.js (1)
86-86: Suggestion: Optional chaining.The static analysis tool suggests changing the code at line 86 to use optional chaining. However, the current code using the logical OR operator to check for the existence of the
hrefproperty and provide a fallback empty object is valid and does not introduce any errors or issues.Changing to optional chaining is a matter of personal preference and coding style. The current code is acceptable, and the suggestion can be considered a nitpick.
Tools
Biome
[error] 86-86: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
packages/druxt/test/nuxt/index.test.js (1)
137-137: Consider using an undefined assignment instead of thedeleteoperator.The static analysis tool has flagged the use of the
deleteoperator as a potential performance issue. While it may not have a significant impact in a test environment, it is still a good practice to follow the recommendation.Apply this diff to use an undefined assignment instead of the
deleteoperator:-delete nuxtMock.options.proxy +nuxtMock.options.proxy = undefinedTools
Biome
[error] 137-137: Avoid the delete operator which can impact performance.
Unsafe fix: Use an undefined assignment instead.
(lint/performance/noDelete)
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files ignored due to path filters (3)
examples/druxt-site/yarn.lockis excluded by!**/yarn.lock,!**/*.lockpackages/site/test/nuxt/__snapshots__/storybook.test.js.snapis excluded by!**/*.snapyarn.lockis excluded by!**/yarn.lock,!**/*.lock
Files selected for processing (80)
- .changeset/forty-jeans-attack.md (1 hunks)
- .circleci/config.yml (2 hunks)
- .nvmrc (1 hunks)
- docs/nuxt/.nvmrc (1 hunks)
- examples/druxt-site/nuxt.config.js (1 hunks)
- examples/druxt-site/package.json (1 hunks)
- package.json (2 hunks)
- packages/blocks/README.md (1 hunks)
- packages/blocks/package.json (1 hunks)
- packages/blocks/src/components/DruxtBlock.vue (4 hunks)
- packages/blocks/src/components/DruxtBlockRegion.vue (3 hunks)
- packages/blocks/src/index.js (2 hunks)
- packages/blocks/src/nuxt/index.js (1 hunks)
- packages/blocks/src/nuxt/storybook.js (2 hunks)
- packages/blocks/test/index.test.js (1 hunks)
- packages/blocks/test/nuxt/index.test.js (1 hunks)
- packages/blocks/test/nuxt/storybook.test.js (1 hunks)
- packages/breadcrumb/README.md (1 hunks)
- packages/breadcrumb/package.json (1 hunks)
- packages/breadcrumb/src/components/DruxtBreadcrumb.vue (2 hunks)
- packages/breadcrumb/src/index.js (2 hunks)
- packages/breadcrumb/src/nuxt/index.js (1 hunks)
- packages/breadcrumb/test/index.test.js (1 hunks)
- packages/breadcrumb/test/nuxt/index.test.js (1 hunks)
- packages/druxt/package.json (2 hunks)
- packages/druxt/src/components/Druxt.vue (1 hunks)
- packages/druxt/src/components/DruxtDevelTemplate.vue (2 hunks)
- packages/druxt/src/components/DruxtModule.vue (12 hunks)
- packages/druxt/src/index.js (3 hunks)
- packages/druxt/src/nuxt/index.js (2 hunks)
- packages/druxt/test/index.test.js (1 hunks)
- packages/druxt/test/nuxt/index.test.js (4 hunks)
- packages/entity/README.md (1 hunks)
- packages/entity/package.json (1 hunks)
- packages/entity/src/index.js (2 hunks)
- packages/entity/src/nuxt/index.js (1 hunks)
- packages/entity/src/nuxt/storybook.js (2 hunks)
- packages/entity/test/index.test.js (1 hunks)
- packages/entity/test/nuxt/index.test.js (1 hunks)
- packages/entity/test/nuxt/storybook.test.js (1 hunks)
- packages/menu/README.md (1 hunks)
- packages/menu/package.json (1 hunks)
- packages/menu/src/components/DruxtMenu.vue (1 hunks)
- packages/menu/src/index.js (3 hunks)
- packages/menu/src/nuxt/index.js (1 hunks)
- packages/menu/src/nuxt/storybook.js (2 hunks)
- packages/menu/test/index.test.js (1 hunks)
- packages/menu/test/nuxt/index.test.js (1 hunks)
- packages/menu/test/nuxt/storybook.test.js (1 hunks)
- packages/router/package.json (1 hunks)
- packages/router/src/components/DruxtRouter.vue (3 hunks)
- packages/router/src/index.js (1 hunks)
- packages/router/src/nuxt/index.js (2 hunks)
- packages/router/src/router.js (1 hunks)
- packages/router/test/index.test.js (1 hunks)
- packages/router/test/nuxt/index.test.js (1 hunks)
- packages/schema/README.md (1 hunks)
- packages/schema/package.json (1 hunks)
- packages/schema/src/index.js (2 hunks)
- packages/schema/src/nuxt/index.js (1 hunks)
- packages/schema/test/index.test.js (1 hunks)
- packages/schema/test/nuxt/index.test.js (1 hunks)
- packages/site/README.md (1 hunks)
- packages/site/package.json (1 hunks)
- packages/site/src/components/DruxtSite.vue (3 hunks)
- packages/site/src/index.js (2 hunks)
- packages/site/src/nuxt/index.js (1 hunks)
- packages/site/src/nuxt/storybook.js (2 hunks)
- packages/site/test/index.test.js (1 hunks)
- packages/site/test/nuxt/index.test.js (1 hunks)
- packages/site/test/nuxt/storybook.test.js (1 hunks)
- packages/views/README.md (1 hunks)
- packages/views/package.json (1 hunks)
- packages/views/src/components/DruxtView.vue (7 hunks)
- packages/views/src/index.js (2 hunks)
- packages/views/src/nuxt/index.js (2 hunks)
- packages/views/src/nuxt/storybook.js (1 hunks)
- packages/views/test/index.test.js (1 hunks)
- packages/views/test/nuxt/index.test.js (1 hunks)
- packages/views/test/nuxt/storybook.test.js (1 hunks)
Files skipped from review due to trivial changes (5)
- packages/entity/README.md
- packages/entity/src/nuxt/storybook.js
- packages/menu/src/nuxt/storybook.js
- packages/schema/README.md
- packages/views/README.md
Additional context used
GitHub Check: codecov/patch
packages/blocks/src/nuxt/index.js
[warning] 63-63: packages/blocks/src/nuxt/index.js#L63
Added line #L63 was not covered by testspackages/entity/src/nuxt/index.js
[warning] 68-68: packages/entity/src/nuxt/index.js#L68
Added line #L68 was not covered by testspackages/router/src/nuxt/index.js
[warning] 80-81: packages/router/src/nuxt/index.js#L80-L81
Added lines #L80 - L81 were not covered by tests
[warning] 89-89: packages/router/src/nuxt/index.js#L89
Added line #L89 was not covered by testspackages/druxt/src/nuxt/index.js
[warning] 143-143: packages/druxt/src/nuxt/index.js#L143
Added line #L143 was not covered by tests
[warning] 153-154: packages/druxt/src/nuxt/index.js#L153-L154
Added lines #L153 - L154 were not covered by tests
[warning] 158-159: packages/druxt/src/nuxt/index.js#L158-L159
Added lines #L158 - L159 were not covered by tests
[warning] 163-163: packages/druxt/src/nuxt/index.js#L163
Added line #L163 was not covered by tests
Biome
packages/router/src/nuxt/index.js
[error] 66-66: The assignment should not be in an expression.
The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.(lint/suspicious/noAssignInExpressions)
[error] 86-86: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
packages/druxt/test/nuxt/index.test.js
[error] 137-137: Avoid the delete operator which can impact performance.
Unsafe fix: Use an undefined assignment instead.
(lint/performance/noDelete)
packages/druxt/src/nuxt/index.js
[error] 79-79: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 84-84: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
Additional comments not posted (173)
.nvmrc (1)
1-1: Verify the impact of upgrading the Node.js version on the project's dependencies.Upgrading the Node.js version can introduce breaking changes and compatibility issues with dependencies.
Run the following script to verify the compatibility of the project's dependencies with the new Node.js version:
Please address any issues identified by the script and ensure the compatibility of the project's dependencies with the new Node.js version.
packages/druxt/test/index.test.js (1)
1-5: LGTM!The test case is correctly implemented and follows the best practices for writing unit tests in Jest. It ensures that the module is correctly installed and used, and the error message is clear and informative.
packages/site/test/index.test.js (1)
1-5: LGTM!The test case is correctly implemented and is ensuring that the default function throws an error when the module is not installed correctly.
packages/views/test/index.test.js (1)
1-5: LGTM!The test case is well-written and follows the best practices for writing unit tests in Jest. It tests the error scenario, which is a good practice to ensure the module is used correctly. The test case is self-contained and has a clear and concise description that accurately describes the expected behavior.
packages/blocks/test/index.test.js (1)
1-5: LGTM!The test case is correctly written and tests the expected behavior of the default export.
packages/entity/test/index.test.js (1)
1-5: LGTM!The test case is correctly written and ensures that the module is not directly invoked and must be installed as a Nuxt module. The error message is clear and informative.
packages/schema/test/index.test.js (1)
3-5: LGTM!The test case is correctly implemented and follows the best practices for writing unit tests in Jest. It tests the error scenario, which is a good practice to ensure the module is used correctly. The test case is small and focused, which makes it easy to understand and maintain.
packages/breadcrumb/test/index.test.js (1)
1-5: LGTM!The test case is correctly implemented and tests the expected behavior of the default export.
Additional insights:
- The test case expects the default export to throw an error with a specific message.
- The error message in the test case indicates that the module must be installed as 'druxt-breadcrumb/nuxt'.
packages/views/test/nuxt/storybook.test.js (1)
5-7: LGTM!The mock for the
@nuxt/kitmodule is correctly implemented and follows the Jest mocking syntax. It enhances the test setup by improving isolation and control over the test scenarios.packages/blocks/test/nuxt/storybook.test.js (2)
1-1: LGTM!The import path change for the
DruxtBlocksStorybookcomponent is consistent with the file's location and the component's new location.
5-7: LGTM!The mocking of the
@nuxt/kitmodule and theaddTemplatefunction is a valid approach to control the testing environment and isolate the component under test. The mocked implementation is sufficient for the purpose of this test file.packages/entity/test/nuxt/storybook.test.js (2)
1-1: LGTM!The import path for
DruxtEntityStorybookhas been correctly updated to match the new location of thestorybook.jsfile.
5-7: LGTM!The mocking of the
@nuxt/kitmodule has been correctly implemented, allowing for more controlled testing of components that depend on@nuxt/kit.packages/menu/test/nuxt/storybook.test.js (2)
1-1: LGTM!The updated import path for
DruxtMenuStorybooklooks good.
5-7: LGTM!Mocking the
@nuxt/kitmodule with theaddTemplatefunction is a good enhancement to the test setup. It allows for more controlled testing of components that depend on the@nuxt/kitfunctionalities.packages/entity/src/index.js (1)
12-19: LGTM!The code changes are approved for the following reasons:
- The error message clearly communicates the issue and provides the correct way to install the module.
- This change is necessary to handle the breaking changes introduced by
@nuxt/kit.- The comments provide context for this change.
packages/site/test/nuxt/storybook.test.js (2)
2-2: LGTM!The updated import path for the
DruxtEntityStorybookcomponent is consistent with the directory restructuring mentioned in the AI-generated summary.
6-8: LGTM!The mocking of the
@nuxt/kitmodule with theaddTemplatefunction is consistent with the AI-generated summary and allows for more controlled testing of components that depend on the@nuxt/kitfunctionalities.packages/breadcrumb/test/nuxt/index.test.js (2)
1-2: LGTM!The code changes are approved.
3-17: LGTM!The code changes are approved.
packages/entity/test/nuxt/index.test.js (3)
1-2: LGTM!The code changes are approved.
3-4: LGTM!The code changes are approved.
5-19: LGTM!The code changes are approved.
.changeset/forty-jeans-attack.md (1)
1-26: LGTM!The changeset file is well-structured and follows the changeset format. The file provides a clear description of the changes made in the PR and the semver bump type for each package.
examples/druxt-site/package.json (3)
15-15: Verify the impact of the Nuxt version change on the project.The version of the
nuxtdependency has been changed from "latest" to "2". This change may affect compatibility with other packages that rely on a specific version of Nuxt.Run the following script to verify the impact of the version change:
19-19: Verify the impact of the @nuxtjs/storybook version change on the project.The version of the
@nuxtjs/storybookdependency has been changed from "latest" to "4". This change may include breaking changes or new features compared to the previous version.Run the following script to verify the impact of the version change:
22-25: Verify the impact of the newresolutionssection on the project.The newly added
resolutionssection specifies exact versions forvue,vue-server-renderer, andvue-template-compiler, all set to "^2.7". This addition ensures that these packages will resolve to compatible versions, potentially addressing issues related to version mismatches in the dependency tree.Run the following script to verify the impact of the new
resolutionssection:packages/views/test/nuxt/index.test.js (5)
1-1: LGTM!The simplified import statement for
DruxtViewsNuxtModulealigns with the updated module structure and functionality.
5-9: LGTM!The updated mocking strategy for
@nuxt/kitaligns with the module's functionality and focuses on the required functions for the test case.
11-11: LGTM!The import statement for
addPluginTemplateandinstallModulealigns with the updated mocking strategy and their usage in the test case.
13-21: LGTM!The
nuxtMockobject provides a streamlined mock structure for the test case, and the mockedhookmethod ensures that the test can simulate the required Nuxt hooks and their arguments.
25-27: LGTM!The updated test case, which calls
DruxtViewsNuxtModule.setupand checks the invocation ofinstallModuleandaddPluginTemplate, aligns with the changes in the module's structure and functionality.packages/site/src/index.js (1)
27-33: Breaking change: Default export updated to throw an error for incorrect module installation.The default export has been updated to throw an error if the module is not installed correctly. This change is in response to updates in the Nuxt.js framework and enforces correct usage of the module.
Key points:
- The error message provides clear instructions on how to correctly install the module as
'druxt-site/nuxt'.- The change alters the control flow by ensuring that any attempt to use the module without the correct setup will result in an immediate error, thereby preventing further execution and potential misconfiguration.
- The comments provide additional context about the change being a part of the
@nuxt/kitupdate and a breaking change.This is a good change that improves the developer experience by providing clear feedback on incorrect usage and preventing potential issues.
packages/menu/src/index.js (1)
32-39: LGTM!The code changes are approved for the following reasons:
- The default export has been modified to throw an error if the module is not installed correctly, which enhances error handling.
- The error message provides clear instructions on how to install the module correctly.
- The documentation comments provide helpful context on the rationale for this change.
packages/druxt/src/components/DruxtDevelTemplate.vue (4)
23-23: LGTM!The change to use optional chaining when accessing
$parent.component.optionsimproves the safety and readability of the code by preventing potential runtime errors if$parent.componentis undefined.
25-25: LGTM!The change to use optional chaining in the fallback logic for
moduleensures that if$parent.$parentis not defined, it will not throw an error. This improves the safety and readability of the code.
26-26: LGTM!The change to use optional chaining when accessing
module.component.optionsin theoptionscomputed property provides a more robust way to handle cases wheremodulemight not have the expected structure. This improves the safety and readability of the code.
45-45: LGTM!The change to use optional chaining when accessing
this.module.$options.druxt.templatein the spread operator improves the resilience of the code against undefined values. This improves the safety and readability of the code.packages/blocks/src/index.js (1)
32-39: Breaking change: Enforce correct module installation.The new default export is a breaking change that enforces correct module installation by throwing an error if the module is not installed as
'druxt-blocks/nuxt'. This change is attributed to updates in the@nuxt/kitpackage.The error message provides clear instructions for correct module installation, and the JSDoc comment provides sufficient context for this change.
Verify the impact of this change on the codebase by running the following script:
packages/druxt/src/index.js (1)
35-41: LGTM!The change to the default export is a good improvement. It provides immediate feedback to the user if the module is not installed correctly and the error message provides clear instructions on how to correctly install the module.
The associated documentation comments provide helpful context for the change.
packages/schema/package.json (3)
33-34: LGTM!The new entry for
./nuxtin theexportsfield is approved.
40-40: LGTM!The addition of the
nuxtdirectory to thefilesarray is approved.
44-44: LGTM!The addition of the
@nuxt/kitdependency is approved.packages/breadcrumb/package.json (4)
36-37: LGTM!The new entry in the
exportsfield enhances the module's functionality by allowing it to be utilized within a Nuxt.js environment.
43-43: LGTM!Adding the
nuxtdirectory to thefilesarray ensures that the new Nuxt integration is packaged correctly when the module is distributed.
47-47: LGTM!The
@nuxt/kitdependency has been introduced with a version specification of^3.12.2, which suggests that the module now relies on this package for its integration with Nuxt.js.
49-49: LGTM!The version of
druxt-blockshas been incremented from^0.17.1to^0.17.2, indicating a minor update that may include bug fixes or new features.packages/entity/package.json (4)
38-38: LGTM!The code change is approved.
39-39: LGTM!The code change is approved.
45-45: LGTM!The code change is approved.
49-49: LGTM!The code change is approved.
packages/blocks/package.json (3)
36-37: LGTM!The code changes are approved. The addition of the
"nuxt/*"path under the"exports"section enhances the package's modularity by explicitly defining the export of Nuxt components alongside existing component exports.
43-43: LGTM!The code changes are approved. The addition of
"nuxt"to the"files"array is consistent with the addition of the"nuxt/*"path under the"exports"section and ensures that the"nuxt"directory is included in the package's distribution.
47-47: LGTM!The code changes are approved. The addition of the
"@nuxt/kit"dependency with a specified version reflects an integration with Nuxt.js tooling and is consistent with the other changes related to Nuxt.js integration.packages/menu/package.json (3)
36-37: LGTM!The new entries in the
exportsfield enhance the module's capabilities and clarify its structure for users.
43-43: LGTM!The addition of
"nuxt"to thefilesarray is consistent with the new entry for"./nuxt"in theexportsfield.
47-47: Verify the usage of@nuxt/kitin the codebase.The addition of
"@nuxt/kit"as a dependency suggests an integration with Nuxt.js features or utilities. Please ensure that the package is being used correctly in the codebase.Run the following script to verify the usage of
@nuxt/kit:Verification successful
The usage of
@nuxt/kitis verified and consistent across the codebase.The
@nuxt/kitpackage is actively used in various parts of the codebase, including both implementation and test files. The functions imported from this package align with typical Nuxt.js usage patterns, confirming its appropriate integration.
- Files where
@nuxt/kitis used include:
packages/menu/src/nuxt/index.jspackages/menu/src/nuxt/storybook.jspackages/menu/test/nuxt/index.test.js- And several others across different packages.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of `@nuxt/kit` in the codebase. # Test: Search for the import statements of `@nuxt/kit`. Expect: At least one occurrence. rg --type js $'from \'@nuxt/kit\''Length of output: 2040
packages/menu/test/nuxt/index.test.js (1)
23-44: LGTM!The test suite is well-structured and covers the important aspects of the Nuxt module. The mocks are set up correctly and the test cases are clear and concise.
packages/views/package.json (3)
35-36: LGTM!The code changes are approved. The new entry for the
./nuxtpath, linking it to./nuxt/index.js, indicates an enhancement in the package's structure to include Nuxt.js support.
42-42: LGTM!The code changes are approved. Adding
"nuxt"to thefilesarray suggests that thenuxtdirectory will now be part of the package distribution.
46-46: LGTM!The code changes are approved. Adding a new dependency on
@nuxt/kitwith a specified version indicates that the package now relies on this library, likely for improved integration with Nuxt.js.packages/schema/src/index.js (1)
51-53: LGTM!The code changes are approved for the following reasons:
- The error-throwing function serves as a safeguard to ensure that the module is installed correctly.
- The comments provide sufficient context about the reason for the change, mentioning that it was added due to breaking changes in the @nuxt/kit update.
- There are no apparent issues or inconsistencies in the code segment.
packages/site/package.json (4)
36-37: LGTM!The code changes are approved.
37-37: LGTM!The code changes are approved. The new export for the Nuxt module enhances the module's usability and integration with Nuxt.js applications.
43-43: LGTM!The code changes are approved. Adding
"nuxt"to the"files"array ensures that the Nuxt-related files are part of the package distribution, facilitating easier access for consumers of the package.
47-47: LGTM!The code changes are approved.
- The addition of
"@nuxt/kit"as a new dependency likely provides essential tools or functionalities for working with Nuxt.js, enhancing the overall capabilities of the package.- The version update of
"druxt-blocks"from"^0.17.1"to"^0.17.2"indicates a minor update that may include bug fixes or improvements.Also applies to: 50-50
packages/site/src/nuxt/storybook.js (2)
1-1: LGTM!The import statement change is approved. Importing
addTemplatefrom@nuxt/kitpackage directly may improve clarity and maintainability.
1-1: LGTM!The removal of
addTemplatedestructuring fromthisis approved. It is consistent with the change to importaddTemplatedirectly from@nuxt/kitpackage and makes the control flow more explicit.packages/schema/test/nuxt/index.test.js (2)
32-44: LGTM!The "Default" test case is correctly implemented and tests the expected behavior of the Nuxt module.
46-52: LGTM!The "No schemas" test case is correctly implemented and tests the expected behavior of the Nuxt module when no schemas are available.
packages/router/src/index.js (1)
66-68: LGTM!The new default export function serves as a helpful safeguard against incorrect module installation. It provides a clear error message to guide users in installing the DruxtRouter Nuxt module correctly.
This change aligns with the goal of improving the user experience by providing informative feedback on misconfigurations. It enhances the robustness of the module without introducing any apparent issues or edge cases.
packages/druxt/package.json (3)
32-32: LGTM!The code change is approved.
41-41: LGTM!The code change is approved.
45-45: LGTM!The code change is approved.
packages/router/test/nuxt/index.test.js (5)
1-1: LGTM!The import path change for
DruxtRouterNuxtModuleis approved.
3-9: LGTM!The changes to the mock functions for the
@nuxt/kitmodule are approved.
11-11: LGTM!The import statement for the mock functions is approved.
13-21: LGTM!The
nuxtMockobject is approved.
23-54: LGTM!The changes to the test suite are approved. The updates align with the new module structure and mocking strategy.
packages/breadcrumb/src/nuxt/index.js (4)
1-2: LGTM!The code changes are approved.
4-24: LGTM!The code changes are approved.
25-53: LGTM!The code changes are approved.
67-67: LGTM!The code changes are approved.
packages/blocks/src/nuxt/index.js (4)
27-35: Module definition and setup look good!The module is correctly defined using
defineNuxtModulefrom@nuxt/kit, with proper meta and default options specified.
45-53: Handling of module options and defaults is properly implemented.The setup function correctly merges the module options with the Nuxt.js config options under the
druxtkey, providing flexibility in module configuration.
59-68: Registration of components is properly implemented. Storybook integration is temporarily disabled.The module correctly registers component directories using the
components:dirshook.The storybook integration is set up using the
storybook:confighook, but it's currently disabled due to compatibility issues with@nuxt/kitand@nuxt/storybook. This is understandable given the circumstances.Tools
GitHub Check: codecov/patch
[warning] 63-63: packages/blocks/src/nuxt/index.js#L63
Added line #L63 was not covered by tests
63-63: Lack of test coverage for line 63 is not a critical issue.The static analysis hint indicates that line 63, which is the closing brace for the
storybook:confighook callback function, is not covered by tests.However, this is likely a false positive reported by the tool, as the lack of test coverage for the closing brace is not a critical issue in this context.
Tools
GitHub Check: codecov/patch
[warning] 63-63: packages/blocks/src/nuxt/index.js#L63
Added line #L63 was not covered by testspackages/views/src/nuxt/index.js (4)
27-34: LGTM!The code changes are approved. Using
defineNuxtModuleenhances the module's integration with Nuxt's module system. Themetaanddefaultsproperties provide module metadata and default options, which improves the module's configuration and setup.
36-45: LGTM!The code changes are approved. Encapsulating the setup logic within an async
setupfunction improves the clarity of the module's initialization process. Using optional chaining for handling options ensures that the code is more robust against undefined values.
48-59: LGTM!The code changes are approved. The updated path for registering component directories reflects a new path structure, moving from a relative path to a distribution folder. Using
installModulefor adding dependent modules aligns with the new module definition style.
61-66: LGTM!The code changes are approved. Using
addPluginTemplatefor adding the Vuex plugin aligns with the new module definition style.packages/menu/src/nuxt/index.js (2)
1-3: LGTM!The code changes are approved.
81-81: LGTM!The code changes are approved.
packages/entity/src/nuxt/index.js (2)
29-39: LGTM!The module options and defaults are correctly set.
41-77: LGTM!The
setupfunction is correctly implemented.Tools
GitHub Check: codecov/patch
[warning] 68-68: packages/entity/src/nuxt/index.js#L68
Added line #L68 was not covered by testspackages/views/src/nuxt/storybook.js (2)
8-8: The removal ofaddTemplatefrom the destructuring assignment is acceptable.The change does not affect the functionality of the code, as
addTemplateis still imported at the top of the file and used later in the function. The removal may have been done for consistency or readability purposes.
1-1: Verify the usage ofaddTemplatein the function.Ensure that
addTemplateis being used correctly after removing it from the destructuring assignment.Run the following script to verify the usage of
addTemplate:Also applies to: 46-50, 60-64
Verification successful
Verification Successful:
addTemplateis used correctly.The
addTemplatefunction is used appropriately in thepackages/views/src/nuxt/storybook.jsfile. Both instances of its usage are correctly structured with the necessary parameters. No issues were found with its usage after the import statement.
- Lines 46-50:
addTemplateis used withdruxt-views.stories.js.- Lines 60-64:
addTemplateis used withdruxt-views.instance.stories.js.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of `addTemplate` in the function. # Test: Search for the usage of `addTemplate`. Expect: Two occurrences in the correct locations. rg --type js -A 5 $'addTemplate\(' packages/views/src/nuxt/storybook.jsLength of output: 551
packages/blocks/src/nuxt/storybook.js (1)
12-12: Verify the import and usage ofaddTemplate.The destructuring assignment has been modified to remove
addTemplate, but the function still relies on it being available in its scope.Please verify that:
addTemplateis still being imported correctly from the@nuxt/kitmodule.- There are no unintended side effects of this change, such as
addTemplatebeing undefined or the function behaving differently.You can use the following script to search for the import statement and the usage of
addTemplate:Verification successful
Verification successful:
addTemplateis correctly imported and used.The
addTemplatefunction is still being imported from@nuxt/kitand used within thepackages/blocks/src/nuxt/storybook.jsfile. The removal from the destructuring assignment does not cause any issues. No unintended side effects were found.
addTemplateis imported correctly inpackages/blocks/src/nuxt/storybook.js.addTemplateis used multiple times within the file.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the import and usage of `addTemplate`. # Test: Search for the import statement. Expect: A single import statement from `@nuxt/kit`. rg --type js -A 1 $'import \{ addTemplate \} from \'@nuxt/kit\'' # Test: Search for the usage of `addTemplate`. Expect: Multiple occurrences within the function body. rg --type js -A 5 $'addTemplate\('Length of output: 10141
packages/site/src/nuxt/index.js (5)
1-4: LGTM!The imports are correctly used in the file.
6-23: LGTM!The JSDoc comment accurately describes the purpose of the Nuxt module, and the module is correctly defined using
defineNuxtModulewith appropriate metadata and default options.
25-80: Thesetupfunction looks good overall, but there are a few things to clarify.
The comments about preventing the "FATAL: Cannot determine nuxt version!" and "FATAL: nuxt.options._layers is not iterable" errors are unclear. Please provide more context or links to the relevant issues to help future maintainers understand the purpose of these lines.
The Storybook integration is commented out with a TODO comment indicating that
@nuxt/kitand@nuxt/storybookare not compatible. Please provide more information about this issue and the plan to address it. Consider creating a GitHub issue to track this problem if one doesn't already exist.
83-83: LGTM!The Nuxt module is correctly exported using
export default.
85-90: The JSDoc comment looks good, but please verify the referenced typedef file.The JSDoc comment correctly describes the
ModuleOptionstype, but the referenced typedef file (./typedefs/moduleOptions) is not provided in the review context. Please verify that this file exists and contains the correct type definition forModuleOptions.examples/druxt-site/nuxt.config.js (2)
8-8: LGTM!The code change is approved. Providing more verbose output during compilation can indeed assist developers in debugging.
12-12: Verify the updated module path and the application's functionality.Please ensure that:
- The updated module path
'druxt-site/nuxt'is correct.- The application still functions as expected with this change.
Run the following script to verify the module path and the application's functionality:
packages/blocks/README.md (1)
28-28: Verify the impact of the module path change and update the documentation.The module path for
druxt-blockshas been changed from'druxt-blocks'to'druxt-blocks/nuxt'in the Nuxt.js configuration example.Please verify the impact of this change on the application and ensure that the module is imported and utilized correctly with the new path.
Run the following script to verify the usage of the
druxt-blocksmodule:Also, ensure that the documentation is updated to reflect any changes in the usage or configuration of the module due to the new path.
packages/menu/README.md (1)
26-26: LGTM!The code change updates the module path for
druxt-menuto a more specific pathdruxt-menu/nuxt. This change is consistent with the PR summary and is unlikely to introduce any issues.packages/schema/src/nuxt/index.js (1)
1-4: LGTM!The code changes are approved.
packages/druxt/src/components/Druxt.vue (1)
132-132: LGTM!The introduction of optional chaining (
?.) to thethis.moduleproperty is a good change that improves the resilience of the component's logic. It ensures that ifthis.moduleisnullorundefined, thesplitmethod won't be called, thus preventing potential runtime errors.Optional chaining is a relatively new JavaScript feature that allows safe access to nested object properties, even if an intermediate property doesn't exist. It's a concise and expressive way to handle potential
nullorundefinedvalues in object property chains.This change aligns with best practices for defensive programming and error handling.
package.json (3)
62-62: LGTM!The addition of
node-gyptodevDependenciesis approved.
72-72: LGTM!The addition of
"packageManager": "yarn@3.8.5"is approved.
73-77: LGTM!The addition of the
"resolutions"section is approved..circleci/config.yml (2)
6-6: Verify codebase compatibility with Node.js v20.14.Upgrading to a newer Node.js version can provide benefits such as performance improvements, new features, and security patches.
Ensure that the codebase is compatible with Node.js v20.14 by running the following script:
87-87: Verify testing dependencies and configurations compatibility with Ubuntu 22.04.Upgrading to a newer Ubuntu version can enhance compatibility and performance for the testing processes.
Ensure that the testing dependencies and configurations are compatible with Ubuntu 22.04 by running the following script:
packages/router/src/nuxt/index.js (10)
31-31: LGTM!The refactor to use
defineNuxtModulefrom@nuxt/kitis a valid change and follows the best practices for defining Nuxt modules.
40-146: Refactor of the module setup.The
setupfunction has been refactored to use the new module definition syntax provided by@nuxt/kit. It performs various tasks to set up the Druxt router and integrate it with Nuxt.Let's review the sub-tasks within the
setupfunction in more detail.Tools
Biome
[error] 66-66: The assignment should not be in an expression.
The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.(lint/suspicious/noAssignInExpressions)
[error] 86-86: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
GitHub Check: codecov/patch
[warning] 80-81: packages/router/src/nuxt/index.js#L80-L81
Added lines #L80 - L81 were not covered by tests
[warning] 89-89: packages/router/src/nuxt/index.js#L89
Added line #L89 was not covered by tests
41-50: Setting default options.The code correctly sets default options for the module by merging the module options with the Nuxt options and setting default values for
baseUrlandendpoint.
53-54: Adding dependent modules.The code correctly adds the
druxt/nuxtmodule as a dependent module using theinstallModulefunction from@nuxt/kit.
56-59: Registering component directories.The code correctly registers the component directory of the module using the
components:dirshook.
61-115: Setting up the Druxt router.The code correctly sets up the Druxt router by adding a custom wildcard route. It checks the
wildcardoption and performs various tasks accordingly, such as fetching languages from the Drupal API and adding routes per language.Let's investigate the potential issue reported by static analysis tools at line 66.
Tools
Biome
[error] 66-66: The assignment should not be in an expression.
The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.(lint/suspicious/noAssignInExpressions)
[error] 86-86: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
GitHub Check: codecov/patch
[warning] 80-81: packages/router/src/nuxt/index.js#L80-L81
Added lines #L80 - L81 were not covered by tests
[warning] 89-89: packages/router/src/nuxt/index.js#L89
Added line #L89 was not covered by tests
66-66: False positive: Assignment in expression.The static analysis tool reports an error for the assignment in the expression at line 66. However, assigning a function to
nuxt.options.build.createRoutesis a valid way to customize the route creation in Nuxt. The assignment is intentionally used within an expression to conditionally modify thecreateRoutesoption.This static analysis hint can be dismissed as a false positive.
Tools
Biome
[error] 66-66: The assignment should not be in an expression.
The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.(lint/suspicious/noAssignInExpressions)
117-122: Adding plugin template.The code correctly adds the Druxt router plugin template using the
addPluginTemplatefunction from@nuxt/kit.
124-134: Adding store plugin template and enabling Vuex store.The code correctly adds the Druxt router store plugin template using the
addPluginTemplatefunction from@nuxt/kit. It also enables the Vuex store by settingnuxt.options.storetotrue, which is necessary for the Druxt router to function properly.
136-145: Nuxt Storybook integration (commented out).The code segment for setting up the Nuxt Storybook integration is currently commented out. The TODO note indicates that there are compatibility issues between
@nuxt/kitand@nuxt/storybookthat need to be addressed in the future.Resolving the compatibility issues and enabling the Nuxt Storybook integration would be beneficial for the development and testing of the Druxt router components.
packages/druxt/test/nuxt/index.test.js (4)
3-4: LGTM!The code changes are approved.
5-10: LGTM!The code changes are approved.
18-29: LGTM!The code changes are approved.
40-45: LGTM!The code changes are approved.
Also applies to: 48-56, 63-65, 69-71, 77-89, 93-98, 103-120, 124-144, 148-186
packages/breadcrumb/src/components/DruxtBreadcrumb.vue (4)
78-78: LGTM!The code change is approved.
79-79: LGTM!The code change is approved.
106-106: LGTM!The code change is approved.
108-108: LGTM!The code change is approved.
packages/site/src/components/DruxtSite.vue (3)
71-71: LGTM!The code change is approved.
132-132: LGTM!The code change is approved.
142-142: LGTM!The code change is approved.
packages/blocks/src/components/DruxtBlockRegion.vue (3)
175-175: LGTM!The introduction of optional chaining improves the robustness of the code by handling potential null or undefined values of
collection.
210-210: LGTM!The introduction of optional chaining improves the robustness of the code by handling potential undefined value of
this.blocks.
226-226: LGTM!The introduction of optional chaining improves the robustness of the code by handling potential undefined value of
this.blocks.packages/router/src/components/DruxtRouter.vue (3)
70-70: LGTM!The code change is approved.
202-202: LGTM!The code change is approved.
262-262: LGTM!The code change is approved.
packages/blocks/src/components/DruxtBlock.vue (5)
96-96: LGTM!The change to use optional chaining for accessing
resource.datais approved. It improves the safety and conciseness of the code.
159-159: LGTM!The change to use optional chaining for accessing
this.$druxt.settings.blocks.query.fieldsis approved. It improves the clarity of the code.
217-217: LGTM!The change to use optional chaining for checking
this.block.attributesis approved. It simplifies the conditional logic.
220-220: LGTM!The change to use optional chaining for accessing
this.block.attributes.settings.labelis approved. It prevents potential errors when rendering the description.
232-232: LGTM!The change to use optional chaining for checking
this.component.options.lengthis approved. It ensures theDruxtDevelTemplatecomponent is only rendered when necessary.packages/druxt/src/nuxt/index.js (4)
1-5: LGTM!The code changes are approved.
32-41: LGTM!The refactoring of the
DruxtNuxtModuleto usedefineNuxtModuleand the introduction ofmetaanddefaultsproperties improve the module's structure and maintainability.
43-233: LGTM!The encapsulation of the setup logic in a dedicated function improves the module's readability and maintainability. The function correctly merges and normalizes the module options, creates a new
DruxtClientinstance, and integrates with other Nuxt modules and features based on the provided options.Tools
Biome
[error] 79-79: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 84-84: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
GitHub Check: codecov/patch
[warning] 143-143: packages/druxt/src/nuxt/index.js#L143
Added line #L143 was not covered by tests
[warning] 153-154: packages/druxt/src/nuxt/index.js#L153-L154
Added lines #L153 - L154 were not covered by tests
[warning] 158-159: packages/druxt/src/nuxt/index.js#L158-L159
Added lines #L158 - L159 were not covered by tests
[warning] 163-163: packages/druxt/src/nuxt/index.js#L163
Added line #L163 was not covered by tests
79-79: Consider using optional chaining to simplify the code.The static analysis tool suggests using optional chaining to simplify the code at lines 79 and 84. However, the current code is correct and the suggestions can be safely ignored.
Also applies to: 84-84
Tools
Biome
[error] 79-79: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
packages/menu/src/components/DruxtMenu.vue (1)
208-208: LGTM!The addition of the optional chaining operator (
?.) to the state access expression is a good improvement. It ensures that ifdruxtMenuisnullorundefined, the expression will returnundefinedinstead of throwing an error. This enhances the robustness of the code by preventing potential runtime errors.packages/router/src/router.js (2)
189-189: LGTM!The use of optional chaining to access
route.props?.langcodeis a good practice to handle cases whereroute.propsmight be undefined. This change enhances code safety and readability without altering the functionality.
192-192: LGTM!The use of optional chaining to check for the redirect path with
route.redirect?.[0]?.tois a good practice to handle cases whereroute.redirectmight be undefined. This change enhances code readability and reduces the risk of runtime errors due to undefined values.packages/druxt/src/components/DruxtModule.vue (13)
133-133: LGTM!The use of optional chaining to check for the existence of
this.$options.druxtis a good safety measure to prevent runtime errors.
138-138: LGTM!The use of optional chaining to check for the existence of
this.$options.druxt.fetchConfigbefore invoking it is a good safety measure to prevent runtime errors.
Line range hint
148-159: LGTM!The use of optional chaining in the following scenarios is a good safety measure to prevent runtime errors:
- Checking for the existence of
this.$vnode.data.scopedSlots.default.- Filtering and accessing the first element of the
optionsarray.
168-173: LGTM!The use of optional chaining to check for the existence of
this.$options.druxt.settingsbefore invoking it is a good safety measure to prevent runtime errors.
192-192: LGTM!The use of optional chaining to access
$route.meta.langcodeis a good safety measure to prevent runtime errors if$route.metais undefined.
228-230: LGTM!The use of optional chaining to access properties of the
err.responseobject is a good safety measure to prevent runtime errors iferr.responseor the nested properties are undefined.
240-240: LGTM!The use of optional chaining to access
err.response.data.errorsis a good safety measure to prevent runtime errors iferr.response,err.response.data, orerr.response.data.errorsis undefined.
254-254: LGTM!The use of optional chaining to check for the existence of
this.$options.druxt.componentOptionsis a good safety measure to prevent runtime errors ifthis.$options.druxtis undefined.
260-260: LGTM!The use of optional chaining to check if
optionshas a truthylengthproperty is a good safety measure to prevent runtime errors ifoptionsis undefined.
324-324: LGTM!The use of optional chaining to check for the existence of
this.$options.druxt.propsDatais a good safety measure to prevent runtime errors ifthis.$options.druxtis undefined.
440-442: LGTM!The use of optional chaining to access properties of the
wrapperobject is a good safety measure to prevent runtime errors ifwrapperis undefined.
447-448: LGTM!The use of optional chaining in the following scenarios is a good safety measure to prevent runtime errors:
- Checking if
this.component.optionshas a truthylengthproperty.- Accessing the
componentproperty of thewrapperobject.
Line range hint
1-524: Overall, the code changes look good to me!The introduction of optional chaining throughout the component enhances the safety and readability of the code by gracefully handling cases where properties may be undefined. This is a great improvement that prevents potential runtime errors.
I didn't find any issues or concerns with the changes. The usage of optional chaining is appropriate in all the modified code segments.
Great job on the refactoring! The component is now more robust and maintainable.
packages/views/src/components/DruxtView.vue (7)
Line range hint
163-171: LGTM!The use of optional chaining enhances safety by preventing errors when deeply nested properties are accessed.
Line range hint
179-187: LGTM!The use of optional chaining enhances safety by preventing errors when deeply nested properties are accessed.
Line range hint
204-212: LGTM!The use of optional chaining enhances safety by preventing errors when deeply nested properties are accessed.
262-262: LGTM!The use of optional chaining provides a more concise and safer way to handle potentially undefined data.
435-436: LGTM!The use of optional chaining streamlines the logic for accessing potentially undefined properties.
457-457: LGTM!The use of optional chaining ensures that if
collection.datais not defined, it will not cause an error.
466-466: LGTM!The use of optional chaining provides a safer way to access the
drupal_internal__idproperty.
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
Outside diff range and nitpick comments (1)
packages/site/src/nuxt/index.js (1)
1-89: Consider adding JSDoc comments for better documentation coverage.To improve the documentation of the module, consider adding JSDoc comments for the following:
- The
setupfunction and its parameters (moduleOptionsandnuxt).- The
optionsobject and its properties.- The Nuxt hooks used in the module (
components:dirsandstorybook:config).Adding these comments will provide a more comprehensive understanding of the module's internals and make it easier for other developers to work with the code.
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (8)
- packages/blocks/src/nuxt/index.js (1 hunks)
- packages/breadcrumb/src/nuxt/index.js (1 hunks)
- packages/druxt/src/nuxt/index.js (2 hunks)
- packages/entity/src/nuxt/index.js (1 hunks)
- packages/menu/src/nuxt/index.js (1 hunks)
- packages/router/src/nuxt/index.js (2 hunks)
- packages/site/src/nuxt/index.js (1 hunks)
- packages/views/src/nuxt/index.js (2 hunks)
Additional context used
Biome
packages/router/src/nuxt/index.js
[error] 66-66: The assignment should not be in an expression.
The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.(lint/suspicious/noAssignInExpressions)
[error] 86-86: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
packages/druxt/src/nuxt/index.js
[error] 76-76: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 81-81: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
Additional comments not posted (32)
packages/breadcrumb/src/nuxt/index.js (5)
29-47: LGTM!The module's default options and setup function are well-structured and follow best practices:
- The default options provide a good starting point for the module's configuration.
- Merging user-defined options with existing Nuxt.js options ensures cohesive configuration.
- Installing dependent modules is essential for integrating the breadcrumb functionality with the broader Druxt ecosystem.
49-53: LGTM!The component registration is correctly implemented:
- Registering component directories allows Nuxt.js to recognize and utilize the breadcrumb components within the application.
- The component directories are registered using the
components:dirshook.
55-62: TODO: Resolve compatibility issues between@nuxt/kitand@nuxt/storybook.The Nuxt Storybook integration is currently disabled due to compatibility issues between
@nuxt/kitand@nuxt/storybook.
4-24: LGTM!The module's JSDoc comments are well-written and informative:
- The comments provide a clear description of the module's purpose and usage.
- The example provided in the comments helps developers understand how to configure the module.
66-66: LGTM!The module's export statement is correctly implemented:
- Exporting the module as a default export allows it to be easily imported and used in other parts of the codebase.
packages/blocks/src/nuxt/index.js (1)
27-69: LGTM! The Nuxt.js module is well-structured and follows best practices.The
DruxtBlocksNuxtModuleis a comprehensive Nuxt.js module that effectively integrates Vue.js components into a Nuxt.js application. The module's setup function handles various aspects of the integration, such as setting default options, installing the Druxt module, registering component directories, and configuring Nuxt Storybook.The module uses the
@nuxt/kitpackage for defining and installing the module, which is a recommended approach. The module's documentation provides clear examples and explanations of how to use and configure the module.The module's configuration options allow flexibility in customizing the behavior of the Druxt blocks, and the integration with Nuxt Storybook enhances the development experience by providing a visual representation of the components.
Overall, this module streamlines the process of using Druxt blocks within a Nuxt.js application, promoting modularity and ease of use.
packages/views/src/nuxt/index.js (5)
1-1: LGTM!The imports from
@nuxt/kitare necessary for the updated module definition and configuration.
27-76: Great work on updating the module definition!The changes made to the
DruxtViewsNuxtModuledefinition are in line with the recommended practices for defining Nuxt modules usingdefineNuxtModule. The updated setup function, component directory registration, dependent module installation, Vuex plugin addition, Vuex store enablement, and Storybook configuration all contribute to a more modern and maintainable module structure.
78-78: LGTM!Exporting the
DruxtViewsNuxtModuleas the default export aligns with the common practice and improves the module's usability.
55-59: Verify the impact of thebaseUrloption on the dependent modules.The code segment adds dependent modules using the
installModulefunction and passes thebaseUrloption to them. Please ensure that the dependent modules (druxt-entity/nuxtanddruxt-schema/nuxt) handle thebaseUrloption correctly and that there are no unintended side effects or breaking changes caused by this option.Run the following script to verify the usage of the
baseUrloption in the dependent modules:Verification successful
The
baseUrloption is correctly handled by the dependent modules.After analyzing the codebase, I can confirm that both
druxt-entityanddruxt-schemamodules properly handle and utilize thebaseUrloption:
- Both modules document the
baseUrloption in their configuration.- The option is correctly set up in the Nuxt module initialization for both packages.
druxt-entitycorrectly passes thebaseUrltodruxt-schemaduring installation.druxt-schemauses thebaseUrlto create aDruxtSchemainstance, which is essential for interacting with the Drupal JSON:API.There are no apparent issues or unintended side effects caused by passing the
baseUrloption to these modules.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of the `baseUrl` option in the dependent modules. # Test: Search for the usage of the `baseUrl` option in the `druxt-entity` module. # Expect: Occurrences of the `baseUrl` option being used correctly. rg --type js -A 5 $'baseUrl' ./packages/entity/src # Test: Search for the usage of the `baseUrl` option in the `druxt-schema` module. # Expect: Occurrences of the `baseUrl` option being used correctly. rg --type js -A 5 $'baseUrl' ./packages/schema/srcLength of output: 5385
72-74: Verify the compatibility of theDruxtViewsStorybookfunction with the updated Nuxt context.The code segment configures Storybook using the
storybook:confighook and calls theDruxtViewsStorybookfunction with the updatednuxtcontext. Please ensure that theDruxtViewsStorybookfunction is compatible with the new Nuxt context and that there are no breaking changes or errors caused by this update.Run the following script to verify the compatibility of the
DruxtViewsStorybookfunction:Verification successful
DruxtViewsStorybook function is compatible with the updated Nuxt context
The verification process has confirmed that the
DruxtViewsStorybookfunction, which is the default export from./packages/views/src/nuxt/storybook.js, is indeed compatible with the updated Nuxt context. The function is correctly imported and used inindex.jswith the new context:await DruxtViewsStorybook.call(nuxt, { stories })This usage aligns with the function's implementation, which expects to be called with a specific context (using
this.options) and receives a{ stories }object as its parameter. The function also utilizes Nuxt-specific features, indicating it's designed to work within the Nuxt ecosystem.No changes or further actions are required regarding the compatibility of the
DruxtViewsStorybookfunction with the updated Nuxt context.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the compatibility of the `DruxtViewsStorybook` function with the updated Nuxt context. # Test: Search for the definition of the `DruxtViewsStorybook` function. # Expect: The function definition should handle the `nuxt` context correctly. rg --type js -A 10 $'DruxtViewsStorybook' ./packages/views/src/nuxt/storybook.jsLength of output: 79
Script:
#!/bin/bash # Description: Verify the existence of the file and search for the DruxtViewsStorybook function # Check if the file exists if [ -f "./packages/views/src/nuxt/storybook.js" ]; then echo "File ./packages/views/src/nuxt/storybook.js exists." else echo "File ./packages/views/src/nuxt/storybook.js does not exist." fi # Search for DruxtViewsStorybook function in all JavaScript files within packages/views echo "Searching for DruxtViewsStorybook function:" rg --type js -A 10 'function\s+DruxtViewsStorybook' ./packages/views # If not found as a function, search for it as a variable or constant if [ $? -ne 0 ]; then echo "Searching for DruxtViewsStorybook as a variable or constant:" rg --type js -A 10 '(const|let|var)\s+DruxtViewsStorybook' ./packages/views fiLength of output: 559
Script:
#!/bin/bash # Description: Further investigation of DruxtViewsStorybook usage and definition # Search for any usage of DruxtViewsStorybook in the entire codebase echo "Searching for any usage of DruxtViewsStorybook:" rg --type js 'DruxtViewsStorybook' ./packages/views # Look for imports in storybook.js echo "Checking imports in storybook.js:" rg --type js 'import.*DruxtViewsStorybook' ./packages/views/src/nuxt/storybook.js # Check for similarly named functions or variables echo "Searching for similarly named functions or variables:" rg --type js '(function|const|let|var)\s+(Druxt.*Storybook)' ./packages/views # Display the content of storybook.js for manual inspection echo "Content of storybook.js:" cat ./packages/views/src/nuxt/storybook.jsLength of output: 3242
packages/menu/src/nuxt/index.js (5)
29-36: LGTM!The module's meta and defaults are correctly specified.
38-51: LGTM!The setup function is correctly processing the options and installing the dependent module with the combined options.
53-57: LGTM!The component directories are correctly registered, ensuring that the menu components are available for use within the application.
59-71: LGTM!The plugin templates are correctly added, allowing for the generation of the necessary plugin files for the menu functionality and Vuex store.
73-76: LGTM!The module correctly integrates with Nuxt Storybook by hooking into the
storybook:confighook and calling theDruxtMenuStorybookfunction with thestoriesobject.packages/entity/src/nuxt/index.js (2)
32-78: LGTM!The
DruxtEntityNuxtModulefunction is well-structured, follows best practices for defining a Nuxt.js module, and sets up the necessary configurations and integrations for the Druxt framework. The function is well-documented, provides flexibility for users to customize options, ensures the installation of necessary dependencies, registers component directories correctly, and enables seamless integration with Nuxt Storybook for UI component development and testing.Great job on implementing this critical part of the module!
68-68: Address the past review comment and consider adding tests for the conditional block.The past review comment suggests adding tests to cover the conditional block at line 68. While the conditional block is not complex, it's still a good practice to test different scenarios based on user-defined options.
Consider adding tests that cover the following scenarios:
- When
options.entity.components.fieldsis truthy, ensure that the component directory at../dist/components/fieldsis registered.- When
options.entity.components.fieldsis falsy, ensure that the component directory at../dist/components/fieldsis not registered.These tests will help ensure that the conditional behavior works as expected based on user-defined options.
packages/site/src/nuxt/index.js (5)
1-4: LGTM!The imports are relevant and necessary for the module functionality.
6-15: LGTM!The JSDoc comment provides a clear and informative description of the module's purpose and functionality.
16-80: LGTM!The
DruxtSiteNuxtModuleis well-structured and provides the necessary setup and configuration for integrating Druxt Site into a Nuxt.js application. The module installs essential Druxt modules, registers components, and sets up default options and layouts.
82-82: LGTM!Exporting the module as the default export is the correct approach for making it accessible to other files.
84-89: LGTM!The JSDoc comment provides a clear description of the
ModuleOptionstype and references the location of the type definition.packages/router/src/nuxt/index.js (6)
31-39: LGTM!The use of
defineNuxtModuleto define theDruxtRouterNuxtModuleis a good practice. Themetaanddefaultsproperties provide useful information and sensible default options for the module.
80-81: Recommendation: Add tests forDruxtClientinstantiation.The static analysis tool reports that the added lines at line range 80-81, which create a new instance of
DruxtClient, are not covered by tests.To improve the test coverage and ensure the reliability and maintainability of the code, it is recommended to add tests that cover the instantiation of
DruxtClientwith the provided options.Do you want me to generate the test code or open a GitHub issue to track this recommendation?
Tools
GitHub Check: codecov/patch
[warning] 80-81: packages/router/src/nuxt/index.js#L80-L81
Added lines #L80 - L81 were not covered by tests
40-79: LGTM!The
setupfunction is well-structured and handles the module configuration effectively. Merging options, installing dependencies, registering components, and adding custom routes are all good practices.Also applies to: 82-84
Tools
Biome
[error] 66-66: The assignment should not be in an expression.
The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.(lint/suspicious/noAssignInExpressions)
94-115: LGTM!Extending pages using
extendPagesand adding language-specific routes and a wildcard route is a good approach for enhancing the router functionality and enabling multi-language support.
117-134: LGTM!Adding a plugin and a store using
addPluginTemplateis a good practice. Enabling the Vuex store is necessary for the module to function properly.
136-145: LGTM!Adding a hook for Nuxt Storybook configuration and a template for a Storybook story is a good practice for integrating with Storybook. Pushing the generated story to the Storybook stories array ensures that the story is included.
packages/druxt/src/nuxt/index.js (3)
29-38: LGTM!The module definition has been updated to use
defineNuxtModulefrom@nuxt/kit, which is a good practice for defining Nuxt modules. The metadata and default options are well-defined and essential for the module.
40-225: LGTM!The module setup function has been refactored to handle the module initialization process effectively. The merging of module options and Nuxt options, normalization of
baseUrlandendpointoptions, creation of a newDruxtClientinstance, integration with@nuxtjs/proxyand@nuxtjs/axiosmodules, registration of components, plugins, and Vuex store, addition of CLI badge messages, enabling of development mode features, and integration with Nuxt Storybook are all well-implemented and enhance the module's functionality and developer experience.Tools
Biome
[error] 76-76: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 81-81: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
140-140: ** Reminder: Add tests to cover the added lines.**The code coverage report indicates that the added lines at 143, 153-154, 158-159, and 163 are not covered by tests.
Do you want me to generate the missing unit tests or open a GitHub issue to track this task?
Also applies to: 153-154, 158-159, 163-163
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: 1
Outside diff range and nitpick comments (6)
packages/blocks/test/nuxt/index.test.js (3)
5-9: Consider usingjest.requireMockfor better type safety.Instead of using
jest.mockand manually defining the mocked module, consider usingjest.requireMockto import the actual module and ensure better type safety. This approach helps maintain consistency between the mocked and actual module signatures.-jest.mock('@nuxt/kit', () => ({ - defineNuxtModule: (module) => module, - installModule: jest.fn(), -})) -import { installModule } from '@nuxt/kit' +import { defineNuxtModule, installModule } from '@nuxt/kit' + +jest.mock('@nuxt/kit', () => ({ + ...jest.requireActual('@nuxt/kit'), + installModule: jest.fn(), +}))
11-19: Consider extracting the mock Nuxt instance into a separate file.To improve code organization and reusability, consider extracting the
nuxtMockobject into a separate file, such astest/mocks/nuxt.js. This allows you to share the mock instance across multiple test files and keeps the test file focused on the specific module being tested.-const nuxtMock = { - hook: jest.fn((hook, fn) => { - const arg = { - 'components:dirs': [], - 'storybook:config': { stories: [] } - } - return fn(arg[hook]) - }), -} +import { nuxtMock } from '../mocks/nuxt'
21-29: Consider adding more test cases.While the current test case covers the basic setup process of the
DruxtBlocksNuxtModule, consider adding more test cases to ensure comprehensive coverage of the module's functionality. Some additional test cases to consider:
- Test the behavior when the
druxtoption is not provided in the Nuxt options.- Verify that the correct arguments are passed to the
installModulefunction.- Test the behavior when the
components:dirsandstorybook:confighooks are not called.- Validate the content of the
components:dirsarray andstorybook:configobject after the setup process.Adding these additional test cases will help catch edge cases and ensure the module behaves as expected under different scenarios.
packages/router/test/nuxt/index.test.js (2)
11-11: Ensure all imported functions are used.The imported functions
addPluginTemplate,addTemplate,extendPages, andinstallModuleshould all be used within the test file. If any of these functions are unused, consider removing them from the import statement to maintain a clean and minimal import list.Run the following script to verify the usage of the imported functions:
#!/bin/bash # Description: Verify all imported functions are used in the test file. # Test: Search for the usage of each imported function. Expect: At least one occurrence of each function. for func in addPluginTemplate addTemplate extendPages installModule; do echo "Checking usage of $func:" rg --type js -A 5 "\b$func\b" packages/router/test/nuxt/index.test.js echo "---" done
24-30: Verify the removal of unusednuxtMock.optionsproperties.The
nuxtMock.optionsobject includes properties likebuild,buildDir, andsrcDir. Ensure that these properties are still required for the tests after the refactor. If they are no longer used, consider removing them to keep the mock setup minimal and focused.packages/druxt/test/nuxt/index.test.js (1)
192-201: Reminder: Reimplement the development server middleware test.The commented-out test for the development server middleware indicates that it needs to be reimplemented. Consider updating the test to ensure that the middleware is correctly added when the development mode is enabled.
Do you want me to generate the updated test code or open a GitHub issue to track this task?
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (4)
- packages/blocks/test/nuxt/index.test.js (1 hunks)
- packages/druxt/test/nuxt/index.test.js (4 hunks)
- packages/entity/test/nuxt/index.test.js (1 hunks)
- packages/router/test/nuxt/index.test.js (1 hunks)
Additional context used
Biome
packages/druxt/test/nuxt/index.test.js
[error] 141-141: Avoid the delete operator which can impact performance.
Unsafe fix: Use an undefined assignment instead.
(lint/performance/noDelete)
Additional comments not posted (19)
packages/blocks/test/nuxt/index.test.js (2)
1-29: LGTM!The test file is well-structured and follows best practices for testing Nuxt modules. It effectively mocks the necessary dependencies, sets up a mock Nuxt instance, and validates the expected behavior of the
DruxtBlocksNuxtModuleduring the setup process.Key aspects:
- Mocking of
@nuxt/kitand storybook configuration is handled correctly.- The mock Nuxt instance provides the necessary hooks and options for testing.
- The test case covers the essential aspects of the module setup, including verifying the number of times
installModuleandhookmethods are called.Overall, the test file provides a solid foundation for testing the
DruxtBlocksNuxtModuleand ensures that the module integrates correctly with the Nuxt framework.
3-3: Verify the mocked storybook configuration.Please ensure that the mocked storybook configuration in
../../src/nuxt/storybookaligns with the actual configuration used in the module. If there are any discrepancies, update the mocked configuration to maintain consistency and avoid false positives in the tests.Verification successful
The mocked storybook configuration is correctly implemented for testing purposes.
The current implementation of the mock is appropriate and aligns with common Jest testing strategies. The line
jest.mock('../../src/nuxt/storybook')tells Jest to mock the entire storybook module, allowing tests to provide custom implementations or expectations as needed. This approach is particularly useful when dealing with complex modules that have side effects or external dependencies, as is the case with the actual storybook.js file.The simplicity of the mock enables flexibility in testing, as specific functionalities can be mocked on a per-test basis. This strategy, combined with the additional mock for '@nuxt/kit', provides a solid foundation for isolated and controlled testing of the module's behavior.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the mocked storybook configuration matches the actual configuration. # Test: Compare the mocked and actual storybook configurations. diff <(cat packages/blocks/src/nuxt/storybook.js) <(cat packages/blocks/test/nuxt/index.test.js | sed -n '/jest\.mock.*storybook/,/)/p' | sed '$d')Length of output: 261
Script:
#!/bin/bash # Search for storybook.js file echo "Searching for storybook.js file:" fd storybook.js packages/blocks # Display contents of storybook.js if found echo -e "\nContents of storybook.js (if found):" fd storybook.js packages/blocks -x cat {} # Extract and display mocked storybook configuration from test file echo -e "\nMocked storybook configuration in test file:" sed -n '/jest\.mock.*storybook/,/})/p' packages/blocks/test/nuxt/index.test.jsLength of output: 3229
packages/entity/test/nuxt/index.test.js (1)
1-30: LGTM!The test case is well-structured and covers the essential aspects of the Nuxt module setup. It mocks the necessary dependencies, sets up a mock Nuxt instance, and makes appropriate assertions to verify the expected behavior.
The test case now includes assertions to check that the
installModulefunction from@nuxt/kitis called the expected number of times and that the Nuxt hooks are triggered as expected.Great job addressing the previous review comment and enhancing the test case!
packages/router/test/nuxt/index.test.js (5)
3-9: Great job enhancing the mock setup!The changes to the mock setup using
jest.mockfor the@nuxt/kitmodule improve the comprehensiveness of the mocking by including additional methods likeaddPluginTemplate,extendPages, andinstallModule. This will lead to more thorough testing of theDruxtRouterNuxtModule.
32-38: Excellent job updating the assertions!The assertions have been updated to reflect the new mock methods, focusing on the calls to
installModule,extendPages,addPluginTemplate, andaddTemplate. The test case now checks for the correct number of calls to these methods based on thedruxt.routeroptions, ensuring that theDruxtRouterNuxtModulebehaves as expected.
41-45: Great work testing different configurations!The test case now checks the behavior of the
DruxtRouterNuxtModulewhen thedruxt.router.wildcardoption is set tofalse. This ensures that the module functions correctly under different configurations.
48-54: Excellent job testing thepages: falseconfiguration!The test case now validates the behavior of the
DruxtRouterNuxtModulewhen thedruxt.router.pagesoption is set tofalse. It checks the number of calls toaddPluginTemplate,addTemplate, andnuxtMock.hook, and also verifies that thebuild.createRoutes()method returns an empty array. This comprehensive testing ensures that the module handles this configuration correctly.
1-1: Verify the import path change in the codebase.The import path for
DruxtRouterNuxtModulehas been updated. Ensure that the module has been moved to the new location and that all other files importing this module have been updated accordingly.Run the following script to verify the import usage:
Verification successful
Import path change verified successfully
The import path for
DruxtRouterNuxtModulehas been correctly updated in the codebase. The module is defined inpackages/router/src/nuxt/index.jsand imported correctly inpackages/router/test/nuxt/index.test.jsusing the path'../../src/nuxt'. No other occurrences of importing this module from a different path were found, indicating that all necessary updates have been made.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify all imports of `DruxtRouterNuxtModule` match the new path. # Test: Search for the import usage. Expect: Only occurrences of the new import path. rg --type js -A 5 $'DruxtRouterNuxtModule'Length of output: 2400
packages/druxt/test/nuxt/index.test.js (11)
3-11: LGTM!The changes to import the
DruxtNuxtModuleand mock the@nuxt/kitpackage are necessary for the updated test structure. The mocked functionsaddPluginTemplate,defineNuxtModule, andinstallModulewill be used to verify the module's behavior.
18-38: LGTM!The
nuxtMockobject is set up correctly in thebeforeEachhook. It provides the necessary mocked functionality for thehookmethod and the required options for testing the Druxt module.
40-49: LGTM!The test for module options correctly verifies that:
- The
addPluginTemplatefunction is called with the provided options.- The Druxt and Axios plugins are correctly ordered using the
extendPluginsmethod.
52-60: LGTM!The test for root options correctly verifies that the
addPluginTemplatefunction is called with the provided options when they are set in thenuxtMock.options.druxtobject.
67-75: LGTM!The test for default options correctly verifies that:
- The
componentsandstoreoptions are enabled by default.- The
componentsoption can be disabled when explicitly set tofalse.
81-93: LGTM!The test for plugin order correctly verifies that:
- The
extendPluginsoption is a function after setting up the module.- The plugins are correctly ordered, with the Axios plugin first, followed by the Druxt plugin.
97-102: LGTM!The test for the
@nuxtjs/axiosmodule correctly verifies that theinstallModulefunction is called with the correct arguments to install the Axios module.
Line range hint
107-124: LGTM!The test for the API Proxy correctly verifies that:
- The
@nuxtjs/proxymodule is installed when theproxy.apioption is enabled.- The
nuxtMock.options.proxyobject is correctly set with the expected proxy configuration.
128-148: LGTM!The test for the File Proxy correctly verifies that:
- The
nuxtMock.options.proxyobject is correctly set with the default file proxy configuration when theproxy.filesoption is enabled.- The
nuxtMock.options.proxyobject is correctly set with a custom file proxy configuration when theproxy.filesoption is set to a custom value.Tools
Biome
[error] 141-141: Avoid the delete operator which can impact performance.
Unsafe fix: Use an undefined assignment instead.
(lint/performance/noDelete)
Line range hint
152-190: LGTM!The test for merging proxy options correctly verifies that:
- The
@nuxtjs/proxymodule is installed when theproxy.apioption is enabled.- The
nuxtMock.options.proxyobject is correctly merged with the existing array and object proxy settings.Tools
Biome
[error] 141-141: Avoid the delete operator which can impact performance.
Unsafe fix: Use an undefined assignment instead.
(lint/performance/noDelete)
141-141: ****The use of the
deleteoperator in this context is appropriate and does not significantly impact performance. The static analysis hint can be safely ignored.Tools
Biome
[error] 141-141: Avoid the delete operator which can impact performance.
Unsafe fix: Use an undefined assignment instead.
(lint/performance/noDelete)
Types of changes
Description
Druxt development tools template creator temporarily disabled@nuxt/storybook integration temporarily disabled[MODULE_NAME]/nuxtinstead of[MODULE_NAMEinnuxt.config.jsChecklist:
Screenshots/Media: