Skip to content
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

feat(license-service): update license service #15204

Merged
merged 85 commits into from
Aug 14, 2024
Merged

Conversation

thorkellmani
Copy link
Member

@thorkellmani thorkellmani commented Jun 12, 2024

What

  • Update license service resolver, services and models
  • Move logic from the front-end to service
  • Add passports to the license service domain
  • Move localization messages

Why

  • Steps towards making the more generic so the frontend can know less about individual licenses
  • Adding the passports to the license service lessens special case handling in the front-end

Feature deploy:
feat/update-license-service

Checklist:

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • Formatting passes locally with my changes
  • I have rebased against main before asking for a review

Summary by CodeRabbit

  • New Features

    • Introduced new components for managing licenses, including LicenseDataFields and LicenseDetail for detailed views of licenses.
    • Added support for improved structure in handling license data and errors.
    • Enabled new license service functionality with the addition of licensesV2 feature.
  • Improvements

    • Simplified the handling of localization for modal labels in components.
    • Enhanced error handling and data retrieval mechanisms for license queries.
  • Bug Fixes

    • Addressed various minor issues related to data handling in the license service.
  • Documentation

    • Updated message definitions and documentation for new functionalities.
  • Style

    • Improved semantic structure and styling of existing components for better UI consistency.
  • Chores

    • Updated import paths across various files for better organization.

Copy link
Contributor

coderabbitai bot commented Jun 12, 2024

Walkthrough

The recent updates significantly enhance the license service's functionality and structure by introducing new GraphQL DTOs, refining existing data models, and implementing new components. Key improvements include a more straightforward approach to localization, increased type specificity, and components designed to dynamically render license data and provide detailed views. These changes aim to improve user experience and streamline data handling within the service.

Changes

Files Change Summary
apps/service-portal/src/components/Notifications/NotificationMenu.tsx
apps/service-portal/src/components/Sidemenu/Sidemenu.tsx
Simplified modalLabel prop assignments, enhancing readability with direct localization references.
apps/system-e2e/src/tests/islandis/service-portal/acceptance/mocks/licenses.mock.ts Restructured mock data for licenses to better align with expected real-world response formats.
libs/api/domains/license-service/project.json Added a new command configuration for extracting localization strings, enhancing project functionality.
libs/api/domains/license-service/src/lib/dto/*.dto.ts Various updates to DTOs focusing on type specificity, new fields, and removal of deprecated properties.
libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx Introduced a new component to dynamically render license data fields, improving user experience.
libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.tsx New component for detailed license views, enhancing navigation and information display.
libs/api/domains/license-service/src/lib/mappers/*.ts Enhanced mappers to return promises of mapped payload responses, improving data handling consistency.
libs/feature-flags/src/lib/features.ts Added licensesV2 feature to the Features enum, indicating a new license service functionality.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Frontend
    participant LicenseService
    participant Database

    User->>Frontend: Request license overview
    Frontend->>LicenseService: Fetch licenses
    LicenseService->>Database: Query for licenses
    Database-->>LicenseService: Return licenses data
    LicenseService-->>Frontend: Send licenses data
    Frontend-->>User: Display licenses overview
Loading

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?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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 as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@datadog-island-is
Copy link

datadog-island-is bot commented Jun 13, 2024

Datadog Report

All test runs 7f45fb5 🔗

69 Total Test Services: 0 Failed, 67 Passed
🔻 Test Sessions change in coverage: 3 decreased, 22 increased, 175 no change

Test Services
This report shows up to 10 services
Service Name Failed Known Flaky New Flaky Passed Skipped Total Time Code Coverage Change Test Service View
air-discount-scheme-backend 0 0 0 81 0 31.73s N/A Link
air-discount-scheme-web 0 0 0 2 0 9.02s N/A Link
api 0 0 0 4 0 2.97s N/A Link
api-domains-air-discount-scheme 0 0 0 6 0 20.81s N/A Link
api-domains-assets 0 0 0 3 0 12.31s N/A Link
api-domains-auth-admin 0 0 0 18 0 13.76s N/A Link
api-domains-communications 0 0 0 5 0 33.09s N/A Link
api-domains-criminal-record 0 0 0 5 0 10.28s N/A Link
api-domains-driving-license 0 0 0 23 0 32.1s N/A Link
api-domains-education 0 0 0 8 0 21.08s N/A Link

🔻 Code Coverage Decreases vs Default Branch (3)

  • license-api - jest 33.87% (-0.29%) - Details
  • judicial-system-api - jest 19.61% (-0.02%) - Details
  • clients-license-client - jest 1.8% (-0.01%) - Details

Copy link

codecov bot commented Jun 13, 2024

Codecov Report

Attention: Patch coverage is 33.33333% with 10 lines in your changes missing coverage. Please review.

Project coverage is 36.86%. Comparing base (4e9ddf3) to head (b2a324d).
Report is 7 commits behind head on main.

Files Patch % Lines
...clients/passport-client/passportsClient.service.ts 27.27% 8 Missing ⚠️
...nts/license-client/src/lib/licenseClient.module.ts 33.33% 2 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main   #15204      +/-   ##
==========================================
+ Coverage   36.85%   36.86%   +0.01%     
==========================================
  Files        6584     6584              
  Lines      134962   134952      -10     
  Branches    38533    38528       -5     
==========================================
+ Hits        49745    49756      +11     
+ Misses      85217    85196      -21     
Flag Coverage Δ
air-discount-scheme-backend 54.08% <100.00%> (+0.01%) ⬆️
air-discount-scheme-web 0.00% <ø> (ø)
api 3.43% <ø> (ø)
api-domains-air-discount-scheme 36.88% <100.00%> (+0.03%) ⬆️
api-domains-assets 26.71% <ø> (ø)
api-domains-auth-admin 53.90% <ø> (ø)
api-domains-communications 40.58% <100.00%> (+0.01%) ⬆️
api-domains-criminal-record 48.12% <100.00%> (+0.03%) ⬆️
api-domains-driving-license 44.44% <100.00%> (+0.03%) ⬆️
api-domains-education 33.80% <100.00%> (+0.07%) ⬆️
api-domains-health-insurance 35.02% <100.00%> (+0.09%) ⬆️
api-domains-mortgage-certificate 36.03% <100.00%> (+0.02%) ⬆️
api-domains-payment-schedule 41.17% <100.00%> (+0.02%) ⬆️
application-api-files 57.11% <100.00%> (+0.02%) ⬆️
application-core 71.84% <ø> (+0.08%) ⬆️
application-system-api 41.86% <100.00%> (+<0.01%) ⬆️
application-template-api-modules 23.82% <100.00%> (+<0.01%) ⬆️
application-templates-accident-notification 19.88% <ø> (ø)
application-templates-car-recycling 3.12% <ø> (ø)
application-templates-criminal-record 22.23% <ø> (ø)
application-templates-driving-license 16.03% <ø> (ø)
application-templates-estate 11.92% <ø> (ø)
application-templates-example-payment 20.90% <ø> (ø)
application-templates-financial-aid 12.12% <ø> (ø)
application-templates-general-petition 18.96% <ø> (ø)
application-templates-health-insurance 23.36% <ø> (ø)
application-templates-inheritance-report 4.64% <ø> (ø)
application-templates-marriage-conditions 10.52% <ø> (ø)
application-templates-mortgage-certificate 43.85% <ø> (+0.03%) ⬆️
application-templates-parental-leave 28.41% <ø> (ø)
application-types 7.21% <ø> (ø)
application-ui-components 1.43% <ø> (ø)
application-ui-shell 21.35% <ø> (ø)
auth-api-lib 14.73% <100.00%> (+0.11%) ⬆️
clients-charge-fjs-v2 27.54% <ø> (ø)
clients-driving-license 40.98% <100.00%> (+0.03%) ⬆️
clients-driving-license-book 44.11% <100.00%> (+0.05%) ⬆️
clients-financial-statements-inao 49.44% <100.00%> (+0.07%) ⬆️
clients-license-client 1.83% <0.00%> (-0.01%) ⬇️
clients-regulations 42.93% <100.00%> (+0.04%) ⬆️
clients-rsk-company-registry 30.64% <ø> (ø)
clients-rsk-personal-tax-return 38.00% <ø> (ø)
clients-smartsolutions 12.77% <ø> (ø)
clients-syslumenn 49.88% <100.00%> (+0.02%) ⬆️
cms 0.43% <ø> (ø)
cms-translations 39.69% <100.00%> (+0.01%) ⬆️
dokobit-signing 62.58% <100.00%> (+0.18%) ⬆️
download-service 44.79% <100.00%> (+0.01%) ⬆️
email-service 60.41% <100.00%> (+0.16%) ⬆️
feature-flags 90.47% <100.00%> (+0.15%) ⬆️
file-storage 53.57% <100.00%> (+0.23%) ⬆️
financial-aid-backend 56.40% <100.00%> (+0.02%) ⬆️
judicial-system-api 18.12% <ø> (ø)
judicial-system-audit-trail 68.27% <100.00%> (+0.17%) ⬆️
judicial-system-message 66.53% <100.00%> (+0.06%) ⬆️
judicial-system-message-handler 66.39% <100.00%> (+0.02%) ⬆️
judicial-system-scheduler 58.48% <100.00%> (+0.10%) ⬆️
license-api 42.89% <33.33%> (-0.37%) ⬇️
nest-config 77.87% <100.00%> (+0.13%) ⬆️
nest-feature-flags 52.24% <100.00%> (+0.59%) ⬆️
nova-sms 61.90% <100.00%> (+0.09%) ⬆️
portals-admin-regulations-admin 2.03% <ø> (ø)
portals-core 16.27% <ø> (ø)
services-auth-admin-api 51.09% <100.00%> (+<0.01%) ⬆️
services-auth-delegation-api 61.57% <100.00%> (+<0.01%) ⬆️
services-auth-ids-api 54.62% <100.00%> (+0.01%) ⬆️
services-auth-personal-representative 48.32% <100.00%> (+0.01%) ⬆️
services-auth-personal-representative-public 44.18% <100.00%> (+<0.01%) ⬆️
services-auth-public-api 51.05% <100.00%> (+0.01%) ⬆️
services-endorsements-api 54.84% <100.00%> (+0.01%) ⬆️
services-search-indexer 12.64% <ø> (ø)
services-sessions 65.51% <100.00%> (+0.01%) ⬆️
services-university-gateway 48.45% <100.00%> (+0.05%) ⬆️
services-user-notification 47.94% <100.00%> (+<0.01%) ⬆️
services-user-profile 62.29% <100.00%> (+<0.01%) ⬆️
web 1.89% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Coverage Δ
...ins/license-service/src/lib/licenceService.type.ts 100.00% <ø> (ø)
...s/license-service/src/lib/licenseService.module.ts 0.00% <ø> (ø)
.../license-service/src/lib/licenseService.service.ts 0.00% <ø> (ø)
...ients/license-client/src/lib/licenseClient.type.ts 100.00% <ø> (ø)
libs/feature-flags/src/lib/features.ts 100.00% <100.00%> (ø)
...rtal/core/src/components/ActionCard/ActionCard.tsx 5.26% <ø> (+0.19%) ⬆️
...al/core/src/components/IntroHeader/IntroHeader.tsx 0.00% <ø> (ø)
.../core/src/components/UserInfoLine/UserInfoLine.tsx 3.22% <ø> (ø)
libs/service-portal/core/src/lib/messages.ts 50.00% <ø> (ø)
...nts/license-client/src/lib/licenseClient.module.ts 39.47% <33.33%> (-0.53%) ⬇️
... and 1 more

... and 4 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4e9ddf3...b2a324d. Read the comment docs.

@thorkellmani thorkellmani added the deploy-feature Deploys features to dev label Jun 25, 2024
Copy link
Contributor

github-actions bot commented Jun 25, 2024

Affected services are: air-discount-scheme-api,air-discount-scheme-backend,api,application-system-api,download-service,financial-aid-api,financial-aid-backend,financial-aid-open-api,judicial-system-api,judicial-system-digital-mailbox-api,judicial-system-backend,judicial-system-message-handler,judicial-system-robot-api,judicial-system-scheduler,judicial-system-xrd-api,license-api,regulations-admin-backend,services-auth-admin-api,services-auth-ids-api,services-auth-delegation-api,services-auth-personal-representative,services-auth-personal-representative-public,services-auth-public-api,services-endorsements-api,services-search-indexer,services-sessions,services-university-gateway,services-user-notification,services-user-profile,air-discount-scheme-web,skilavottord-web,web,application-system-form,island-ui-storybook,portals-admin,service-portal,system-e2e,

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 9

Outside diff range, codebase verification and nitpick comments (9)
libs/api/domains/license-service/src/lib/dto/GetGenericLicense.input.ts (1)

9-9: Specify the field type explicitly in the @Field decorator.

The licenseId field in the GetGenericLicenseInput class does not have an explicit type specified in the @Field decorator. Consider adding the type to improve clarity and maintainability, similar to how the licenseType field is defined.

  • File: libs/api/domains/license-service/src/lib/dto/GetGenericLicense.input.ts
  • Line: 9
Analysis chain

Consider specifying the field type explicitly in the @Field decorator.

Removing the explicit type from the @Field decorator might lead to ambiguity in the GraphQL schema, especially if the type inference does not align with the intended schema. Explicitly specifying the type can improve clarity and maintainability.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the GraphQL schema for the `GetGenericLicenseInput` class.

# Test: Check the generated schema for the `GetGenericLicenseInput` class. Expect: `licenseId` field should have the correct type.
rg --type graphql 'GetGenericLicenseInput' -A 5

Length of output: 79


Script:

#!/bin/bash
# Search for the definition of the `GetGenericLicenseInput` class in TypeScript files
ast-grep --lang typescript --pattern $'class GetGenericLicenseInput { $$$ }'

Length of output: 746

libs/api/domains/license-service/src/lib/resolvers/pkPass.resolver.ts (1)

75-86: Deprecation of verifyPkPass is not documented.

The search did not reveal any documentation or comments providing deprecation guidance for verifyPkPass. It is important to document this deprecation and guide users to the new verifyLicenseBarcode method.

  • Consider adding a deprecation notice in relevant documentation files.
  • Provide guidance on transitioning to verifyLicenseBarcode.
Analysis chain

verifyPkPass mutation is correctly deprecated, but verify deprecation documentation.

The mutation is marked as deprecated. Ensure that documentation reflects this change and guides users to verifyLicenseBarcode.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify deprecation documentation for `verifyPkPass`.

# Test: Search for documentation related to `verifyPkPass`. Expect: Clear deprecation notice and guidance for alternatives.
rg --type markdown --type yaml 'verifyPkPass'

Length of output: 45


Script:

#!/bin/bash
# Broaden the search to find any mention of `verifyPkPass` in the codebase, including comments or other documentation files.
rg 'verifyPkPass'

Length of output: 5348

libs/service-portal/licenses/src/components/ExpandableLine/ExpandableLine.tsx (1)

17-20: Inconsistent import paths for GenericLicenseType.

The GenericLicenseType is imported from both @island.is/api/schema and @island.is/service-portal/graphql across different files. To maintain clarity and prevent potential issues, ensure that the import path is consistent throughout the codebase.

  • Files importing from @island.is/api/schema:

    • libs/service-portal/licenses/src/utils/mapPaths.ts
    • libs/service-portal/licenses/src/components/ExpandableLine/ExpandableLine.tsx
    • libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.tsx
    • libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.tsx
  • Files importing from @island.is/service-portal/graphql:

    • libs/service-portal/licenses/src/screens/v1/LicensesOverview/UserLicenses.tsx
    • libs/service-portal/licenses/src/screens/v1/LicensesOverview/index.tsx

Please ensure the import path is unified across all relevant files.

Analysis chain

Consolidate imports for clarity.

The import of GenericLicenseType from @island.is/api/schema instead of @island.is/service-portal/graphql suggests a consolidation of schema definitions. This change can improve clarity by centralizing related types. Ensure that this change is consistent across the codebase.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify the usage of `GenericLicenseType` across the codebase to ensure consistency with the new import path.
rg --type ts 'GenericLicenseType' --context 5

Length of output: 86376

libs/api/domains/license-service/src/lib/mappers/drivingLicenseMapper.ts (2)

23-27: Handle Empty Payload Gracefully.

The method returns an empty array if the payload is not provided. While this is a simple check, consider logging this scenario for better traceability in debugging.

+ console.warn('parsePayload called with empty payload');

Line range hint 39-134: Refactor Data Mapping for Clarity and Performance.

The data mapping logic is comprehensive but could benefit from further refactoring for readability and performance. Consider extracting repeated logic into helper functions.

function createLicenseDataField(type, label, value, tag) {
  return { type, label, value, tag };
}

// Usage example
{
  type: GenericLicenseDataFieldType.Value,
  label: formatMessage(m.publisher),
  value: 'Ríkislögreglustjóri',
}
libs/api/domains/license-service/src/lib/mappers/ehicCardMapper.ts (1)

22-26: Handle Empty Payload Gracefully.

The method returns an empty array if the payload is not provided. While this is a simple check, consider logging this scenario for better traceability in debugging.

+ console.warn('parsePayload called with empty payload');
libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx (1)

34-46: Handle empty or undefined fields gracefully.

The early return for empty fields is good practice, but consider logging or handling this scenario to provide feedback for debugging.

if (!fields || fields.length === 0) {
  console.warn('LicenseDataFields: No fields provided.');
  return null;
}
libs/api/domains/license-service/src/lib/mappers/passportMapper.ts (1)

46-66: Improve handling of empty payloads.

The handling of empty payloads is straightforward, but consider logging this scenario for better debugging and monitoring.

if (!payload.length) {
  console.warn('PassportMapper: No payload provided.');
  return [emptyPassport];
}
libs/service-portal/core/src/components/ActionCard/ActionCard.tsx (1)

322-327: Consider maintaining default color consistency.

The conditional logic for borderColor defaults to blue200 for non-specified cases. Ensure this aligns with the intended design.

-  : 'blue200')
+  : 'blue100')
Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 28f6056 and 3c53d29.

Files selected for processing (81)
  • apps/service-portal/src/components/Notifications/NotificationMenu.tsx (1 hunks)
  • apps/service-portal/src/components/Sidemenu/Sidemenu.tsx (1 hunks)
  • apps/system-e2e/src/tests/islandis/service-portal/acceptance/mocks/licenses.mock.ts (4 hunks)
  • libs/api/domains/license-service/project.json (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/CreateBarcodeResult.dto.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericLicense.dto.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericLicenseCollection.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericLicenseDataField.dto.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericLicenseError.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericLicenseProvider.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericPkPass.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericPkPassQrCode.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericPkPassVerification.dto.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericUserLicense.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericUserLicenseAlert.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetaLinks.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetaTag.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetadata.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetadataDescription.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/GetGenericLicense.input.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/Payload.dto.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/dto/UserLicensesResponse.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/VerifyLicenseBarcodeInput.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/dto/VerifyPkPass.input.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/licenceService.type.ts (4 hunks)
  • libs/api/domains/license-service/src/lib/licenseService.constants.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/licenseService.module.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/licenseService.service.ts (5 hunks)
  • libs/api/domains/license-service/src/lib/mappers/adrLicenseMapper.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/mappers/disabilityLicenseMapper.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/mappers/drivingLicenseMapper.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/mappers/ehicCardMapper.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/mappers/firearmLicenseMapper.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/mappers/huntingLicenseMapper.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/mappers/licenseMapper.module.ts (3 hunks)
  • libs/api/domains/license-service/src/lib/mappers/machineLicenseMapper.ts (2 hunks)
  • libs/api/domains/license-service/src/lib/mappers/pCardMapper.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/mappers/passportMapper.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/messages.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/providers/licenseMapper.provider.ts (4 hunks)
  • libs/api/domains/license-service/src/lib/resolvers/licenseCollection.resolver.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/resolvers/pkPass.resolver.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/resolvers/provider.resolver.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/resolvers/userLicense.resolver.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/utils/capitalize.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/utils/expiryTag.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/utils/formatDate.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/utils/index.ts (1 hunks)
  • libs/api/mocks/src/domains/license-service/factories.ts (2 hunks)
  • libs/clients/license-client/src/lib/clients/passport-client/passportClient.type.ts (1 hunks)
  • libs/clients/license-client/src/lib/clients/passport-client/passportsClient.service.ts (1 hunks)
  • libs/clients/license-client/src/lib/licenseClient.module.ts (5 hunks)
  • libs/clients/license-client/src/lib/licenseClient.type.ts (2 hunks)
  • libs/feature-flags/src/lib/features.ts (1 hunks)
  • libs/service-portal/assets/src/screens/VehicleMileage/VehicleMileage.tsx (1 hunks)
  • libs/service-portal/core/src/components/ActionCard/ActionCard.tsx (5 hunks)
  • libs/service-portal/core/src/components/IntroHeader/IntroHeader.tsx (3 hunks)
  • libs/service-portal/core/src/components/UserInfoLine/UserInfoLine.tsx (1 hunks)
  • libs/service-portal/core/src/lib/messages.ts (1 hunks)
  • libs/service-portal/licenses/codegen.yml (1 hunks)
  • libs/service-portal/licenses/project.json (1 hunks)
  • libs/service-portal/licenses/src/components/ExpandableLine/ExpandableLine.tsx (1 hunks)
  • libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx (1 hunks)
  • libs/service-portal/licenses/src/lib/constants.ts (1 hunks)
  • libs/service-portal/licenses/src/lib/messages.ts (1 hunks)
  • libs/service-portal/licenses/src/lib/navigation.ts (1 hunks)
  • libs/service-portal/licenses/src/lib/paths.ts (1 hunks)
  • libs/service-portal/licenses/src/module.tsx (2 hunks)
  • libs/service-portal/licenses/src/screens/LicensesOverview.tsx (1 hunks)
  • libs/service-portal/licenses/src/screens/v1/LicenseDetail/LicenseDetail.css.ts (1 hunks)
  • libs/service-portal/licenses/src/screens/v1/LicenseDetail/LicenseDetail.tsx (8 hunks)
  • libs/service-portal/licenses/src/screens/v1/LicensesOverview/ChildrenLicenses.tsx (1 hunks)
  • libs/service-portal/licenses/src/screens/v1/LicensesOverview/UserLicenses.tsx (1 hunks)
  • libs/service-portal/licenses/src/screens/v1/LicensesOverview/index.tsx (2 hunks)
  • libs/service-portal/licenses/src/screens/v1/PassportDetail/PassportDetail.tsx (2 hunks)
  • libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.graphql (1 hunks)
  • libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.tsx (1 hunks)
  • libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.graphql (1 hunks)
  • libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.tsx (1 hunks)
  • libs/service-portal/licenses/src/utils/mapPaths.ts (1 hunks)
  • libs/service-portal/occupational-licenses/src/screens/v2/OccupationalLicensesDetail/OccupationalLicensesDetail.tsx (1 hunks)
Files skipped from review due to trivial changes (10)
  • apps/service-portal/src/components/Sidemenu/Sidemenu.tsx
  • libs/api/domains/license-service/src/lib/dto/GenericPkPassVerification.dto.ts
  • libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetaLinks.dto.ts
  • libs/api/domains/license-service/src/lib/utils/formatDate.ts
  • libs/api/domains/license-service/src/lib/utils/index.ts
  • libs/service-portal/licenses/src/screens/v1/LicensesOverview/ChildrenLicenses.tsx
  • libs/service-portal/licenses/src/screens/v1/LicensesOverview/UserLicenses.tsx
  • libs/service-portal/licenses/src/screens/v1/LicensesOverview/index.tsx
  • libs/service-portal/licenses/src/screens/v1/PassportDetail/PassportDetail.tsx
  • libs/service-portal/occupational-licenses/src/screens/v2/OccupationalLicensesDetail/OccupationalLicensesDetail.tsx
Additional context used
Path-based instructions (71)
libs/api/domains/license-service/src/lib/dto/VerifyPkPass.input.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericPkPass.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericPkPassQrCode.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/VerifyLicenseBarcodeInput.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/clients/license-client/src/lib/clients/passport-client/passportClient.type.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GetGenericLicense.input.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/CreateBarcodeResult.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/lib/constants.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/utils/capitalize.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericLicenseCollection.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericUserLicenseAlert.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/codegen.yml (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/UserLicensesResponse.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetadataDescription.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/Payload.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericLicenseProvider.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/lib/paths.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/lib/navigation.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/project.json (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericUserLicense.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericLicenseError.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/project.json (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/licenseService.module.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetaTag.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.graphql (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/screens/LicensesOverview.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/licenseMapper.module.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/utils/expiryTag.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericLicenseDataField.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericLicense.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/module.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetadata.dto.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/screens/v1/LicenseDetail/LicenseDetail.css.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/resolvers/provider.resolver.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/clients/license-client/src/lib/clients/passport-client/passportsClient.service.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/utils/mapPaths.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.graphql (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/resolvers/userLicense.resolver.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/providers/licenseMapper.provider.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/licenseService.constants.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/resolvers/licenseCollection.resolver.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/core/src/components/IntroHeader/IntroHeader.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/resolvers/pkPass.resolver.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/clients/license-client/src/lib/licenseClient.module.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/mocks/src/domains/license-service/factories.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/disabilityLicenseMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/licenceService.type.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/pCardMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/adrLicenseMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/core/src/components/UserInfoLine/UserInfoLine.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
apps/service-portal/src/components/Notifications/NotificationMenu.tsx (1)

Pattern apps/**/*: "Confirm that the code adheres to the following:

  • NextJS best practices, including file structure, API routes, and static generation methods.
  • Efficient state management and server-side rendering techniques.
  • Optimal use of TypeScript for component and utility type safety."
libs/service-portal/licenses/src/components/ExpandableLine/ExpandableLine.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/feature-flags/src/lib/features.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/machineLicenseMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/huntingLicenseMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/clients/license-client/src/lib/licenseClient.type.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/drivingLicenseMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/ehicCardMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/firearmLicenseMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/mappers/passportMapper.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/lib/messages.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/core/src/components/ActionCard/ActionCard.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/license-service/src/lib/messages.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/assets/src/screens/VehicleMileage/VehicleMileage.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/licenses/src/screens/v1/LicenseDetail/LicenseDetail.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
apps/system-e2e/src/tests/islandis/service-portal/acceptance/mocks/licenses.mock.ts (1)

Pattern apps/**/*: "Confirm that the code adheres to the following:

  • NextJS best practices, including file structure, API routes, and static generation methods.
  • Efficient state management and server-side rendering techniques.
  • Optimal use of TypeScript for component and utility type safety."
libs/api/domains/license-service/src/lib/licenseService.service.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/service-portal/core/src/lib/messages.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
Biome
libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.tsx

[error] 71-94: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


[error] 122-143: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

Additional comments not posted (130)
libs/api/domains/license-service/src/lib/dto/VerifyPkPass.input.ts (1)

5-5: Consider specifying the field type explicitly in the @Field decorator.

Removing the explicit type can lead to ambiguity in the GraphQL schema. Specifying the type explicitly helps maintain clarity and ensures consistent type-checking across the API.

Verification successful

Specify the field type explicitly in the @Field decorator

To ensure clarity and consistency in your GraphQL schema, consider specifying the type explicitly in the @Field decorator for the data field in the VerifyPkPassInput class.

  • File: libs/api/domains/license-service/src/lib/dto/VerifyPkPass.input.ts
  • Line: 5

This change will help prevent any ambiguity during schema generation.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the `data` field in `VerifyPkPassInput` class is used correctly in the codebase.

# Test: Search for the usage of `VerifyPkPassInput`. Expect: Correct handling of `data` as a string.
rg --type typescript -A 5 $'VerifyPkPassInput'

Length of output: 80


Script:

#!/bin/bash
# Description: Verify if the `data` field in `VerifyPkPassInput` class is used correctly in the codebase.

# Test: Search for the usage of `VerifyPkPassInput`. Expect: Correct handling of `data` as a string.
rg 'VerifyPkPassInput' -A 5

Length of output: 2474

libs/api/domains/license-service/src/lib/dto/GenericPkPass.dto.ts (1)

5-5: Consider specifying the field type explicitly in the @Field decorator.

Removing the explicit type can lead to ambiguity in the GraphQL schema. Specifying the type explicitly helps maintain clarity and ensures consistent type-checking across the API.

Verification successful

Specify the field type explicitly in the @Field decorator

The pkpassUrl field in the GenericPkPass class is currently defined without an explicit type in the @Field decorator. To ensure clarity and consistent type-checking in the GraphQL schema, it is recommended to specify the field type explicitly as a string. This will prevent ambiguity and improve the maintainability of the code.

  • libs/api/domains/license-service/src/lib/dto/GenericPkPass.dto.ts: Add an explicit type to the @Field decorator for pkpassUrl.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the `pkpassUrl` field in `GenericPkPass` class is used correctly in the codebase.

# Test: Search for the usage of `GenericPkPass`. Expect: Correct handling of `pkpassUrl` as a string.
rg --type typescript -A 5 $'GenericPkPass'

Length of output: 76


Script:

#!/bin/bash
# Description: Verify if the `pkpassUrl` field in `GenericPkPass` class is used correctly in the codebase.

# Test: Search for the usage of `GenericPkPass`. Expect: Correct handling of `pkpassUrl` as a string.
rg --type ts -A 5 'GenericPkPass'

Length of output: 7968

libs/api/domains/license-service/src/lib/dto/GenericPkPassQrCode.dto.ts (1)

5-5: Consider specifying the field type explicitly in the @Field decorator.

Removing the explicit type can lead to ambiguity in the GraphQL schema. Specifying the type explicitly helps maintain clarity and ensures consistent type-checking across the API.

Verification successful

Specify the field type explicitly in the @Field decorator

To maintain clarity and ensure consistent type-checking across the GraphQL schema, consider specifying the field type explicitly in the @Field decorator for the pkpassQRCode field in the GenericPkPassQrCode class.

  • File: libs/api/domains/license-service/src/lib/dto/GenericPkPassQrCode.dto.ts
  • Line: 5
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the `pkpassQRCode` field in `GenericPkPassQrCode` class is used correctly in the codebase.

# Test: Search for the usage of `GenericPkPassQrCode`. Expect: Correct handling of `pkpassQRCode` as a string.
rg --type typescript -A 5 $'GenericPkPassQrCode'

Length of output: 82


Script:

#!/bin/bash
# Description: Verify if the `pkpassQRCode` field in `GenericPkPassQrCode` class is used correctly in the codebase.

# Test: Search for the usage of `GenericPkPassQrCode`. Expect: Correct handling of `pkpassQRCode` as a string.
rg --glob '*.ts' -A 5 'GenericPkPassQrCode'

Length of output: 2415

libs/api/domains/license-service/src/lib/dto/VerifyLicenseBarcodeInput.ts (1)

5-5: Consider specifying the field type explicitly in the @Field decorator.

Removing the explicit type from the @Field decorator might lead to ambiguity in the GraphQL schema, especially if the type inference does not align with the intended schema. Explicitly specifying the type can improve clarity and maintainability.

Verification successful

Consider specifying the field type explicitly in the @Field decorator.

The data field in the VerifyLicenseBarcodeInput class currently relies on TypeScript's type inference. Specifying the type explicitly in the @Field decorator could help avoid potential ambiguities in the GraphQL schema and enhance clarity.

  • @Field(() => String) for the data field.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the GraphQL schema for the `VerifyLicenseBarcodeInput` class.

# Test: Check the generated schema for the `VerifyLicenseBarcodeInput` class. Expect: `data` field should have the correct type.
rg --type graphql 'VerifyLicenseBarcodeInput' -A 5

Length of output: 82


Script:

#!/bin/bash
# Search for the definition of the `VerifyLicenseBarcodeInput` class and its usage of the `@Field` decorator.
ast-grep --lang typescript --pattern $'class VerifyLicenseBarcodeInput {
  $$$
  @Field($_)
  $$$
}'

Length of output: 101


Script:

#!/bin/bash
# Search for the `VerifyLicenseBarcodeInput.ts` file and display its contents.
fd 'VerifyLicenseBarcodeInput.ts' --exec cat

Length of output: 206

libs/clients/license-client/src/lib/clients/passport-client/passportClient.type.ts (1)

1-9: The interface Passports is well-structured and appropriate.

The use of imported types IdentityDocument and IdentityDocumentChild aligns with the guidelines for reusability and TypeScript usage. Ensure that tree-shaking and bundling practices are effectively applied.

libs/api/domains/license-service/src/lib/dto/CreateBarcodeResult.dto.ts (1)

Line range hint 1-10:
Enhance type specificity with Int.

The change from Number to Int for the expiresIn field in the GraphQL schema improves type specificity and aligns with expected data formats for expiration times.

libs/service-portal/licenses/src/lib/constants.ts (1)

4-13: Introduce LicensePathType for enhanced type safety.

The new LicensePathType provides a clear structure for managing license paths, improving type safety and reducing potential errors associated with arbitrary strings.

libs/api/domains/license-service/src/lib/utils/capitalize.ts (1)

14-17: Ensure consistent handling of empty strings in capitalize.

The capitalize function currently returns an empty string for non-string inputs, which is fine, but ensure this behavior is consistent with how other parts of the codebase handle such cases.

libs/api/domains/license-service/src/lib/dto/GenericLicenseCollection.dto.ts (1)

1-12: Correct implementation of GraphQL ObjectType.

The LicenseCollection class is correctly defined with appropriate fields and decorators. The use of @Field with nullable options is well-suited for handling optional data.

libs/api/domains/license-service/src/lib/dto/GenericUserLicenseAlert.dto.ts (1)

1-18: Correct implementation of GraphQL ObjectType and EnumType registration.

The GenericUserLicenseAlert class and the AlertType enum are correctly defined and registered. The use of @Field with default and nullable options is appropriate for handling optional and default data.

libs/service-portal/licenses/codegen.yml (1)

1-19: Correct GraphQL codegen configuration.

The configuration is correctly set up for generating TypeScript types and Apollo React hooks. The use of prettier in hooks ensures consistent formatting across generated files.

libs/api/domains/license-service/src/lib/dto/UserLicensesResponse.dto.ts (1)

6-9: Deprecation of nationalId field.

The nationalId field is now marked as deprecated with the reason 'Unnecessary'. Ensure that any usage of this field in the codebase is updated or removed to align with this change.

libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetadataDescription.dto.ts (1)

1-17: New GraphQL Object Type Definition Approved.

The GenericUserLicenseMetadataDescription class is well-defined, with appropriate use of nullable fields and default values. This structure enhances the clarity and usability of the GraphQL schema.

libs/api/domains/license-service/src/lib/dto/Payload.dto.ts (1)

13-17: Change in rawData field type.

The rawData field has been changed from an object to a string, removing the @IsObject() validation. Ensure that this change does not negatively impact data processing and that JSON parsing is handled correctly elsewhere in the code.

Verification successful

Change in rawData field type is handled correctly.

The rawData field is being properly handled as a JSON string in the codebase, with instances of JSON.parse ensuring correct parsing where necessary.

  • apps/native/app/src/screens/wallet-pass/wallet-pass.tsx: rawData is parsed using JSON.parse.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify handling of `rawData` as a string in the codebase.

# Test: Search for parsing or manipulation of `rawData`. Expect: Proper JSON handling.
rg --type typescript 'rawData'

Length of output: 65


Script:

#!/bin/bash
# Corrected script to verify handling of `rawData` as a string in the codebase.

# Test: Search for parsing or manipulation of `rawData`. Expect: Proper JSON handling.
rg --type ts 'rawData'

Length of output: 6043

libs/api/domains/license-service/src/lib/dto/GenericLicenseProvider.dto.ts (1)

15-26: LGTM! Verify the usage of new fields.

The additions of referenceId, providerName, and providerLogo are well-structured and enhance the data model. Ensure these fields are utilized correctly across the codebase.

Verification successful

Fields are utilized correctly across the codebase. The fields referenceId, providerName, and providerLogo are integrated into multiple files, confirming their proper usage in the codebase.

  • referenceId is used in resolvers and constants within the license-service domain.
  • providerName appears in translation utilities and service files.
  • providerLogo is utilized in the provider.resolver.ts file.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of new fields in the codebase.

# Test: Search for the usage of `referenceId`, `providerName`, and `providerLogo`.
rg --type typescript 'referenceId|providerName|providerLogo'

Length of output: 97


Script:

#!/bin/bash
# Description: Verify the usage of new fields in the codebase.

# Test: Search for the usage of `referenceId`, `providerName`, and `providerLogo` in TypeScript files.
rg 'referenceId|providerName|providerLogo' --glob '*.ts'

Length of output: 7713

libs/service-portal/licenses/src/lib/paths.ts (1)

16-16: LGTM! Verify the usage of the new path.

The addition of LicensesDetailV2 in the LicensePaths enum provides an alternative URL structure. Ensure this path is integrated correctly in the routing logic.

Verification successful

LicensesDetailV2 Path Usage Verified

The LicensesDetailV2 path is correctly integrated into the routing logic, as evidenced by its usage in the following files:

  • libs/service-portal/licenses/src/module.tsx
  • libs/service-portal/licenses/src/lib/navigation.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of the new path `LicensesDetailV2`.

# Test: Search for the usage of `LicensesDetailV2` in the codebase.
rg --type typescript 'LicensesDetailV2'

Length of output: 74


Script:

#!/bin/bash
# Description: Verify the usage of the new path `LicensesDetailV2`.

# Test: Search for the usage of `LicensesDetailV2` in the codebase without specifying a file type.
rg 'LicensesDetailV2'

Length of output: 293

libs/service-portal/licenses/src/lib/navigation.ts (1)

16-19: LGTM! Verify the usage of the new navigation item.

The addition of a new navigation item in licenseNavigation enriches the navigation structure. Ensure it is used correctly in the UI logic.

Verification successful

The new navigation item is integrated into the module setup.

The navigation item LicensePaths.LicensesDetailV2 is referenced in both the navigation.ts and module.tsx files, indicating it is correctly integrated into the UI logic. No further action is needed.

  • libs/service-portal/licenses/src/module.tsx
  • libs/service-portal/licenses/src/lib/navigation.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of the new navigation item in the codebase.

# Test: Search for the usage of `LicensePaths.LicensesDetailV2` in navigation logic.
rg --type typescript 'LicensePaths.LicensesDetailV2'

Length of output: 87


Script:

#!/bin/bash
# Description: Verify the usage of the new navigation item in the codebase.

# Test: Search for the usage of `LicensePaths.LicensesDetailV2` in navigation logic.
rg --type ts 'LicensePaths.LicensesDetailV2'

Length of output: 225

libs/api/domains/license-service/project.json (1)

18-21: Verify the extract-strings command configuration.

The addition of the extract-strings target enhances localization by automating string extraction. Ensure that the path to tsconfig.lib.json and messages.ts is correct and that the script performs as expected.

Verification successful

Paths Verified for extract-strings Command Configuration

The paths to tsconfig.lib.json, extract.ts, and messages.ts are correct and exist in the specified locations. This confirms that the configuration for the extract-strings command is accurate in terms of file paths.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence of the tsconfig and script files for the `extract-strings` command.

# Test: Check if the tsconfig and script files exist. Expect: Both files should exist.
fd --type f 'tsconfig.lib.json' libs/localization
fd --type f 'extract' libs/localization/scripts
fd --type f 'messages.ts' libs/api/domains/license-service/src/lib

Length of output: 332

libs/api/domains/license-service/src/lib/dto/GenericUserLicense.dto.ts (1)

13-17: Ensure the new field isOwnerChildOfUser is integrated correctly.

The addition of the isOwnerChildOfUser field enhances the data model. Verify that this field is correctly integrated into the system and that any logic dependent on this field is updated accordingly.

Verification successful

Field isOwnerChildOfUser is integrated correctly.

The field isOwnerChildOfUser is utilized in the codebase, specifically in the LicensesOverview.tsx for filtering and conditional logic, and is set in licenseService.service.ts based on a condition. This confirms that the field is integrated and used appropriately in the system.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of the new field `isOwnerChildOfUser` in the codebase.

# Test: Search for the usage of `isOwnerChildOfUser`. Expect: The field should be used or referenced appropriately.
rg --type ts 'isOwnerChildOfUser'

Length of output: 862

libs/api/domains/license-service/src/lib/dto/GenericLicenseError.dto.ts (1)

6-24: Review the design and integration of GenericLicenseError.

The new GenericLicenseError class encapsulates error-related information. Ensure that this class is integrated into the error handling logic and that it aligns with existing patterns for error representation.

Verification successful

Integration of GenericLicenseError is well-established.

The GenericLicenseError class is effectively integrated into the codebase, being used in service, resolver, and UI components to handle license-related errors. This aligns with existing error handling patterns.

  • Files using GenericLicenseError:
    • libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.tsx
    • libs/api/domains/license-service/src/lib/licenseService.service.ts
    • libs/api/domains/license-service/src/lib/resolvers/userLicense.resolver.ts
    • libs/api/domains/license-service/src/lib/licenceService.type.ts
    • libs/api/domains/license-service/src/lib/dto/GenericLicenseCollection.dto.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the integration of the `GenericLicenseError` class in the codebase.

# Test: Search for the usage of `GenericLicenseError`. Expect: The class should be used in error handling logic.
rg --type ts 'GenericLicenseError'

Length of output: 1519

libs/service-portal/licenses/project.json (1)

24-29: LGTM! Verify the integration of the new GraphQL code generation executor.

The addition of the codegen/frontend-client executor for GraphQL code generation enhances type safety and maintainability.

Ensure that the code generation command is correctly integrated and produces the expected TypeScript files.

libs/api/domains/license-service/src/lib/licenseService.module.ts (2)

5-11: Update in module dependencies and service responsibilities.

The import of FeatureFlagModule and the removal of CmsModule and CacheModule indicate a shift towards feature flag management. The consolidation of services into LicenseService simplifies service management.


21-29: Expanded resolver capabilities.

The addition of new resolvers (LicenseCollectionResolver, PkPassResolver, UserLicenseResolver, LicenseProviderResolver) enhances the module's ability to handle specific license-related queries.

Verify that these resolvers are correctly implemented and integrated within the module.

Verification successful

All resolvers are correctly implemented and integrated.

The resolvers LicenseCollectionResolver, PkPassResolver, UserLicenseResolver, and LicenseProviderResolver are all implemented in the codebase, confirming their integration within the module. No issues found.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the implementation and integration of new resolvers.

# Test: Search for the resolver implementations and ensure they are correctly defined.
ast-grep --lang typescript --pattern $'class $_ { $$$ }' | rg 'License(Collection|PkPass|UserLicense|Provider)Resolver'

Length of output: 359


Script:

#!/bin/bash
# Description: Verify the implementation of PkPassResolver and UserLicenseResolver.

# Test: Search for the specific resolver implementations.
ast-grep --lang typescript --pattern $'class $_ { $$$ }' | rg 'PkPassResolver|UserLicenseResolver'

Length of output: 315

libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetaTag.dto.ts (1)

1-36: New GraphQL object type definition.

The GenericUserLicenseMetaTag class and its fields are well-defined using NestJS GraphQL decorators. The enums are registered appropriately, enhancing type safety.

libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.graphql (1)

1-64: Ensure completeness and efficiency of the GraphQL query.

The GenericLicenseCollection query is well-structured, fetching comprehensive data about licenses and associated errors. However, consider the following:

  1. Efficiency: Ensure that only necessary fields are fetched to avoid over-fetching, which can impact performance.
  2. Error Handling: The errors field is included, which is good for handling potential issues. Ensure that the front-end properly processes these errors to enhance user experience.
  3. Type Safety: Verify that the types used in the query (GetGenericLicensesInput, etc.) align with the backend schema to prevent runtime errors.
Verification successful

The GenericLicenseCollection query is efficiently handled in the code.

The LicensesOverview.tsx component manages the loading and error states effectively, ensuring a smooth user experience. It provides appropriate feedback for different scenarios, such as loading, errors, and absence of data, which aligns with the review comment's suggestions.

  • Loading State: Displays a CardLoader when data is being fetched.
  • Error Handling: Uses a Problem component to display errors when they occur.
  • No Data Scenario: Provides a user-friendly message when no licenses or errors are present.

This implementation ensures completeness and efficiency in handling the GraphQL query results.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of `GenericLicenseCollection` query in the codebase.

# Test: Search for the query usage. Expect: Correct handling of fetched data and errors.
rg --type js --type ts 'GenericLicenseCollection'

Length of output: 771


Script:

#!/bin/bash
# Extract relevant sections from LicensesOverview.tsx to verify data and error handling.
rg --type js --type ts --context 10 'useGenericLicenseCollectionQuery' libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.tsx

Length of output: 1481


Script:

#!/bin/bash
# Extract more context around the usage of loading and error in LicensesOverview.tsx.
rg --type js --type ts --context 20 'loading|error' libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.tsx

Length of output: 3714

libs/service-portal/licenses/src/screens/LicensesOverview.tsx (1)

1-42: Validate feature flag usage and component logic.

The Overview component effectively uses feature flags to switch between versions of the LicensesOverview. Consider the following:

  1. Asynchronous Logic: The use of an async function within useEffect is appropriate here. Ensure that any potential errors in fetching the feature flag are handled to avoid rendering issues.
  2. Initial State: The initial state of 'initial' is used to display a loader. Ensure that this state transition is smooth and does not cause flickering or layout shifts.
  3. Type Safety: The VersionType is well-defined. Ensure that any changes to the feature flag logic are reflected in this type to maintain type safety.
libs/api/domains/license-service/src/lib/mappers/licenseMapper.module.ts (1)

10-11: Review module structure and dependency management.

The LicenseMapperModule has been updated to include the PassportMapper and CmsTranslationsModule. Consider the following:

  1. Dependency Integration: The addition of CmsTranslationsModule in the imports array suggests that this module will utilize translation functionalities. Ensure that these dependencies are correctly configured and do not conflict with existing ones.
  2. Provider and Export Management: The inclusion of PassportMapper in both providers and exports arrays is appropriate. Verify that this mapper is utilized where needed and does not introduce redundant dependencies.
  3. Scalability: As more mappers are added, consider organizing them into separate files or directories if the list becomes too large, to enhance maintainability.

Also applies to: 14-35

libs/api/domains/license-service/src/lib/utils/expiryTag.ts (1)

1-39: LGTM! Verify reusability and TypeScript practices.

The expiryTag function is well-implemented, handling all necessary conditions for generating the tag. The imports are appropriate, and the logic is clear and concise.

However, ensure that this utility function is reusable across different NextJS apps and adheres to TypeScript practices for defining and exporting types.

Verification successful

Reusability and TypeScript Practices Verified

The expiryTag function is correctly exported and re-exported, allowing for reuse across different modules. The GenericUserLicenseMetaTag type is well-defined and used in multiple files, adhering to TypeScript best practices. No issues found regarding reusability or TypeScript conventions.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify reusability and TypeScript usage of expiryTag function.

# Test: Check if expiryTag is exported and used across different modules.
rg --type ts 'export.*expiryTag' -A 5

# Test: Ensure TypeScript types are defined and exported correctly.
rg --type ts 'GenericUserLicenseMetaTag' -A 5

Length of output: 6917

libs/api/domains/license-service/src/lib/dto/GenericLicenseDataField.dto.ts (2)

26-27: Deprecation notice for description field is appropriate.

Marking the description field as deprecated with a clear reason is a good practice. Ensure that any dependencies on this field are updated accordingly.


31-35: Addition of tag field enhances data model.

The new tag field allows for better categorization of license data fields. Ensure that this addition is documented and integrated into the system where necessary.

Verify that the GenericUserLicenseMetaTag type is defined and exported correctly for effective TypeScript usage.

Verification successful

GenericUserLicenseMetaTag is correctly defined and exported.

The GenericUserLicenseMetaTag class is properly defined and exported in the codebase, ensuring it can be effectively utilized in TypeScript. No further action is needed.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the definition and export of GenericUserLicenseMetaTag type.

# Test: Ensure GenericUserLicenseMetaTag is defined and exported.
rg --type ts 'export.*GenericUserLicenseMetaTag' -A 5

Length of output: 638

libs/api/domains/license-service/src/lib/dto/GenericLicense.dto.ts (1)

42-48: Verify impact of timeout field changes.

The timeout field has been made optional and marked with a deprecation reason. Ensure that this change does not affect the functionality where this field is used.

Additionally, confirm that the removal of the name field does not break any dependencies or expected data structures.

libs/service-portal/licenses/src/module.tsx (2)

11-14: LGTM: Lazy loading imports.

The changes to import paths for LicenseDetail and the addition of LicenseDetailV2 are correctly implemented using lazy loading.


34-38: LGTM: Routing configuration for LicenseDetailV2.

The new route for LicenseDetailV2 is correctly added, ensuring proper access control via user scopes.

libs/api/domains/license-service/src/lib/dto/GenericUserLicenseMetadata.dto.ts (2)

12-28: LGTM: Updates to existing fields.

The updates to licenseNumber, licenseId, expired, expireDate, and displayTag improve type safety and clarity.


30-61: LGTM: Addition of new fields.

The new fields name, subtitle, description, ctaLink, and alert are well-defined and enhance the data model's expressiveness.

libs/service-portal/licenses/src/screens/v1/LicenseDetail/LicenseDetail.css.ts (1)

1-82: LGTM: Styles for LicenseDetail component.

The styles are well-structured and adhere to the design system. Note the existing comment about potentially using a Grid component in the future.

libs/api/domains/license-service/src/lib/resolvers/provider.resolver.ts (2)

15-18: Good use of guards and scopes.

The use of IdsUserGuard and ScopesGuard with appropriate scopes ensures that only authorized users can access the resolver fields, enhancing security.


23-35: Efficient data loading pattern.

The use of data loaders for resolving fields like providerName and providerLogo is efficient and helps in batching and caching database requests.

libs/clients/license-client/src/lib/clients/passport-client/passportsClient.service.ts (3)

17-17: Good practice: Use of readonly for logger.

Marking the logger as readonly ensures that it is not accidentally reassigned, which is a good practice for maintaining immutability.


23-39: Improved functionality in getLicenses.

The method now handles both user and child passports, which broadens its functionality. The filtering for defined values enhances robustness.


23-39: Verify the impact of return type change.

The return type of getLicenses has changed. Ensure that all consumers of this method are updated to handle the new types (IdentityDocument | IdentityDocumentChild).

libs/service-portal/licenses/src/utils/mapPaths.ts (3)

4-16: Correct use of TypeScript type guard.

The function isLicenseTypePath correctly uses a type guard to ensure that the input string matches a valid LicensePathType.


41-61: Ensure all types are covered in getPathFromType.

Verify that all possible GenericLicenseType values are covered in getPathFromType to prevent runtime errors.

Verification successful

All GenericLicenseType values are covered in getPathFromType.

The function getPathFromType correctly includes cases for all values defined in the GenericLicenseType enum. No missing cases were found.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that all `GenericLicenseType` values are covered in `getPathFromType`.

# Test: Ensure all enum values are used in the switch case.
rg --type ts 'enum GenericLicenseType' -A 10 | rg 'case'

Length of output: 56


Script:

#!/bin/bash
# Step 1: Locate the definition of `GenericLicenseType` enum and list its values.
ast-grep --lang typescript --pattern 'enum GenericLicenseType { $$$ }'

# Step 2: Check if each enum value is covered in the `getPathFromType` function.
# Assuming that the function is defined in mapPaths.ts, search for its implementation.
ast-grep --lang typescript --pattern 'export const getPathFromType = (type: GenericLicenseType): LicensePathType => { $$$ }'

Length of output: 3152


18-39: Ensure all paths are covered in getTypeFromPath.

Verify that all possible LicensePathType values are covered in getTypeFromPath to prevent runtime errors.

Verification successful

All paths are covered in getTypeFromPath.

The getTypeFromPath function correctly handles all possible LicensePathType values as defined in the libs/service-portal/licenses/src/lib/constants.ts file. Each path type is accounted for in the switch statement, preventing any potential runtime errors due to missing cases.

  • adrrettindi
  • okurettindi
  • ororkuskirteini
  • skotvopnaleyfi
  • vinnuvelarettindi
  • veidikort
  • pkort
  • ehic
  • vegabref

All these types are present in the switch cases of getTypeFromPath.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that all `LicensePathType` values are covered in `getTypeFromPath`.

# Test: Ensure all enum values are used in the switch case.
rg --type ts 'enum LicensePathType' -A 10 | rg 'case'

Length of output: 53


Script:

#!/bin/bash
# Locate the definition of the `LicensePathType` enum and list its values.
ast-grep --lang typescript --pattern 'enum LicensePathType { $$$ }'

# Extract the switch cases from `getTypeFromPath` to compare with the enum values.
rg --type ts 'switch (path)' -A 20

Length of output: 106


Script:

#!/bin/bash
# Use ripgrep to search for the `LicensePathType` enum definition and its values.
rg --type ts 'LicensePathType' -A 10

# Extract the switch cases from `getTypeFromPath` to compare with the enum values.
rg --type ts 'getTypeFromPath' -A 20

Length of output: 15853

libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.graphql (1)

1-108: GraphQL Query Structure Looks Good!

The structure of the GenericLicense query is comprehensive and well-organized, covering all necessary fields for fetching detailed license information. Ensure that the backend supports all these fields and that they are correctly mapped.

libs/api/domains/license-service/src/lib/resolvers/userLicense.resolver.ts (2)

19-48: Resolver Logic is Well-Structured!

The genericLicense query method is well-implemented, using guards for authentication and handling potential errors effectively. Ensure that the backend service supports the changes and that the transition of logic from the front-end to the service layer is seamless.


50-62: Verify Backward Compatibility for resolveBarcode Method.

The resolveBarcode method has been noted in previous comments regarding a potential name change from createBarcode. Verify that this change does not impact existing clients or integrations.

libs/api/domains/license-service/src/lib/providers/licenseMapper.provider.ts (1)

Line range hint 15-64:
Mapper Configuration Update Approved!

The addition of PassportMapper to the LicenseMapperProvider is consistent with the existing structure for handling different license types. This change supports the integration of passport licenses effectively.

libs/api/domains/license-service/src/lib/licenseService.constants.ts (2)

8-8: Clarify the purpose of LICENSE_NAMESPACE.

The LICENSE_NAMESPACE constant is introduced but not used within the provided file. Ensure its purpose and usage are clear and consistent across the codebase.

Verification successful

LICENSE_NAMESPACE is consistently used across the codebase. The constant is utilized in various mapper files, indicating its role in providing a standardized namespace identifier. This confirms its purpose and consistent usage.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of `LICENSE_NAMESPACE` across the codebase.

# Test: Search for the usage of `LICENSE_NAMESPACE`. Expect: Consistent usage across the codebase.
rg --type typescript 'LICENSE_NAMESPACE'

Length of output: 75


Script:

#!/bin/bash
# Description: Verify the usage of `LICENSE_NAMESPACE` across the codebase.

# Test: Search for the usage of `LICENSE_NAMESPACE`. Expect: Consistent usage across the codebase.
rg --type ts 'LICENSE_NAMESPACE'

Length of output: 1944


17-17: Ensure referenceId consistency and correctness.

The referenceId field has been added to each license type. Verify that these identifiers are correct and consistently used across the system, especially in integrations with external systems.

Also applies to: 27-27, 37-37, 47-47, 57-57, 67-67, 77-77, 87-87, 97-97

libs/api/domains/license-service/src/lib/resolvers/licenseCollection.resolver.ts (4)

24-24: Ensure service dependency is correctly injected.

The LicenseService is injected into the resolver. Confirm that this service is correctly configured and provides the necessary functionality.

Verification successful

Service Dependency Injection Verified

The LicenseService is correctly injected into the resolver, and its implementation in libs/api/domains/license-service/src/lib/licenseService.service.ts shows proper configuration and functionality with necessary dependencies injected. No further issues found.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the implementation and configuration of `LicenseService`.

# Test: Search for the implementation of `LicenseService`. Expect: Proper configuration and functionality.
ast-grep --lang typescript --pattern $'class LicenseService { $$$ }'

Length of output: 96486


26-49: Deprecation notice for genericLicenses.

The genericLicenses query is marked as deprecated. Ensure that all consumers are aware of this change and have a migration path to the new genericLicenseCollection query.


19-22: Verify the security implications of using @UseGuards.

The IdsUserGuard and ScopesGuard are used to secure the resolver. Ensure that these guards are correctly configured to protect sensitive license data.


51-70: Review the genericLicenseCollection query implementation.

The genericLicenseCollection query fetches a collection of licenses. Ensure that it handles all edge cases and performs efficiently.

libs/service-portal/core/src/components/IntroHeader/IntroHeader.tsx (1)

8-8: Validate the use of Box for layout.

The Box component has replaced Text for wrapping props.introComponent. Ensure that this change aligns with the intended design and layout requirements.

libs/api/domains/license-service/src/lib/resolvers/pkPass.resolver.ts (4)

26-26: Constructor looks good.

The constructor correctly uses dependency injection for LicenseService.


28-44: generatePkPass mutation looks good, but verify input validation and error handling.

The mutation correctly generates a pkPass URL. Ensure that licenseServiceService.generatePkPassUrl handles input validation and errors.


64-73: verifyLicenseBarcode mutation looks good, but verify input validation and error handling.

The mutation correctly verifies a license barcode. Ensure that licenseServiceService.verifyLicenseBarcode handles input validation and errors.


46-62: generatePkPassQrCode mutation looks good, but verify input validation and error handling.

The mutation correctly generates a pkPass QR Code. Ensure that licenseServiceService.generatePkPassQRCode handles input validation and errors.

Verification successful

Input validation and error handling appear sufficient in generatePkPassQRCode.

The method generatePkPassQRCode in licenseService.service.ts includes checks for client capabilities and handles errors by throwing exceptions. It logs warnings and errors appropriately and throws exceptions when necessary, ensuring robust error handling.

  • The method verifies if the client supports pkPass and throws a BadRequestException if not.
  • It checks for the presence of the getPkPassQRCode implementation and throws a BadRequestException if missing.
  • If the pkPass response is not successful, it throws an InternalServerErrorException.

These checks provide a good level of input validation and error handling.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify input validation and error handling in `generatePkPassQRCode` method.

# Test: Search for the method implementation. Expect: Proper input validation and error handling.
ast-grep --lang typescript --pattern $'class LicenseService {
  $$$
  generatePkPassQRCode($_, $_) {
    $$$
  }
  $$$
}'

Length of output: 122


Script:

#!/bin/bash
# Description: Locate the `generatePkPassQRCode` method across the codebase to verify its implementation.

# Search for the `generatePkPassQRCode` method definition to find its location.
rg 'generatePkPassQRCode' -A 5

Length of output: 1220


Script:

#!/bin/bash
# Description: Extract the full implementation of `generatePkPassQRCode` to analyze input validation and error handling.

# Extract the full method implementation to verify input validation and error handling.
rg 'async generatePkPassQRCode' -A 20 libs/api/domains/license-service/src/lib/licenseService.service.ts

Length of output: 760


Script:

#!/bin/bash
# Description: Extract additional lines from `generatePkPassQRCode` to complete the analysis of input validation and error handling.

# Extract more lines to see the complete method implementation.
rg 'async generatePkPassQRCode' -A 40 libs/api/domains/license-service/src/lib/licenseService.service.ts

Length of output: 1210

libs/clients/license-client/src/lib/licenseClient.module.ts (4)

33-33: New imports for passport functionality look good.

The imports for PassportsClient and PassportsModule are necessary for the new passport-related features.


45-45: PassportsModule import in @Module looks good.

The addition allows the module to utilize passport-related features effectively.


66-66: passportClient provider configuration looks good.

The provider is correctly added for handling passport-related operations.


88-89: LicenseType.Passport case in switch statement looks good.

The case correctly routes passport license requests to passportClient.

libs/api/mocks/src/domains/license-service/factories.ts (2)

53-53: Removal of logo property from metadata looks good, but verify impact.

The removal affects the representation of user licenses. Ensure that this change aligns with the updated design requirements and does not affect functionality.

Verification successful

Removal of logo Property from metadata is Safe

The search results indicate no dependencies on the logo property within the metadata factory across the codebase. This confirms that its removal does not affect functionality.

  • No references to logo were found in the usage of metadata.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the impact of `logo` property removal from `metadata`.

# Test: Search for usage of `metadata` factory. Expect: No dependency on `logo` property.
rg --type typescript 'metadata'

Length of output: 66


Script:

#!/bin/bash
# Description: Verify the impact of `logo` property removal from `metadata`.

# Test: Search for usage of `metadata` factory. Expect: No dependency on `logo` property.
rg --type ts 'metadata'

Length of output: 11527


39-39: Removal of name property from genericLicense looks good, but verify impact.

The removal streamlines the data structure. Ensure that this change aligns with the updated design requirements and does not affect functionality.

libs/api/domains/license-service/src/lib/mappers/disabilityLicenseMapper.ts (2)

21-21: Good use of dependency injection for localization.

The introduction of IntlService allows for better handling of internationalization, which is a good practice.


22-25: Asynchronous handling and localization improvements are well-implemented.

The changes to return a Promise and use IntlService for localization enhance the method's functionality.

Ensure that all usages of parsePayload are updated to handle the promise.

Verification successful

All usages of parsePayload correctly handle the promise.

The usage of parsePayload in licenseService.service.ts confirms that the promise is handled with await. Other instances found are method definitions, not usages.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of `parsePayload` are updated to handle the promise.

# Test: Search for usages of `parsePayload`. Expect: All usages handle the promise correctly.
rg --type typescript -A 5 $'parsePayload'

Length of output: 75


Script:

#!/bin/bash
# Description: Verify all usages of `parsePayload` are updated to handle the promise.

# Test: Search for usages of `parsePayload`. Expect: All usages handle the promise correctly.
rg --type ts -A 5 $'parsePayload'

Length of output: 6595

libs/api/domains/license-service/src/lib/licenceService.type.ts (4)

6-10: Well-defined interface for license payload responses.

The GenericLicenseMappedPayloadResponse interface is clear and aligns with the expected structure for payload responses.


12-20: Comprehensive type for license fetch responses.

The LicenseTypeFetchResponse type effectively handles both error and license data cases.


80-83: Enum for license validity states is well-defined.

The GenericUserLicenseValidity enum covers all necessary states for license validity.


146-148: Updated method signature aligns with mapper changes.

The parsePayload method signature in the GenericLicenseMapper interface aligns with the changes made in the mappers.

libs/api/domains/license-service/src/lib/mappers/pCardMapper.ts (2)

24-24: Good use of dependency injection for localization.

The introduction of IntlService allows for better handling of internationalization, which is a good practice.


25-28: Asynchronous handling and localization improvements are well-implemented.

The changes to return a Promise and use IntlService for localization enhance the method's functionality.

Ensure that all usages of parsePayload are updated to handle the promise.

Verification successful

All usages of parsePayload handle the promise correctly.

The method parsePayload is used with await in licenseService.service.ts, confirming that the promise handling is properly implemented. No further issues were found.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all usages of `parsePayload` are updated to handle the promise.

# Test: Search for usages of `parsePayload`. Expect: All usages handle the promise correctly.
rg --type typescript -A 5 $'parsePayload'

Length of output: 75


Script:

#!/bin/bash
# Description: Corrected search for usages of `parsePayload` across TypeScript files.

# Test: Search for usages of `parsePayload` in `.ts` files. Expect: All usages handle the promise correctly.
rg 'parsePayload' --glob '*.ts' -A 5

Length of output: 6599

libs/api/domains/license-service/src/lib/mappers/adrLicenseMapper.ts (6)

24-24: Dependency Injection: IntlService.

The IntlService is injected into the class, which is a good practice for enabling easier testing and adhering to dependency inversion principles.


33-36: Use of IntlService for Localization.

The use of IntlService for formatting messages is a positive change, enhancing the maintainability and consistency of localization.


84-111: Enhance Metadata Structure.

The metadata structure has been enhanced to include more detailed information. This change improves the response's clarity and utility.


8-10: Ensure Constants Usage Consistency.

The constants DEFAULT_LICENSE_ID and LICENSE_NAMESPACE are imported. Ensure they are consistently used across the file to maintain clarity and avoid magic numbers or strings.

Verification successful

Constants Usage Verified

The constants DEFAULT_LICENSE_ID and LICENSE_NAMESPACE are consistently used across the codebase, including in the adrLicenseMapper.ts file. This ensures clarity and maintainability by avoiding magic numbers or strings. No issues found with their usage.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify usage of constants DEFAULT_LICENSE_ID and LICENSE_NAMESPACE.

# Test: Search for the constants usage. Expect: Consistent usage across the file.
rg --type ts 'DEFAULT_LICENSE_ID|LICENSE_NAMESPACE'

Length of output: 3765


25-28: Update Method Signature.

The parsePayload method now returns a Promise<Array<GenericLicenseMappedPayloadResponse>>. Ensure that all calling code is updated to handle this promise correctly.

Verification successful

Promise Handling for parsePayload Verified

The parsePayload method is correctly handled as a promise in the codebase. The usage in licenseService.service.ts shows that it is awaited, ensuring proper handling of the promise return type. No further changes are necessary.

  • libs/api/domains/license-service/src/lib/licenseService.service.ts: parsePayload is awaited.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all calls to `parsePayload` handle the promise correctly.

# Test: Search for the function usage. Expect: Proper handling of promise return type.
rg --type ts 'parsePayload'

Length of output: 1064


Script:

#!/bin/bash
# Description: Gather detailed context of `parsePayload` usage to ensure promise handling.

# Search for all instances of `parsePayload` and include surrounding lines for context.
rg --type ts 'parsePayload' -A 5 -B 5

Length of output: 12348


38-65: Refactor: Expiration Logic and Data Mapping.

The expiration logic and data mapping have been refactored for clarity. Ensure that the logic correctly handles all edge cases, such as missing or malformed dates.

libs/service-portal/core/src/components/UserInfoLine/UserInfoLine.tsx (1)

160-160: New Prop: icon in LinkButton.

The addition of the icon prop to LinkButton enhances its functionality. Ensure that this change is backward compatible and that all usages of LinkButton are updated or verified.

apps/service-portal/src/components/Notifications/NotificationMenu.tsx (1)

155-155: Simplify modalLabel Prop.

The simplification of the modalLabel prop improves readability. Ensure that m.notificationButtonAria provides the correct and intended message.

Verification successful

Correct Message for modalLabel Prop

The notificationButtonAria provides an appropriate message for the modalLabel prop, ensuring clarity and accessibility. The defaultMessage is correctly defined as "Menu for notifications."

  • Location: libs/service-portal/core/src/lib/messages.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that `m.notificationButtonAria` provides the correct message.

# Test: Check the definition of `m.notificationButtonAria`. Expect: Correct message content.
rg --type ts 'notificationButtonAria'

Length of output: 239


Script:

#!/bin/bash
# Description: Extract the content of `notificationButtonAria` from `messages.ts` to verify its correctness.

# Test: Display the content of `notificationButtonAria`.
rg --type ts --context 5 'notificationButtonAria' libs/service-portal/core/src/lib/messages.ts

Length of output: 463

libs/service-portal/licenses/src/components/ExpandableLine/ExpandableLine.tsx (1)

15-15: Style import update approved.

The update from LicenseDetail.css to ExpandableLine.css aligns the stylesheet name with the component, enhancing maintainability.

libs/feature-flags/src/lib/features.ts (1)

60-62: New feature flag addition approved.

The addition of licensesV2 to the Features enum is consistent with the PR's objective of updating the license service. Ensure that this feature flag is appropriately used and tested across the application.

Verification successful

Feature flag usage verified.

The licensesV2 feature flag is correctly utilized in the LicensesOverview.tsx file to conditionally set the version state. This aligns with the intended functionality of the flag. No further issues found.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify the usage of the `licensesV2` feature flag across the codebase.
rg --type ts 'Features\.licensesV2' --context 5

Length of output: 1085

libs/api/domains/license-service/src/lib/mappers/machineLicenseMapper.ts (3)

41-45: Transition to async handling in parsePayload.

The change from synchronous to asynchronous handling in parsePayload enhances the method's flexibility for future async operations. This is a positive change for handling internationalization messages.


Line range hint 134-151:
Refactor parseVvrRights method for improved message formatting.

The transition to using formatMessage for label generation in parseVvrRights enhances localization support. This change aligns with best practices for handling internationalization.


49-52: Ensure proper usage of intlService.

The use of intlService.useIntl to retrieve formatMessage is a good practice for handling internationalization. Verify that this service is correctly configured and used throughout the application.

Verification successful

IntlService is properly configured and used correctly across the codebase. The IntlService class fetches translations using cmsTranslationsService and handles errors appropriately. The usage of intlService.useIntl is consistent with its intended configuration.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify the correct configuration and usage of `intlService` across the codebase.
rg --type ts 'intlService\.useIntl' --context 5

Length of output: 19770


Script:

#!/bin/bash
# Search for the definition of `intlService` to verify its configuration and initialization.
ast-grep --lang typescript --pattern 'class IntlService { $$$ }'

Length of output: 2957

libs/api/domains/license-service/src/lib/mappers/huntingLicenseMapper.ts (4)

24-27: Dependency Injection Acknowledged.

The constructor now uses dependency injection for Logger and IntlService, which enhances modularity. Ensure these dependencies are utilized effectively throughout the class.


28-31: Ensure Payload is Defined Before Mapping.

The check for !payload should be sufficient to prevent mapping undefined payloads. Ensure this logic is consistent with the expected input.


36-39: Correct Usage of IntlService for Localization.

The IntlService is used to format messages, which is a good practice for localization. Ensure that all necessary messages are covered.


41-144: Review Asynchronous Mapping Logic.

The mapping logic is now asynchronous, which is appropriate given the use of IntlService. Ensure that all asynchronous operations are handled correctly and that the return type aligns with the expected Promise<Array<GenericLicenseMappedPayloadResponse>>.

libs/clients/license-client/src/lib/licenseClient.type.ts (1)

43-43: Enhanced Flexibility for Passport Data.

The LicenseResults interface now accommodates a broader range of identity documents by using a union type. This change enhances flexibility and should be verified for compatibility with existing data handling.

libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.tsx (8)

1-9: Efficient Import Usage.

The component imports necessary hooks and types efficiently. Ensure all imported modules are used appropriately within the component.


21-25: Correct Hook Usage for Localization and User Profile.

The use of useNamespaces, useLocale, and useUserProfile hooks is appropriate for handling localization and user data. This ensures the component is responsive to user preferences.


27-37: Define Included License Types Clearly.

The includedTypes array clearly defines the license types to be included, which is a good practice for maintainability. Ensure this list aligns with the application's requirements.


39-46: Handle Query Loading and Error States.

The query for licenses handles loading and error states effectively, which is crucial for a good user experience. Ensure that all potential states are accounted for.


48-82: Generate License Cards Dynamically.

The generateLicense function dynamically creates license cards, which is efficient. Ensure that all necessary data is available and correctly rendered.


84-90: Use of Stack for License Display.

The generateLicenseStack function uses a Stack component for displaying licenses, which is a clean approach. Ensure that the UI remains responsive across different screen sizes.


92-95: Error and License Data Handling.

The component effectively handles errors and license data, which is crucial for robustness. Ensure that all edge cases are considered.


97-151: Comprehensive Rendering Logic.

The rendering logic covers various scenarios, including loading, errors, and different license types. This ensures a comprehensive user experience. Consider testing these scenarios to ensure correctness.

libs/api/domains/license-service/src/lib/mappers/drivingLicenseMapper.ts (3)

22-22: Ensure Dependency Injection is Correct.

The IntlService is injected into the constructor, which is appropriate for managing internationalization. Ensure that this service is correctly configured in the module to avoid runtime errors.

Verification successful

IntlService Dependency Injection Verified

The IntlService is correctly provided and exported in the CmsTranslationsModule, ensuring it is available for dependency injection in other modules. No issues were found regarding its configuration.

  • libs/cms-translations/src/lib/cms-translations.module.ts: IntlService is listed under providers and exports.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify that the `IntlService` is correctly provided in the module.
rg --type ts 'IntlService' -A 5

Length of output: 33758


104-141: Review Metadata Construction for Completeness.

The metadata section is well-structured, but ensure all fields are necessary and correctly populated, especially dynamic fields like licenseNumber and expireDate.

Verification successful

Metadata Fields are Correctly Populated and Necessary

The metadata fields licenseNumber, expireDate, expired, and links are essential and correctly populated in the driving license mapper. These fields are widely used across the codebase to manage and display driving license information. No issues found with their construction or usage.

  • License Number: Properly extracted and used for identification.
  • Expire Date: Correctly formatted and utilized for expiry checks.
  • Expired Status: Accurately reflects the license's validity.
  • Links: Provide necessary external resources.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify the completeness and correctness of metadata fields.
rg --type ts 'metadata' -A 10

Length of output: 80661


Script:

#!/bin/bash
# Search for the initialization and usage of metadata fields in the driving license mapper.
rg --type ts 'licenseNumber|expireDate|expired|links' -A 5 -B 5

Length of output: 393488


31-34: Ensure Asynchronous Message Formatting is Handled Properly.

The use of await with this.intlService.useIntl is correct. Ensure that this does not introduce any performance bottlenecks, especially if parsePayload is called frequently.

libs/api/domains/license-service/src/lib/mappers/ehicCardMapper.ts (3)

21-21: Ensure Dependency Injection is Correct.

The IntlService is injected into the constructor, which is appropriate for managing internationalization. Ensure that this service is correctly configured in the module to avoid runtime errors.

Verification successful

IntlService is Correctly Configured and Provided

The IntlService is correctly configured and provided within the CmsTranslationsModule, which exports it for use in other modules. This ensures that the service is available for dependency injection in components like EHICCardPayloadMapper. No further action is needed.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify that the `IntlService` is correctly provided in the module.
rg --type ts 'IntlService' -A 5

Length of output: 33758


30-33: Ensure Asynchronous Message Formatting is Handled Properly.

The use of await with this.intlService.useIntl is correct. Ensure that this does not introduce any performance bottlenecks, especially if parsePayload is called frequently.


90-137: Review Metadata Construction for Completeness.

The metadata section is well-structured, but ensure all fields are necessary and correctly populated, especially dynamic fields like licenseNumber and expireDate.

libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.tsx (2)

30-35: Ensure Correct Use of Hooks.

The useNamespaces, useLocale, and useUserProfile hooks are used correctly for localization and user profile fetching. Ensure that these hooks are imported and used consistently across the application.


47-59: Verify Data Fetching Logic.

The useEffect hook is used to trigger the genericLicenseQuery based on dependencies. Ensure that this logic correctly handles changes in id, locale, and licenseType to prevent unnecessary re-fetches.

libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx (1)

1-14: Ensure imports are necessary and optimized.

The imports seem well-structured, but confirm that all imported components and types are used in the file.

Verification successful

Imports are necessary and optimized. All imported components and types are used in the file, confirming that the imports are necessary and correctly optimized.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all imported components and types are used in the file.

# Test: Check for unused imports. Expect: No unused imports.
rg --type tsx 'import' -A 1 | rg -v 'import {.*} from' | rg -v '^\s*$'

Length of output: 205


Script:

#!/bin/bash
# Description: List all imports and verify their usage in the file.

# Find the file path for LicenseDataFields.tsx
file_path=$(fd LicenseDataFields.tsx)

# List all imported components and types
imports=$(rg --only-matching --no-filename 'import {[^}]+}' "$file_path" | sed 's/import {//;s/}//;s/,/\n/g' | awk '{$1=$1};1')

# Check usage of each import in the file
for import in $imports; do
  echo "Checking usage of: $import"
  rg "$import" "$file_path" || echo "Unused import: $import"
done

Length of output: 432


Script:

#!/bin/bash
# Description: List all imports and verify their usage in the file.

# Find the file path for LicenseDataFields.tsx
file_path=$(fd LicenseDataFields.tsx)

# List all imported components and types
imports=$(rg --only-matching --no-filename 'import \{[^}]+\}' "$file_path" | sed 's/import {//;s/}//;s/,/\n/g' | awk '{$1=$1};1')

# Check usage of each import in the file
for import in $imports; do
  echo "Checking usage of: $import"
  rg "$import" "$file_path" || echo "Unused import: $import"
done

Length of output: 903

libs/api/domains/license-service/src/lib/mappers/firearmLicenseMapper.ts (2)

20-22: Ensure IntlService is correctly initialized.

The IntlService is used for localization. Verify that it is correctly initialized and used throughout the code.

Verification successful

Verify IntlService Initialization and Usage

The IntlService is consistently injected and used across multiple files. It is provided and exported in the CmsTranslationsModule, suggesting it is correctly set up as a shared service. Verify that this module is imported wherever IntlService is utilized to ensure proper initialization and usage.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify `IntlService` initialization and usage.

# Test: Check for `IntlService` usage. Expect: Consistent usage across the codebase.
rg --type ts 'IntlService' -A 5

Length of output: 33758


36-39: Verify locale handling in useIntl.

Ensure that the locale passed to useIntl is valid and supported, as incorrect locales could lead to unexpected behavior.

Verification successful

Locale Handling in useIntl is Correct

The useIntl function uses locales that are defined and validated in the codebase. The supported locales are 'is' and 'en', as specified in libs/shared/constants/src/lib/locale.ts. This ensures that only valid and supported locales are used, preventing unexpected behavior.

  • Supported Locales: ['is', 'en'] in libs/shared/constants/src/lib/locale.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify locale handling in `useIntl`.

# Test: Check for supported locales. Expect: Only supported locales are used.
rg --type ts 'locale: Locale' -A 1

Length of output: 24489


Script:

#!/bin/bash
# Search for definitions or validations of supported locales in the codebase.
rg --type ts 'supportedLocales' -A 2
rg --type ts 'availableLocales' -A 2
rg --type ts 'validLocales' -A 2

Length of output: 6565

libs/api/domains/license-service/src/lib/mappers/passportMapper.ts (2)

28-32: Clarify type guard logic.

The isChildPassport function is a type guard. Ensure that its logic is clear and correct, as it determines the type of passport being processed.

Verification successful

Type Guard Logic is Clear and Correct

The isChildPassport function correctly implements a type guard by checking for the presence of the childNationalId property to determine if a passport is of type IdentityDocumentChild. This logic is clear and functions as intended within the codebase.

  • The function is used to conditionally process child documents, confirming its correct application.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify logic in `isChildPassport` function.

# Test: Check for correct type guard implementation. Expect: Correctly identifies `IdentityDocumentChild`.
rg --type ts 'isChildPassport' -A 3

Length of output: 1722


129-268: Review alert and tag logic for clarity and correctness.

The logic for determining alerts and tags is complex. Ensure clarity and correctness, especially regarding the conditions for setting alert types and tag colors.

Verification successful

Alert and Tag Logic Verified

The alert and display tag logic in passportMapper.ts is implemented as follows:

  • Alert Logic:

    • An alert is created if the document is expired, expiring, or lost.
    • The alert's title and message are determined based on whether the document is expired or lost, or if it is expiring soon.
    • The alert type is consistently set to WARNING.
  • Display Tag Logic:

    • A display tag is set with text that varies based on whether the document is invalid, expiring, or valid.
    • The color of the tag is red if the document is invalid or expiring; otherwise, it is blue.
    • The icon and icon color are determined similarly, with specific types and colors for invalid, expiring, and valid statuses.

The logic is clear and correctly reflects the intended conditions for setting alerts and tags.

  • File: libs/api/domains/license-service/src/lib/mappers/passportMapper.ts
    • Lines: 136-156 for displayTag
    • Lines: 211-228 for alert
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify alert and tag logic.

# Test: Check for correct conditions and logic. Expect: Alerts and tags are set correctly based on document status.
rg --type ts 'alert|displayTag' -A 5

Length of output: 459847


Script:

#!/bin/bash
# Description: Verify alert and tag logic specifically in passportMapper.ts.

# Test: Check for the logic that sets alerts and display tags in passportMapper.ts.
ast-grep --lang typescript --pattern $'const alert: GenericUserLicenseAlert | undefined = $_' -A 10
ast-grep --lang typescript --pattern $'const displayTag: GenericUserLicenseMetaTag | undefined = $_' -A 10

Length of output: 6540

libs/service-portal/licenses/src/lib/messages.ts (1)

335-343: New messages for error handling look good.

The addition of errorFetchingLicenses and errorFetchingLicensesDetail messages enhances error communication and aligns with existing patterns.

libs/service-portal/core/src/components/ActionCard/ActionCard.tsx (1)

30-31: New props for ActionCard enhance customization.

The addition of borderColor and headingColor props allows for greater visual flexibility. Ensure these changes are reflected in any documentation or usage examples.

libs/api/domains/license-service/src/lib/messages.ts (1)

1-372: Comprehensive message definitions for license service.

The new file provides a wide range of localized messages, enhancing the service's internationalization capabilities.

libs/service-portal/assets/src/screens/VehicleMileage/VehicleMileage.tsx (1)

141-157: Enhance semantic structure with <Text> component.

Wrapping the formatMessage call within a <Text> component improves the semantic structure and potentially the styling of the component. This change is beneficial for ensuring consistent text rendering.

libs/service-portal/licenses/src/screens/v1/LicenseDetail/LicenseDetail.tsx (4)

116-120: Add expired prop to DataFields.

The addition of the expired prop to the DataFields component allows for more direct management of license expiration states. This change enhances the component's capability to handle expiration logic internally.


Line range hint 154-185:
Simplify license validity rendering logic.

The updated logic for rendering license validity using the expired prop simplifies control flow and reduces redundancy. This approach improves readability and maintainability.


Line range hint 209-229:
Propagate expired prop to nested DataFields.

Passing the expired prop to nested DataFields components ensures consistent handling of expiration status across all levels of the data structure. This change is crucial for maintaining uniform behavior.


432-432: Ensure correct usage of expired prop in LicenseDetail.

The inclusion of the expired prop in the DataFields component within LicenseDetail aligns with the new logic for handling expiration states. Verify that all instances of DataFields are updated accordingly.

Verification successful

All instances of DataFields are updated with the expired prop.

The search results show that the expired prop is being passed to the DataFields component in the instances found. This confirms that the necessary updates have been made.

  • Instances of <DataFields> include the expired prop.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all instances of `DataFields` are updated to use the `expired` prop.

# Test: Search for `DataFields` usage. Expect: All instances should pass the `expired` prop.
rg --type tsx -A 3 $'<DataFields'

Length of output: 62


Script:

#!/bin/bash
# Find all .tsx files and search for instances of <DataFields>
fd --extension tsx --exec rg -A 3 '<DataFields' {}

Length of output: 371

apps/system-e2e/src/tests/islandis/service-portal/acceptance/mocks/licenses.mock.ts (3)

458-458: Update nr field in mock data.

The update to the nr field in the mock data reflects a more concise identifier. Ensure that this change aligns with the expected format in the application logic.


Line range hint 527-536:
Refine category properties in mock data.

The refinement of category properties with single-letter identifiers and localized descriptions improves the semantic clarity of the mock data. This change enhances the relevance and usability of the mock data for testing.


555-566: Enhance localization in firearm categories.

The enhanced localization of firearm categories with detailed Icelandic descriptions aligns the mock data with real-world expectations. This improvement increases the authenticity of the test scenarios.

libs/api/domains/license-service/src/lib/licenseService.service.ts (5)

Line range hint 273-286:
Error handling in getClient.

The method effectively ensures that a valid client is obtained, with appropriate logging and error handling for invalid license types.


Line range hint 288-318:
Comprehensive checks in generatePkPassUrl.

The method includes thorough checks to ensure client support for PkPass and proper method implementation, with robust logging and error handling.


Line range hint 95-135:
Improved error handling in getLicenseCollection.

The refactoring to use Promise.allSettled and an errors array enhances the robustness of the method by capturing both successful and failed license fetches.

Ensure that the new LicenseCollection type is correctly handled in all parts of the codebase that consume this method.

Verification successful

LicenseCollection is properly integrated across the codebase.

The LicenseCollection type is used in various parts of the codebase, including service and resolver files, indicating that it is correctly integrated into the system. This confirms that the refactoring in getLicenseCollection is consistent with the rest of the codebase.

  • libs/api/domains/license-service/src/lib/licenseService.service.ts
  • libs/api/domains/license-service/src/lib/resolvers/licenseCollection.resolver.ts
  • libs/api/domains/occupational-licenses-v2/src/lib/occupationalLicensesV2.resolver.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of `LicenseCollection` in the codebase.

# Test: Search for `LicenseCollection` usage. Expect: Proper handling in all consuming parts.
rg --type typescript -A 5 'LicenseCollection'

Length of output: 80


Script:

#!/bin/bash
# Description: Verify the usage of `LicenseCollection` in the codebase.

# Corrected Test: Search for `LicenseCollection` usage in TypeScript files.
rg 'LicenseCollection' --glob '*.ts' -A 5

Length of output: 11849


143-241: Structured response handling in getLicensesOfType.

The refactoring to return a LicenseTypeFetchResponse improves the method's clarity and error handling.

Verify that LicenseTypeFetchResponse is implemented correctly and used consistently across the codebase.

Verification successful

LicenseTypeFetchResponse is implemented and used correctly.

The LicenseTypeFetchResponse type is defined in libs/api/domains/license-service/src/lib/licenceService.type.ts and is used in libs/api/domains/license-service/src/lib/licenseService.service.ts. The implementation appears consistent with its usage in the codebase.

  • Definition: libs/api/domains/license-service/src/lib/licenceService.type.ts
  • Usage: libs/api/domains/license-service/src/lib/licenseService.service.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the implementation and usage of `LicenseTypeFetchResponse`.

# Test: Search for `LicenseTypeFetchResponse` implementation and usage. Expect: Consistent implementation and usage.
rg --type typescript -A 5 'LicenseTypeFetchResponse'

Length of output: 87


Script:

#!/bin/bash
# Description: Verify the implementation and usage of `LicenseTypeFetchResponse`.

# Corrected Test: Search for `LicenseTypeFetchResponse` implementation and usage in TypeScript files.
rg --type ts -A 5 'LicenseTypeFetchResponse'

Length of output: 1679


249-273: Enhanced error handling in getLicense.

The method now appropriately returns GenericUserLicense, LicenseError, or null, improving robustness.

Verify that LicenseError is handled correctly in all parts of the codebase that consume this method.

libs/service-portal/core/src/lib/messages.ts (2)

348-352: Addition of menuButtonAria for accessibility.

The menuButtonAria message enhances accessibility by providing screen reader information for the menu button.


353-356: Addition of notificationButtonAria for accessibility.

The notificationButtonAria message enhances accessibility by providing screen reader information for notifications.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 3c53d29 and 9e1c392.

Files selected for processing (3)
  • libs/api/domains/license-service/src/lib/mappers/passportMapper.ts (1 hunks)
  • libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx (1 hunks)
  • libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.tsx (1 hunks)
Files skipped from review as they are similar to previous changes (3)
  • libs/api/domains/license-service/src/lib/mappers/passportMapper.ts
  • libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx
  • libs/service-portal/licenses/src/screens/v2/LicenseDetail/LicenseDetail.tsx

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 9e1c392 and fcc370f.

Files selected for processing (1)
  • libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • libs/service-portal/licenses/src/components/LicenseDataFields/LicenseDataFields.tsx

Copy link
Member

@thordurhhh thordurhhh left a comment

Choose a reason for hiding this comment

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

Beautiful ✨

Copy link
Member

@snaerseljan snaerseljan left a comment

Choose a reason for hiding this comment

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

LGTM! Good job. Tested the app and the barcode worked in the app

@thorkellmani thorkellmani requested review from thoreyjona and removed request for thoreyjona and disaerna August 14, 2024 09:24
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between fcc370f and 781a01e.

Files selected for processing (4)
  • libs/api/domains/license-service/src/lib/dto/GenericLicenseError.dto.ts (1 hunks)
  • libs/api/domains/license-service/src/lib/licenseService.service.ts (5 hunks)
  • libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.graphql (1 hunks)
  • libs/service-portal/licenses/src/utils/capitalize.ts (1 hunks)
Files skipped from review due to trivial changes (1)
  • libs/service-portal/licenses/src/utils/capitalize.ts
Files skipped from review as they are similar to previous changes (2)
  • libs/api/domains/license-service/src/lib/dto/GenericLicenseError.dto.ts
  • libs/service-portal/licenses/src/screens/v2/LicensesOverview/LicensesOverview.graphql
Additional context used
Path-based instructions (1)
libs/api/domains/license-service/src/lib/licenseService.service.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
Additional comments not posted (8)
libs/api/domains/license-service/src/lib/licenseService.service.ts (8)

Line range hint 68-76:
Constructor simplification looks good.

The removal of dependencies like cmsContentfulService and cacheManager suggests improved maintainability and focus on core responsibilities.


Line range hint 275-288:
Centralized client retrieval logic in getClient.

The method improves code organization by centralizing client retrieval based on license type.


Line range hint 290-317:
Improved error handling in generatePkPassUrl.

The method ensures that only clients supporting PkPass are processed, enhancing error handling.


Line range hint 319-346:
Robust error handling in generatePkPassQRCode.

The method ensures that only clients supporting PkPass QR codes are processed, enhancing robustness.


Line range hint 408-493:
Flexible and robust verifyLicenseBarcode method.

The method supports multiple barcode formats and includes structured error handling, enhancing flexibility and robustness.


Line range hint 95-135:
Enhanced error handling and structured response in getLicenseCollection.

The method now returns a LicenseCollection with explicit error handling, improving robustness.

Ensure that the new return type is correctly handled in the rest of the codebase.


249-273: Improved error handling in getLicense.

The method now returns GenericUserLicense, LicenseError, or null, enhancing robustness.

Verify that the new return types are correctly handled in the codebase.


143-241: Structured response and improved error handling in getLicensesOfType.

The method now returns a LicenseTypeFetchResponse, enhancing clarity and maintainability.

Verify that the new response structure is correctly utilized throughout the codebase.

@thorkellmani thorkellmani added the automerge Merge this PR as soon as all checks pass label Aug 14, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 781a01e and b2a324d.

Files selected for processing (1)
  • libs/feature-flags/src/lib/features.ts (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • libs/feature-flags/src/lib/features.ts

@kodiakhq kodiakhq bot merged commit dbd2a13 into main Aug 14, 2024
386 checks passed
@kodiakhq kodiakhq bot deleted the feat/update-license-service branch August 14, 2024 13:06
oskarjs pushed a commit that referenced this pull request Aug 20, 2024
* feat:updat emodels

* feat/bunch

* feat: updates

* feat: add and remove

* chore: stash merge

* feat: more stuff

* fix: license type

* feat: license overivew works

* chore:revert

* chore: revert messages

* chore: console

* chore: revert

* chore: nx format:write update dirty files

* fix: passports

* chore: start details

* chore: nx format:write update dirty files

* feat: update details

* fix: enum

* fix: date format

* fix: type import

* chore:small fixes

* chore:rename-liceinse-service
'

'

* chore: remove original license service

* chore: add unchanged license service

* chore: add mocks back

* chore: add to resolver

* chore:renmae license

* chore: readd licens service

* fix: license-v2

* fix: readd ls-v1

* feat: rename

* chore: nx format:write update dirty files

* fix: passport display

* chore: codeowners

* chore: move datafields

* fix: html semantics

* fix:pkpass display

* chore:console log

* chore: use types

* feat: remove v2 and merge in v1

* chore:import

* fix: expires

* fix:navigation

* fix: mapping

* chore: import

* fix: time format

* fix:fix

* chore: clean up types

* fix: async

* fix: messages

* fix: update display slightly

* fix: mcoks

* chore: deprecate model

* chore: import clean up

* fix: update mapping

* chore: import clean up

* fix: reimport reaect

* chore: use tag map

* chore: coderabbit improvements

* fix: const issues

* chore: concising

---------

Co-authored-by: Þorkell Máni Þorkelsson <[email protected]>
Co-authored-by: andes-it <[email protected]>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
jonnigs pushed a commit that referenced this pull request Sep 2, 2024
* feat:updat emodels

* feat/bunch

* feat: updates

* feat: add and remove

* chore: stash merge

* feat: more stuff

* fix: license type

* feat: license overivew works

* chore:revert

* chore: revert messages

* chore: console

* chore: revert

* chore: nx format:write update dirty files

* fix: passports

* chore: start details

* chore: nx format:write update dirty files

* feat: update details

* fix: enum

* fix: date format

* fix: type import

* chore:small fixes

* chore:rename-liceinse-service
'

'

* chore: remove original license service

* chore: add unchanged license service

* chore: add mocks back

* chore: add to resolver

* chore:renmae license

* chore: readd licens service

* fix: license-v2

* fix: readd ls-v1

* feat: rename

* chore: nx format:write update dirty files

* fix: passport display

* chore: codeowners

* chore: move datafields

* fix: html semantics

* fix:pkpass display

* chore:console log

* chore: use types

* feat: remove v2 and merge in v1

* chore:import

* fix: expires

* fix:navigation

* fix: mapping

* chore: import

* fix: time format

* fix:fix

* chore: clean up types

* fix: async

* fix: messages

* fix: update display slightly

* fix: mcoks

* chore: deprecate model

* chore: import clean up

* fix: update mapping

* chore: import clean up

* fix: reimport reaect

* chore: use tag map

* chore: coderabbit improvements

* fix: const issues

* chore: concising

---------

Co-authored-by: Þorkell Máni Þorkelsson <[email protected]>
Co-authored-by: andes-it <[email protected]>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automerge Merge this PR as soon as all checks pass deploy-feature Deploys features to dev
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants