Conversation
Reviewer's Guide by SourceryThis pull request updates the windy-sounding plugin to version 4.1.10. The changes include updating the package version and adding a changelog entry to reflect the synchronization with the latest Windy API. No diagrams generated as the changes look simple and do not need a visual representation. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
WalkthroughA new version update for the windy-sounding plugin has been released. The changelog now includes an entry for version 4.1.11 dated February 20, 2025, noting that the plugin has been synchronized with the latest windy API. In tandem, the package version in the package.json was updated from 4.1.9 to 4.1.11. Additionally, several type definitions and interfaces have been added or modified across various files to enhance functionality and improve structure, while some deprecated types and classes have been removed. Changes
Poem
✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Hey @vicb - I've reviewed your changes - here's some feedback:
Overall Comments:
- Consider automating the version bumping and changelog generation process to reduce manual work and potential errors.
Here's what I looked at during the review
- 🟡 General issues: 1 issue found
- 🟢 Security: all looks good
- 🟢 Testing: all looks good
- 🟢 Complexity: all looks good
- 🟢 Documentation: all looks good
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
libs/windy-sounding/CHANGELOG.md (1)
3-4: Changelog Header Formatting
The new version header "## 4.1.10 - Feb 20, 2025" is clear and follows the style of previous entries. As a minor suggestion, consider using an en dash (–) instead of a hyphen to separate the version number and the date. This subtle typographical adjustment can improve consistency, especially if similar changes are applied across the changelog.🧰 Tools
🪛 LanguageTool
[typographical] ~3-~3: If you want to indicate numerical ranges or time ranges, consider using an en dash.
Context: # Release history ## 4.1.10 - Feb 20, 2025 - Sync with the latest win...(DASH_RULE)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
libs/windy-sounding/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (2)
libs/windy-sounding/CHANGELOG.md(1 hunks)libs/windy-sounding/package.json(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- libs/windy-sounding/package.json
🧰 Additional context used
🪛 LanguageTool
libs/windy-sounding/CHANGELOG.md
[typographical] ~3-~3: If you want to indicate numerical ranges or time ranges, consider using an en dash.
Context: # Release history ## 4.1.10 - Feb 20, 2025 - Sync with the latest win...
(DASH_RULE)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: publish-plugin
- GitHub Check: build (20.x)
- GitHub Check: Analyze (javascript)
🔇 Additional comments (1)
libs/windy-sounding/CHANGELOG.md (1)
5-6: Changelog Entry Note Clarity
The bullet point "- Sync with the latest windy API" succinctly describes the update. If further detail becomes necessary later (for example, what aspects of the API were synchronized), it might be helpful to expand this note in future revisions. For now, it is concise and consistent with previous entries.
From `@windycom/plugin-devtools@3`
Deploying flyxc with
|
| Latest commit: |
c0c9f79
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://e3d214a3.flyxc.pages.dev |
| Branch Preview URL: | https://plugin-4-1-10.flyxc.pages.dev |
There was a problem hiding this comment.
Actionable comments posted: 8
🧹 Nitpick comments (69)
libs/windy-sounding/types/client/d.ts.files/Layer.d.ts (1)
2-2: Useimport typefor type-only imports.Since these imports are only used as types, use the
import typesyntax to be consistent with TypeScript best practices.-import { DataQuality, FileSuffix } from '@windy/Product'; +import type { DataQuality, FileSuffix } from '@windy/Product';🧰 Tools
🪛 ESLint
[error] 2-2: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/d.ts.files/startup.d.ts (1)
19-32: Consider extracting nested types for better reusability.While the interface is well-structured, consider extracting the nested types for better maintainability and reuse.
+export interface Contributor { + name: string; + avatarUrl: string; +} + +export interface WhatsNewContent { + new?: string; + improved?: string; + fixed?: string; +} + export interface WhatsNewData extends StartupItem { type: 'whats-new'; id: string; title: string; - contributors: { - name: string; - avatarUrl: string; - }[]; - content: { - new?: string; - improved?: string; - fixed?: string; - }; + contributors: Contributor[]; + content: WhatsNewContent; }libs/windy-sounding/types/client/embed2.d.ts (3)
13-13: Fix import organization.Add a newline after the import statement to maintain consistent code organization.
import './render/tileLayerInstance'; +🧰 Tools
🪛 ESLint
[error] 13-13: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
14-21: LGTM! Consider sorting exports.The new namespace exports are well-organized by functionality and align with the Windy API synchronization objective. Consider sorting them alphabetically for better maintainability.
-export * as detectDevice from './dummyModules/detectDevice'; -export * as log from './dummyModules/log'; -export * as promo from './dummyModules/promo'; -export * as seoParser from './dummyModules/seoParser'; -export * as location from './dummyModules/location'; -export * as router from './dummyModules/router'; -export * as showableErrorsService from './dummyModules/showableErrorsService'; -export * as userFavs from './dummyModules/userFavs'; +export * as detectDevice from './dummyModules/detectDevice'; +export * as location from './dummyModules/location'; +export * as log from './dummyModules/log'; +export * as promo from './dummyModules/promo'; +export * as router from './dummyModules/router'; +export * as seoParser from './dummyModules/seoParser'; +export * as showableErrorsService from './dummyModules/showableErrorsService'; +export * as userFavs from './dummyModules/userFavs';🧰 Tools
🪛 ESLint
[error] 14-21: Run autofix to sort these exports!
(simple-import-sort/exports)
22-28: Move imports to the top of the file.For better code organization and to follow TypeScript best practices, move these imports to join the other imports at the top of the file.
import './render/tileLayerInstance'; +import bcast from './services/broadcast'; +import * as rootScope from './services/rootScope'; +import { default as store } from './services/store'; +import * as ga from './utils/ga'; +import { $ } from './utils/utils'; +import { default as overlays } from './weather/overlays'; export * as detectDevice from './dummyModules/detectDevice'; // ... other exports ... -import bcast from './services/broadcast'; -import * as rootScope from './services/rootScope'; -import { default as store } from './services/store'; -import * as ga from './utils/ga'; -import { $ } from './utils/utils'; -import { default as overlays } from './weather/overlays';🧰 Tools
🪛 ESLint
[error] 22-22: Import in body of module; reorder to top.
(import/first)
[error] 23-23: Import in body of module; reorder to top.
(import/first)
[error] 24-24: Import in body of module; reorder to top.
(import/first)
[error] 24-24: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
[error] 26-26: Import in body of module; reorder to top.
(import/first)
[error] 27-27: Import in body of module; reorder to top.
(import/first)
[error] 28-28: Import in body of module; reorder to top.
(import/first)
[error] 28-28: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/notifications.d.ts (5)
1-2: Resolve import ordering and spacing issues.ESLint indicates that imports at lines 1-2 need sorting and a blank line after the import block. Consider running an auto-fix command (e.g.,
npm run lint --fix) to comply with these style rules.🧰 Tools
🪛 ESLint
[error] 1-2: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
3-3: Consider making this a function instead of a constant Promise.If
canReceiveNotificationsis intended for repeated checks, consider declaring it as a function returning aPromise<void>rather than a static Promise constant.
5-8: Refine documentation fordeleteAllNotifications.The doc string could clarify whether this function targets server-side, client-side, or both. Also, consider specifying post-deletion state (e.g., does it return a status or throw an error?).
13-19: Validate the necessity ofHttpPayload<void>.
markNotificationAsSeen()returnsPromise<HttpPayload<void>>. Check if this aligns with the other methods that returnPromise<void>. If additional metadata is needed, ensure consistency across all notification-related methods.
20-26: Unify naming convention for “mark as received” vs. “mark as seen.”
markNotificationAsReceived()parallelsmarkNotificationAsSeen(). Consider consistent naming (e.g.,markAsSeenandmarkAsReceived) or merging aspects of their logic if they share underlying flows.libs/windy-sounding/types/client/d.ts.files/storage.d.ts (2)
2-3: Useimport typeconsistently.Static analysis suggests all imported entities here are used only as types. You can simplify to:
-import { Fav, type ObsoleteFav } from '@windy/favs.d'; -import { SearchRecent } from '@plugins/search/search'; +import type { Fav, ObsoleteFav } from '@windy/favs.d'; +import type { SearchRecent } from '@plugins/search/search';🧰 Tools
🪛 ESLint
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 3-3: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
6-6: Expand deprecation note for clarity.Adding a pointer to the new IDB-based approach could help developers quickly migrate from this deprecated usage:
- /** @deprecated replaced by IDB */ + /** @deprecated replaced by IDB - see docs at libs/windy-sounding/types/client/IDB.d.ts */libs/windy-sounding/types/client/d.ts.files/user.d.ts (3)
2-3: Convert all imports to type-only.Static analysis flags these imports as only used for types:
-import { SubTier, type ExternalPluginIdent } from '@windy/types.d'; -import { FavFragment } from '@windy/favs'; +import type { SubTier, ExternalPluginIdent } from '@windy/types.d'; +import type { FavFragment } from '@windy/favs';🧰 Tools
🪛 ESLint
[error] 2-2: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 3-3: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
6-23: Add clarifying JSDoc toUserinterface.The
Userinterface includes fields likeavatar,requiresCookieConsent. Consider adding JSDoc annotations for each field to outline expected formats/types and usage constraints.
80-114: Validate potential expansions toLoginAndFinishAction.The union approach is valid. If you anticipate more actions, consider an enum to keep them organized. Alternatively, a single
actionproperty plus a variant type can also keep logic straightforward.libs/windy-sounding/types/client/Color.d.ts (4)
1-1: Consider sorting and spacing imports.
ESLint flagged an issue to run autofix to sort imports and add the required empty line after the import.Here is an example diff:
-import type { ColorGradient, AnyColorIdent, RGBA, RGBString } from './d.ts.files/Color.d'; +import type { + AnyColorIdent, + ColorGradient, + RGBA, + RGBString +} from './d.ts.files/Color.d';🧰 Tools
🪛 ESLint
[error] 1-2: Run autofix to sort these imports!
(simple-import-sort/imports)
21-22: Optional propertiesprepare?andopaque?warrant clarification.
Both fields are introduced as optional, yet it's unclear how they interplay with existing workflows. Consider providing doc comments or usage examples to clarify their purpose.
44-56: Add or update unit tests for new methods.
MethodsgetColorTable,loadCustomColor,hasCustomColor,setCustomColor, andremoveCustomColorintroduce asynchronous operations and new behavior. Ensure you have comprehensive test coverage to confirm all paths (including error handling) are verified.Would you like a basic suite of test utilities generated to facilitate these tests?
126-128:regenerateColorTablemay affect performance.
This private property suggests we’re re-computing an expensive color table. Ensure it’s not invoked unnecessarily or at high frequency, as it could degrade performance.libs/windy-sounding/types/client/d.ts.files/plugins.d.ts (3)
1-1: Useimport typefor purely type-based imports.
ESLint suggests that when imports are used solely for type declarations, you should useimport type. This improves clarity and can reduce compiled output.-import { BottomSveltePlugin } from '@windy/BottomSveltePlugins'; +import type { BottomSveltePlugin } from '@windy/BottomSveltePlugins';🧰 Tools
🪛 ESLint
[error] 1-1: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
7-14: Add usage documentation for new BottomSveltePlugins.
Properties'mobile-calendar','progress-bar','day-switcher','cap-alerts', andaccumulationscan affect UI behavior. Provide or reference usage notes for third-party developers and confirm thorough testing.
99-99: New'heatmaps-redirect'property.
Document or clarify how'heatmaps-redirect'is intended to be used. If it triggers a new flow, ensure event listeners or watchers are in place.libs/windy-sounding/types/client/d.ts.files/broadcast.d.ts (3)
19-27: Leverageimport typefor efficiency.
Several imports at lines 19, 24-27 are used exclusively as types. Refactor them toimport typeto adhere to recommended TypeScript best practices and reduce extraneous code in compiled output.-import { GeolocationInfo, LatLon, WeatherParameters } from '@windy/interfaces.d'; +import type { GeolocationInfo, LatLon, WeatherParameters } from '@windy/interfaces.d'; -import { Plugins } from '@windy/plugins.d'; +import type { Plugins } from '@windy/plugins.d';🧰 Tools
🪛 ESLint
[error] 11-27: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 19-19: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 20-20: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 21-21: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 22-22: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
80-81: Fix mismatch in plugin event docstrings.
Line 80's doc says "Plugin was successfully loaded and closed," but the actual event name ispluginOpened. Consider correcting the doc comment to reflect that the plugin is now opened, not closed.- /** Plugin was successfully loaded and closed */ + /** Plugin was successfully opened */
84-84: Document the newly introducedpluginMountedevent.
This event signals that a Svelte plugin is successfully mounted. Clarify any difference betweenpluginOpenedandpluginMountedin your docs to guide plugin developers using this interface.libs/windy-sounding/types/client/Product.d.ts (6)
3-9: Consider adding a blank line after imports to comply with style rules.ESLint indicates a missing empty line after the last import that isn't followed by another import. Adding a blank line can improve readability and fulfill import style conventions.
import * as http from '@windy/http'; + import type { MinifestObject } from '@windy/Calendar.d'; import type { Layers } from '@windy/Layer.d'; import type { LatLon } from '@windy/interfaces'; import type { Isolines, Levels, Overlays, Products } from '@windy/rootScope.d'; import type { ISODateString, ProductCategory, ProductIdent, Timestamp, YYYYMMDDHH } from '@windy/types'; export type DataQuality = 'normal' | 'high' | 'low' | 'ultra' | 'extreme'; export type FileSuffix = 'png' | 'jpg' | 'webp';🧰 Tools
🪛 ESLint
[error] 7-7: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
82-82: Revisit doc phrasing.The phrase "Noneffective" in this doc comment can be unclear. Consider clarifying the intent, for example "This property is used for daily-updated data."
210-212: Keep property usage distinct or combine if possible.
serverandmetadataServerare both optional. If they represent separate endpoints, this is fine; otherwise, consider combining them or clearly distinguishing their purposes to simplify usage.
219-230: Correct doc block wording.There's a minor typo: "This product supper accumulations" → "This product supports accumulations." Consider updating the doc comment for clarity.
- * This product supper accumulations + * This product supports accumulations
237-237: Avoid confusing void in union return types.Returning
voidcan be unclear for consumers of your API. Replacingvoidwithundefined(or removing the union if no return type is expected) can remove ambiguity.- moveTs(moveRight: boolean, isAccu?: boolean): boolean | void; + moveTs(moveRight: boolean, isAccu?: boolean): boolean | undefined;🧰 Tools
🪛 Biome (1.9.4)
[error] 237-237: void is confusing inside a union type.
Unsafe fix: Use undefined instead.
(lint/suspicious/noConfusingVoidType)
251-258: Consider logging when older minifest is retained.The
getUpdatedMinifest()logic keeps the existing minifest if the incoming one is older, which is sensible. Adding a brief log statement could help debug if stale data or unexpected updates occur.libs/windy-sounding/types/client/d.ts.files/dataSpecifications.d.ts (11)
22-25: Adhere to import sorting and consistent type usage.ESLint suggests sorting imports; also ensure all imports that are only used as types are consistently prefixed with
import type. Doing so helps code clarity while meeting style requirements.
53-55: Provide defaults or validation for new notification fields.The new optional fields
preferredNotificationTime,frequencyDays,usedTimezoneNamemight benefit from default handling or checks to avoid undefined states in usage.
213-216: Add brief doc on toggling isolines.
isolinesOnis self-explanatory, but a short comment clarifying typical usage context (e.g., "Set to true to show isobars, isohypses, etc.") could improve maintainability.
324-325: Document stormSettingsLightning usage.While self-descriptive, it might help to clarify how storm lightning settings are toggled or used in the UI.
341-344: Clarify unit for time zone offset.
lastTimezoneOffsetimplies minutes offset from UTC. If so, explicitly stating the unit within comments can help prevent confusion./** * The difference in minutes between UTC and the local time on the device. */ -lastTimezoneOffset: DataSpecificationsObject<number>; +lastTimezoneOffset: DataSpecificationsObject<number>; // offset in minutes
445-445: Optional naming in detailLocation.The new shape
(LatLon & { name?: string; id?: string }) | nullis more flexible. Be sure to handle generators or code that expects a guaranteed name or ID gracefully.
802-813: Streamline consent configurations.Multiple consent flags (
consent,analyticsConsentRequired,youtubeConsent,twitterConsent) exist. Evaluate whether they can be unified or nested to reduce duplication.
841-846: Use doc comment for persistentWidgets.
persistentWidgetsis new; clarifying how it affects the widget lifecycle helps maintainers.
847-851: UserInterests array.Storing arrays of
UserInterest[]is valid, but consider if an enum-based approach or stronger typed array can further clarify user-specific domain logic.
852-859: Consolidate location permission flags.
onboardingFinished,locationPermissionsGranted, and related toggles are helpful but might be combined under a "userOnboarding" object to keep the store more cohesive.
860-865: Combine or rename new user actions.
loginAndFinishActionplus afavsFilterobject might overlap with other user flows. Consider grouping similar user post-login behaviors in a single state slice to reduce sprawl.libs/windy-sounding/types/client/langFiles.d.ts (1)
1-2: Clarify the purpose of the default string array.
_defaultis exported as an array of strings. If it represents language codes or translations, consider a more descriptive name or doc comment to guide contributors.libs/windy-sounding/types/client/appsFlyer.d.ts (1)
1-1: Add newline after import statement.Add a newline after the import statement to follow ESLint rules.
import type { AppsFlyerPlugin } from 'appsflyer-capacitor-plugin/src/definitions'; +🧰 Tools
🪛 ESLint
[error] 1-1: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/AccessProducts.d.ts (1)
1-2: Organize imports for better readability.Add a newline after imports and sort them for consistency.
import { Product } from '@windy/Product'; import type { ProductInitParams } from '@windy/Product'; +🧰 Tools
🪛 ESLint
[error] 1-2: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/cityLabels.d.ts (1)
6-6: Consider using a more specific type forlabelsLayer.Using
anytype reduces type safety. Consider defining an interface that describes the shape of the labels layer.interface LabelsLayer { // Add relevant properties and methods } export declare const labelsLayer: LabelsLayer;libs/windy-sounding/types/client/IconProducts.d.ts (1)
1-3: Add newline after imports for better readability.Add a newline after the imports block.
import { Product } from '@windy/Product'; import type { Overlays } from '@windy/rootScope.d'; import type { ProductInitParams } from './Product'; +🧰 Tools
🪛 ESLint
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/colorGradients.d.ts (1)
6-9: Consider adding JSDoc comments for the exported constants.While the constants are well-typed, adding JSDoc comments would improve documentation by describing their specific use cases and expected values.
libs/windy-sounding/types/client/BottomSveltePlugins.d.ts (1)
9-12: Consider adding JSDoc comments for the class.While the class is well-structured, adding JSDoc comments would improve documentation by describing its purpose and usage.
libs/windy-sounding/types/client/promo.d.ts (1)
7-10: Fix parameter naming inconsistency.The parameter name varies between
idandidentacross different functions. Consider standardizing toidfor consistency.-export declare const neverSee: (ident: string) => void; +export declare const neverSee: (id: string) => void;Also applies to: 11-14, 15-21
libs/windy-sounding/types/client/RadarPlusProduct.d.ts (1)
18-18: Replacevoidwithundefinedin union type.Using
voidin a union type can be confusing. Consider usingundefinedinstead for better type clarity.- moveTs(moveRight: boolean): boolean | void; + moveTs(moveRight: boolean): boolean | undefined;🧰 Tools
🪛 Biome (1.9.4)
[error] 18-18: void is confusing inside a union type.
Unsafe fix: Use undefined instead.
(lint/suspicious/noConfusingVoidType)
libs/windy-sounding/types/client/d.ts.files/rootScope.d.ts (1)
23-25: Use consistent type imports.For consistency with other type imports in the file, consider using the
import typesyntax.-export type Pois = keyof typeof import('./rootScope').pois; -export type Isolines = typeof import('./rootScope').isolinesType[number]; +import type { pois, isolinesType } from './rootScope'; +export type Pois = keyof typeof pois; +export type Isolines = typeof isolinesType[number];🧰 Tools
🪛 ESLint
[error] 23-23:
import()type annotations are forbidden.(@typescript-eslint/consistent-type-imports)
[error] 25-25:
import()type annotations are forbidden.(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/d.ts.files/Calendar.d.ts (1)
1-1: Useimport typefor type-only imports.Since these imports are only used as types, use the
import typesyntax for better type safety and clarity.-import { Timestamp, ISODateString, LoadedTranslations } from '@windy/types.d'; +import type { Timestamp, ISODateString, LoadedTranslations } from '@windy/types.d';🧰 Tools
🪛 ESLint
[error] 1-1: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 1-1: Run autofix to sort these imports!
(simple-import-sort/imports)
libs/windy-sounding/types/client/geolocation.d.ts (1)
44-45: Remove useless empty export.The empty export statement is unnecessary as there are other exports in the file.
export declare function requestLocationPermissions(): Promise<boolean>; -export {};🧰 Tools
🪛 Biome (1.9.4)
[error] 44-45: This empty export is useless because there's another export or import.
This import makes useless the empty export.
Safe fix: Remove this useless empty export.
(lint/complexity/noUselessEmptyExport)
libs/windy-sounding/types/client/d.ts.files/products.d.ts (1)
1-9: Useimport typefor type-only imports.All imports in this file are used only as types. Use the
import typesyntax for better type safety and clarity.-import { AccessProduct, AccessCProduct } from '@windy/AccessProducts'; -import { AromeProduct } from '@windy/AromeProduct'; -import { EcmwfAnalysisProduct } from '@windy/EcmwfAnalysisProduct'; -import { EcmwfProduct } from '@windy/EcmwfProduct'; -import { Product } from '@windy/Product'; -import { RadarPlusProduct } from '@windy/RadarPlusProduct'; -import { SatelliteProduct } from '@windy/SatelliteProduct'; -import { Products } from '@windy/rootScope.d'; +import type { AccessProduct, AccessCProduct } from '@windy/AccessProducts'; +import type { AromeProduct } from '@windy/AromeProduct'; +import type { EcmwfAnalysisProduct } from '@windy/EcmwfAnalysisProduct'; +import type { EcmwfProduct } from '@windy/EcmwfProduct'; +import type { Product } from '@windy/Product'; +import type { RadarPlusProduct } from '@windy/RadarPlusProduct'; +import type { SatelliteProduct } from '@windy/SatelliteProduct'; +import type { Products } from '@windy/rootScope.d';🧰 Tools
🪛 ESLint
[error] 1-1: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 1-9: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 3-3: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 4-4: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 5-5: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 6-6: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 7-7: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 9-9: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/SveltePlugin.d.ts (1)
4-4: Add newline after import statement.Add an empty line after the import statement for better code organization.
import type { BottomSveltePlugins, SveltePanePlugins, SveltePlugins } from '@windy/plugins.d'; +🧰 Tools
🪛 ESLint
[error] 1-4: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 4-4: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/ExternalSveltePlugin.d.ts (1)
50-50: Consider usingundefinedinstead ofvoidin the union type.The return type
void | booleancan be confusing. Usingundefined | booleanwould be more explicit and aligns with TypeScript best practices.- open({ params, disableOpeningAnimation, qs }: PluginOpeningOptions<'windy-external-plugin'>): Promise<void | boolean>; + open({ params, disableOpeningAnimation, qs }: PluginOpeningOptions<'windy-external-plugin'>): Promise<undefined | boolean>;🧰 Tools
🪛 Biome (1.9.4)
[error] 50-50: void is confusing inside a union type.
Unsafe fix: Use undefined instead.
(lint/suspicious/noConfusingVoidType)
libs/windy-sounding/types/client/d.ts.files/favs.d.ts (1)
1-2: Sort imports alphabetically.The imports should be sorted for better maintainability.
-import type { RouteType, StationId, Timestamp } from '@windy/types'; -import type { LatLon, Alert, AlertProps } from '@windy/interfaces'; +import type { Alert, AlertProps, LatLon } from '@windy/interfaces'; +import type { RouteType, StationId, Timestamp } from '@windy/types';🧰 Tools
🪛 ESLint
[error] 1-2: Run autofix to sort these imports!
(simple-import-sort/imports)
libs/windy-sounding/types/client/Renderer.d.ts (1)
1-2: Sort imports for better organization.The imports should be sorted alphabetically for better maintainability.
-import type { FullRenderParameters } from './d.ts.files/Layer.d'; -import type { Renderers, AllowedUserControls, AllowedRenderPlugins, RendererInitParams } from './d.ts.files/Renderer.d'; +import type { FullRenderParameters } from './d.ts.files/Layer.d'; +import type { AllowedRenderPlugins, AllowedUserControls, RendererInitParams, Renderers } from './d.ts.files/Renderer.d';🧰 Tools
🪛 ESLint
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
libs/windy-sounding/types/client/idbInstances.d.ts (1)
63-63: Consider using a type alias for the complex template literal type.The template literal type
${string}_${string}/${string}could be made more maintainable and self-documenting with a type alias.+type NotamId = `${string}_${string}/${string}`; -export declare const markedNotamsIdb: IDB<`${string}_${string}/${string}`, MarkedNotams, MarkedNotams>; +export declare const markedNotamsIdb: IDB<NotamId, MarkedNotams, MarkedNotams>;libs/windy-sounding/types/client/Evented.d.ts (1)
87-90: Enhance documentation for the offAll method.While the basic purpose is documented, consider adding:
- Example usage scenarios
- Warning about the impact on all subscriptions
- Best practices for when to use this vs. individual
offcalls/** * Unhooks all registered callbacks + * + * @example + * ```typescript + * // Clear all subscriptions when component unmounts + * componentWillUnmount() { + * this.events.offAll(); + * } + * ``` + * + * @warning This will remove ALL event subscriptions. + * Consider using individual `off` calls if you need to preserve some listeners. */libs/windy-sounding/types/client/d.ts.files/alerts.d.ts (1)
66-76: Enhance documentation for TimeAlertCondition interface.The interface has good documentation but could benefit from more specific examples and validation rules for the properties.
export interface TimeAlertCondition extends AlertConditionBase { /** Days of the week in which the conditions must be met */ days: Weekday[]; /** Hours of the day in which the conditions must be met */ hours?: NumberRange[]; /** Minimum duration of meeting the conditions to send the notification */ minDurationHours: number; /** Range of days which will be checked for conditions */ rangeDays?: NumberRange; + /** Type identifier for time-based alert conditions */ type: AlertConditionType.Time; }libs/windy-sounding/types/client/Overlay.d.ts (1)
8-9: Organize imports.The imports should be organized with a blank line after the last import.
import type { LoadedTranslations, HTMLString } from '@windy/types'; import type { RGBAString } from '@windy/Color.d'; + export type UsedOverlays = Overlays | 'swell' | 'satelliteIRBT';🧰 Tools
🪛 ESLint
[error] 1-9: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 9-9: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/WindowPlugin.d.ts (1)
8-11: Organize imports.The imports should be organized with a blank line after the last import.
import type { BottomSveltePlugins, SveltePanePlugins, SveltePlugins, TagPlugins } from '@windy/plugins.d'; import type { ParsedQueryString } from '@windy/queryString'; import type { ListeningPriority } from '@windy/singleclick.d'; import type { LoadedTranslations } from '@windy/types'; + export interface WindowPlugins extends TagPlugins, SveltePlugins, SveltePanePlugins, BottomSveltePlugins {}🧰 Tools
🪛 ESLint
[error] 1-11: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 11-11: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/d.ts.files/plugin-params.d.ts (1)
1-2: Organize imports and use consistent type imports.The imports should use consistent
import typesyntax and be organized with blank lines between groups.-import { Fav, FavId } from '@windy/favs.d'; -import { StartupArticleData, WhatsNewData } from '@windy/startup.d'; +import type { Fav, FavId } from '@windy/favs.d'; +import type { StartupArticleData, WhatsNewData } from '@windy/startup.d'; + import { HiddenReasonType, ReasonTypes } from '@plugins/subscription/subscription';Also applies to: 17-17
🧰 Tools
🪛 ESLint
[error] 1-1: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 1-18: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/mobile.d.ts (1)
142-144: Organize imports.Move the imports to the top of the file.
-import './ui/patchAndPromoCtrl'; -import './ui/storeLastPosition'; -import './services/customColors'; +import './leafletExt/CanvasLayer'; +import './ui/patchAndPromoCtrl'; +import './ui/storeLastPosition'; +import './services/customColors'; + export * as errorLogger from './utils/errorLogger';🧰 Tools
🪛 ESLint
[error] 142-142: Import in body of module; reorder to top.
(import/first)
[error] 143-143: Import in body of module; reorder to top.
(import/first)
[error] 144-144: Import in body of module; reorder to top.
(import/first)
libs/windy-sounding/types/client/TileLayer.d.ts (1)
1-3: Refactor and Order Import StatementsThe consolidated type import (line 3) now aligns with the updated naming convention. However, ESLint suggests that imports should be sorted and that there should be an empty line after the import block not immediately followed by non-import code. Consider running your formatter (or applying an autofix) using a tool like simple-import-sort to address these issues.
🧰 Tools
🪛 ESLint
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/broadcast.d.ts (1)
9-10: Ensure Proper Import Block SeparationThe import on line 9 has been updated to reference
'./broadcast.d', which is consistent with the new naming scheme. However, ESLint indicates that there should be an empty line after the import block. Please insert an empty line between the import statement and the next declaration to satisfy the linting rules.🧰 Tools
🪛 ESLint
[error] 9-9: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/DataTiler.d.ts (1)
1-4: Update Import Paths and OrderThe changes on lines 2 and 4 update the import paths to use the
.dsuffix, aligning with the new structure across the project. ESLint’s feedback to sort the imports and add an empty line between logical groups should also be addressed. Consider running an autofix to automatically order these imports.🧰 Tools
🪛 ESLint
[error] 1-1: All imports in the declaration are only used as types. Use
import type.(@typescript-eslint/consistent-type-imports)
[error] 1-4: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 4-4: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
libs/windy-sounding/package-lock.jsonis excluded by!**/package-lock.jsonpackage-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (107)
libs/optimizer/package.json(1 hunks)libs/secrets/package.json(1 hunks)libs/windy-sounding/CHANGELOG.md(1 hunks)libs/windy-sounding/package.json(1 hunks)libs/windy-sounding/src/env.d.ts(1 hunks)libs/windy-sounding/src/redux/meta.ts(1 hunks)libs/windy-sounding/src/redux/plugin-slice.ts(1 hunks)libs/windy-sounding/src/util/utils.ts(2 hunks)libs/windy-sounding/types/client/AccessProducts.d.ts(1 hunks)libs/windy-sounding/types/client/Bar.d.ts(0 hunks)libs/windy-sounding/types/client/BindedBar.d.ts(0 hunks)libs/windy-sounding/types/client/BindedCheckbox.d.ts(0 hunks)libs/windy-sounding/types/client/BindedSwitch.d.ts(0 hunks)libs/windy-sounding/types/client/BottomSveltePlugins.d.ts(1 hunks)libs/windy-sounding/types/client/BottomTagPlugin.d.ts(0 hunks)libs/windy-sounding/types/client/Calendar.d.ts(5 hunks)libs/windy-sounding/types/client/Color.d.ts(3 hunks)libs/windy-sounding/types/client/DataTiler.d.ts(1 hunks)libs/windy-sounding/types/client/DraggableDiv.d.ts(0 hunks)libs/windy-sounding/types/client/Evented.d.ts(1 hunks)libs/windy-sounding/types/client/ExternalSveltePlugin.d.ts(2 hunks)libs/windy-sounding/types/client/GhostBox.d.ts(0 hunks)libs/windy-sounding/types/client/GlObj.d.ts(1 hunks)libs/windy-sounding/types/client/IDB.d.ts(1 hunks)libs/windy-sounding/types/client/IconProducts.d.ts(1 hunks)libs/windy-sounding/types/client/Layer.d.ts(1 hunks)libs/windy-sounding/types/client/Legend.d.ts(0 hunks)libs/windy-sounding/types/client/LongTap.d.ts(0 hunks)libs/windy-sounding/types/client/Metric.d.ts(4 hunks)libs/windy-sounding/types/client/MetricClasses.d.ts(2 hunks)libs/windy-sounding/types/client/MobileCalendar.d.ts(0 hunks)libs/windy-sounding/types/client/OfflineMessagesClasses.d.ts(0 hunks)libs/windy-sounding/types/client/Overlay.d.ts(5 hunks)libs/windy-sounding/types/client/OverlayClasses.d.ts(1 hunks)libs/windy-sounding/types/client/Plugin.d.ts(2 hunks)libs/windy-sounding/types/client/Product.d.ts(4 hunks)libs/windy-sounding/types/client/ProductSwitch.d.ts(0 hunks)libs/windy-sounding/types/client/RadarPlusProduct.d.ts(1 hunks)libs/windy-sounding/types/client/Renderer.d.ts(2 hunks)libs/windy-sounding/types/client/Scrollable.d.ts(0 hunks)libs/windy-sounding/types/client/SveltePlugin.d.ts(2 hunks)libs/windy-sounding/types/client/Switch.d.ts(0 hunks)libs/windy-sounding/types/client/TileLayer.d.ts(1 hunks)libs/windy-sounding/types/client/TimestampBar.d.ts(0 hunks)libs/windy-sounding/types/client/TopoMap.d.ts(1 hunks)libs/windy-sounding/types/client/WindowPlugin.d.ts(2 hunks)libs/windy-sounding/types/client/appsFlyer.d.ts(1 hunks)libs/windy-sounding/types/client/baseMap.d.ts(1 hunks)libs/windy-sounding/types/client/broadcast.d.ts(1 hunks)libs/windy-sounding/types/client/cityLabels.d.ts(1 hunks)libs/windy-sounding/types/client/cloudSync.d.ts(1 hunks)libs/windy-sounding/types/client/colorGradients.d.ts(1 hunks)libs/windy-sounding/types/client/customColors.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/Calendar.d.ts(2 hunks)libs/windy-sounding/types/client/d.ts.files/Color.d.ts(2 hunks)libs/windy-sounding/types/client/d.ts.files/LabelsLayer.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/Layer.d.ts(4 hunks)libs/windy-sounding/types/client/d.ts.files/Metric.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/Product.d.ts(0 hunks)libs/windy-sounding/types/client/d.ts.files/Renderer.d.ts(2 hunks)libs/windy-sounding/types/client/d.ts.files/alerts.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/broadcast.d.ts(4 hunks)libs/windy-sounding/types/client/d.ts.files/dataSpecifications.d.ts(12 hunks)libs/windy-sounding/types/client/d.ts.files/favs.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/incomingMessages.d.ts(0 hunks)libs/windy-sounding/types/client/d.ts.files/notifications.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/plugin-params.d.ts(8 hunks)libs/windy-sounding/types/client/d.ts.files/plugins.d.ts(4 hunks)libs/windy-sounding/types/client/d.ts.files/pois.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/products.d.ts(3 hunks)libs/windy-sounding/types/client/d.ts.files/rootScope.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/startup.d.ts(1 hunks)libs/windy-sounding/types/client/d.ts.files/storage.d.ts(2 hunks)libs/windy-sounding/types/client/d.ts.files/trans.d.ts(0 hunks)libs/windy-sounding/types/client/d.ts.files/user.d.ts(2 hunks)libs/windy-sounding/types/client/dataSpecifications.d.ts(1 hunks)libs/windy-sounding/types/client/deviceLogging.d.ts(2 hunks)libs/windy-sounding/types/client/embed2.d.ts(2 hunks)libs/windy-sounding/types/client/errorLogger.d.ts(1 hunks)libs/windy-sounding/types/client/favs.d.ts(0 hunks)libs/windy-sounding/types/client/fetch.d.ts(4 hunks)libs/windy-sounding/types/client/format.d.ts(1 hunks)libs/windy-sounding/types/client/ga.d.ts(1 hunks)libs/windy-sounding/types/client/geolocation.d.ts(3 hunks)libs/windy-sounding/types/client/globals.d.ts(1 hunks)libs/windy-sounding/types/client/http.d.ts(2 hunks)libs/windy-sounding/types/client/idbInstances.d.ts(1 hunks)libs/windy-sounding/types/client/langFiles.d.ts(1 hunks)libs/windy-sounding/types/client/layers.d.ts(2 hunks)libs/windy-sounding/types/client/lib.d.ts(2 hunks)libs/windy-sounding/types/client/loadArticlesOrWhatsNew.d.ts(1 hunks)libs/windy-sounding/types/client/log.d.ts(1 hunks)libs/windy-sounding/types/client/lruCache.d.ts(1 hunks)libs/windy-sounding/types/client/map.d.ts(3 hunks)libs/windy-sounding/types/client/mobile.d.ts(6 hunks)libs/windy-sounding/types/client/models.d.ts(2 hunks)libs/windy-sounding/types/client/notifications.d.ts(1 hunks)libs/windy-sounding/types/client/offlineController.d.ts(0 hunks)libs/windy-sounding/types/client/overlays.d.ts(2 hunks)libs/windy-sounding/types/client/params.d.ts(0 hunks)libs/windy-sounding/types/client/permanentPromos.d.ts(1 hunks)libs/windy-sounding/types/client/persistentStorage.d.ts(1 hunks)libs/windy-sounding/types/client/picker.d.ts(1 hunks)libs/windy-sounding/types/client/plugins.d.ts(1 hunks)libs/windy-sounding/types/client/pois.d.ts(2 hunks)libs/windy-sounding/types/client/products.d.ts(1 hunks)libs/windy-sounding/types/client/promo.d.ts(1 hunks)
⛔ Files not processed due to max files limit (29)
- libs/windy-sounding/types/client/pushNotifications.d.ts
- libs/windy-sounding/types/client/queryString.d.ts
- libs/windy-sounding/types/client/renderUtils.d.ts
- libs/windy-sounding/types/client/renderers.d.ts
- libs/windy-sounding/types/client/rootScope.d.ts
- libs/windy-sounding/types/client/router.d.ts
- libs/windy-sounding/types/client/seoParser.d.ts
- libs/windy-sounding/types/client/serviceWorkerCtrl.d.ts
- libs/windy-sounding/types/client/singleclick.d.ts
- libs/windy-sounding/types/client/startupWeather.d.ts
- libs/windy-sounding/types/client/storage.d.ts
- libs/windy-sounding/types/client/store.d.ts
- libs/windy-sounding/types/client/storeLastPosition.d.ts
- libs/windy-sounding/types/client/subscription.d.ts
- libs/windy-sounding/types/client/swDownloader.d.ts
- libs/windy-sounding/types/client/swProxy.d.ts
- libs/windy-sounding/types/client/swUtils.d.ts
- libs/windy-sounding/types/client/trans.d.ts
- libs/windy-sounding/types/client/user.d.ts
- libs/windy-sounding/types/client/userAlerts.d.ts
- libs/windy-sounding/types/client/userConsent.d.ts
- libs/windy-sounding/types/client/userFavs.d.ts
- libs/windy-sounding/types/client/utils.d.ts
- libs/windy-sounding/types/iconfont.d.ts
- libs/windy-sounding/types/interfaces.d.ts
- libs/windy-sounding/types/lang-files.d.ts
- libs/windy-sounding/types/offline.d.ts
- libs/windy-sounding/types/types.d.ts
- tsconfig.base.json
💤 Files with no reviewable changes (21)
- libs/windy-sounding/types/client/params.d.ts
- libs/windy-sounding/types/client/BottomTagPlugin.d.ts
- libs/windy-sounding/types/client/Legend.d.ts
- libs/windy-sounding/types/client/d.ts.files/incomingMessages.d.ts
- libs/windy-sounding/types/client/TimestampBar.d.ts
- libs/windy-sounding/types/client/BindedSwitch.d.ts
- libs/windy-sounding/types/client/ProductSwitch.d.ts
- libs/windy-sounding/types/client/Switch.d.ts
- libs/windy-sounding/types/client/DraggableDiv.d.ts
- libs/windy-sounding/types/client/Bar.d.ts
- libs/windy-sounding/types/client/GhostBox.d.ts
- libs/windy-sounding/types/client/LongTap.d.ts
- libs/windy-sounding/types/client/d.ts.files/trans.d.ts
- libs/windy-sounding/types/client/MobileCalendar.d.ts
- libs/windy-sounding/types/client/BindedBar.d.ts
- libs/windy-sounding/types/client/Scrollable.d.ts
- libs/windy-sounding/types/client/BindedCheckbox.d.ts
- libs/windy-sounding/types/client/OfflineMessagesClasses.d.ts
- libs/windy-sounding/types/client/d.ts.files/Product.d.ts
- libs/windy-sounding/types/client/favs.d.ts
- libs/windy-sounding/types/client/offlineController.d.ts
✅ Files skipped from review due to trivial changes (12)
- libs/windy-sounding/types/client/log.d.ts
- libs/secrets/package.json
- libs/optimizer/package.json
- libs/windy-sounding/types/client/dataSpecifications.d.ts
- libs/windy-sounding/types/client/permanentPromos.d.ts
- libs/windy-sounding/types/client/errorLogger.d.ts
- libs/windy-sounding/src/redux/meta.ts
- libs/windy-sounding/types/client/customColors.d.ts
- libs/windy-sounding/src/redux/plugin-slice.ts
- libs/windy-sounding/types/client/GlObj.d.ts
- libs/windy-sounding/types/client/format.d.ts
- libs/windy-sounding/types/client/Layer.d.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- libs/windy-sounding/package.json
🧰 Additional context used
🪛 ESLint
libs/windy-sounding/types/client/AccessProducts.d.ts
[error] 1-2: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/IconProducts.d.ts
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/BottomSveltePlugins.d.ts
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/appsFlyer.d.ts
[error] 1-1: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/d.ts.files/rootScope.d.ts
[error] 23-23: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
[error] 25-25: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/d.ts.files/Layer.d.ts
[error] 2-2: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/colorGradients.d.ts
[error] 4-5: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 5-5: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/promo.d.ts
[error] 1-1: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/WindowPlugin.d.ts
[error] 11-11: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/d.ts.files/Calendar.d.ts
[error] 1-1: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 1-1: Run autofix to sort these imports!
(simple-import-sort/imports)
libs/windy-sounding/types/client/d.ts.files/favs.d.ts
[error] 1-2: Run autofix to sort these imports!
(simple-import-sort/imports)
libs/windy-sounding/types/client/geolocation.d.ts
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
libs/windy-sounding/types/client/d.ts.files/user.d.ts
[error] 2-2: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 3-3: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/d.ts.files/plugins.d.ts
[error] 1-1: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 2-2: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 3-3: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 4-4: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 5-5: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/MetricClasses.d.ts
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/overlays.d.ts
[error] 197-197: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
[error] 198-198: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
[error] 198-198: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
[error] 250-250: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/Renderer.d.ts
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
libs/windy-sounding/types/client/embed2.d.ts
[error] 13-13: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
[error] 14-21: Run autofix to sort these exports!
(simple-import-sort/exports)
[error] 22-22: Import in body of module; reorder to top.
(import/first)
[error] 23-23: Import in body of module; reorder to top.
(import/first)
[error] 24-24: Import in body of module; reorder to top.
(import/first)
[error] 24-24: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
[error] 26-26: Import in body of module; reorder to top.
(import/first)
[error] 27-27: Import in body of module; reorder to top.
(import/first)
[error] 28-28: Import in body of module; reorder to top.
(import/first)
[error] 28-28: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/TopoMap.d.ts
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/notifications.d.ts
[error] 1-2: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/d.ts.files/storage.d.ts
[error] 2-2: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 3-3: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/RadarPlusProduct.d.ts
[error] 1-4: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 4-4: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/d.ts.files/products.d.ts
[error] 1-1: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 1-9: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 3-3: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 4-4: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 5-5: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 6-6: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 7-7: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 9-9: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/mobile.d.ts
[error] 142-142: Import in body of module; reorder to top.
(import/first)
[error] 143-143: Import in body of module; reorder to top.
(import/first)
[error] 144-144: Import in body of module; reorder to top.
(import/first)
libs/windy-sounding/types/client/SveltePlugin.d.ts
[error] 4-4: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/d.ts.files/plugin-params.d.ts
[error] 1-1: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 1-18: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 17-17: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/Overlay.d.ts
[error] 9-9: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/d.ts.files/dataSpecifications.d.ts
[error] 1-35: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 28-28: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/Metric.d.ts
[error] 1-13: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 13-13: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/d.ts.files/broadcast.d.ts
[error] 11-27: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 19-19: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 20-20: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 21-21: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 22-22: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/d.ts.files/alerts.d.ts
[error] 1-1: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 1-4: Run autofix to sort these imports!
(simple-import-sort/imports)
libs/windy-sounding/types/client/Color.d.ts
[error] 1-2: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 2-2: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/idbInstances.d.ts
[error] 1-1: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 1-9: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 9-9: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
[error] 15-15: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
[error] 23-23: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
[error] 24-24: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/types/client/OverlayClasses.d.ts
[error] 5-5: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/Product.d.ts
[error] 7-7: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/Calendar.d.ts
[error] 7-7: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/fetch.d.ts
[error] 1-11: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 11-11: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/DataTiler.d.ts
[error] 1-4: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 4-4: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/TileLayer.d.ts
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/broadcast.d.ts
[error] 9-9: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/plugins.d.ts
[error] 1-1: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/products.d.ts
[error] 1-1: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
🪛 Biome (1.9.4)
libs/windy-sounding/types/client/ExternalSveltePlugin.d.ts
[error] 50-50: void is confusing inside a union type.
Unsafe fix: Use undefined instead.
(lint/suspicious/noConfusingVoidType)
libs/windy-sounding/types/client/persistentStorage.d.ts
[error] 7-8: This empty export is useless because there's another export or import.
This export makes useless the empty export.
Safe fix: Remove this useless empty export.
(lint/complexity/noUselessEmptyExport)
libs/windy-sounding/types/client/geolocation.d.ts
[error] 44-45: This empty export is useless because there's another export or import.
This import makes useless the empty export.
Safe fix: Remove this useless empty export.
(lint/complexity/noUselessEmptyExport)
libs/windy-sounding/types/client/RadarPlusProduct.d.ts
[error] 18-18: void is confusing inside a union type.
Unsafe fix: Use undefined instead.
(lint/suspicious/noConfusingVoidType)
libs/windy-sounding/types/client/Product.d.ts
[error] 237-237: void is confusing inside a union type.
Unsafe fix: Use undefined instead.
(lint/suspicious/noConfusingVoidType)
[error] 241-241: void is confusing inside a union type.
Unsafe fix: Use undefined instead.
(lint/suspicious/noConfusingVoidType)
🪛 LanguageTool
libs/windy-sounding/CHANGELOG.md
[typographical] ~3-~3: If you want to indicate numerical ranges or time ranges, consider using an en dash.
Context: # Release history ## 4.1.11 - Feb 20, 2025 - Sync with the latest win...
(DASH_RULE)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: Cloudflare Pages
🔇 Additional comments (115)
libs/windy-sounding/types/client/cloudSync.d.ts (1)
11-14: Great improvement to the API!The return type change from
voidtobooleanalong with the clear JSDoc documentation improves the API's functionality by allowing consumers to track whether data was actually merged. This aligns well with the functionstoreSettings()which follows a similar pattern.libs/windy-sounding/types/client/d.ts.files/notifications.d.ts (1)
4-5: LGTM! Good addition of pagination support.The addition of
pageSizeandcurrentparameters enables proper pagination support, which is essential for handling large notification lists efficiently.libs/windy-sounding/types/client/d.ts.files/Layer.d.ts (2)
74-74: LGTM: New layer metrics added.The new
radarPlusandtopoMapproperties are well-defined and consistent with the interface's existing pattern.Also applies to: 95-95
187-190: LGTM: Well-documented optional parameter added.The new
acRangeInHoursproperty is properly typed and documented, following TypeScript best practices.libs/windy-sounding/types/client/d.ts.files/startup.d.ts (7)
1-2: LGTM! Clean type-only imports.The imports follow TypeScript best practices by using type-only imports.
4-4: LGTM! Clear and descriptive type definition.The union type is well-defined with self-documenting values.
6-8: LGTM! Well-structured discriminator interface.The interface follows the TypeScript discriminated union pattern correctly.
10-13: LGTM! API response interface follows conventions.The interface properly uses kebab-case for REST API properties and optional fields for flexibility.
15-17: LGTM! Well-designed type intersection and narrowing.The interface effectively combines and narrows types for the discriminated union pattern.
34-38: LGTM! Clear tracking properties extension.The interface effectively extends the base type with well-named tracking properties.
40-59: LGTM! Excellent documentation and type usage.The interface is thoroughly documented with clear JSDoc comments and uses appropriate types for timestamps.
libs/windy-sounding/types/client/embed2.d.ts (3)
25-25: LGTM!The user service export follows the established pattern for service exports.
31-33: LGTM!The new map-related exports are well-organized and logically grouped with other map functionality.
45-45: LGTM!The notifications service export follows the established pattern for service exports.
libs/windy-sounding/types/client/notifications.d.ts (3)
4-4: Clarify error-handling strategy.
loadNotificationsreturns aPromise<void>without specifying any rejection or error detail. Consider whether additional error-handling or a more explicit return type (e.g.,Promise<HttpPayload<void>>) is needed.
9-12: Consider confirming batch processing sides.
markAllAsSeen()suggests batch updates. Confirm upstream or downstream code handles potential large requests and partial failures gracefully.
27-35: Document test notification behavior clearly.
sendTestNotificationreturnsvoid. Clarify if there is a success/failure callback or promise. This helps integrate safely into the calling code.libs/windy-sounding/types/client/d.ts.files/storage.d.ts (1)
46-54: Review the usage of dynamic keys with deprecation.You’ve introduced new dynamic keys (
recents${number},favs${number}, etc.) marked as deprecated. Verify whether these are strictly needed or can be fully replaced by the new IDB-based solution, to avoid confusion and ensure maintainability.libs/windy-sounding/types/client/d.ts.files/user.d.ts (1)
28-53: Leverage a discriminated union.
UserInfois effectively a discriminated union onauth. This is good practice. Ensure that calling code properly narrows onauthbefore accessinguserInfo.libs/windy-sounding/types/client/Color.d.ts (5)
3-9: Verify mandatorydefaultproperty usage.
Previously,defaultmight have been optional. Now it's required inColorInitParams. Ensure all call sites provide this property to avoid potential compile-time or runtime errors.
30-42: Assess new class fields for backward compatibility.
Fields likedefaultColorGradient,customColorGradient?,colors?,ident: AnyColorIdent,qualitative?, andstepsmight alter the existing initialization logic. Verify that older code usingColorremains compatible and that the broader codebase is updated to accommodate these changes.
62-63: Correctness of dark/light color transformation.
Although this is only a docstring change, double-check that the colorDark logic operates correctly, especially for extreme values.
90-90: EnsuregetColorGradientmatches usage expectations.
It now returns aColorGradientunconditionally. Verify that call sites expecting a possibly undefined value are updated accordingly.
94-94: Confirm error path incheckValidity.
The new signature is straightforward, but ensure that any false return is handled gracefully by callers, particularly if invalid objects lead to user-facing error messages or logs.libs/windy-sounding/types/client/d.ts.files/plugins.d.ts (4)
57-61: Ensure Map UI plugins align with new or changed overlays.
These expansions ('radar','satellite','radar-plus','map-selector') indicate new or updated map-related Svelte plugins. Validate correct loading priorities, layering, and user toggles.
66-85: Check optional plugin consistency.
Optional properties likewidgets,onboarding,rhbottom,'location-permission','mobile-ui','embed-ui',contextmenu,upload,screenshot,search,'startup-articles','picker-mobile'should be handled carefully during plugin initialization. Missing or null references can lead to runtime errors if not guarded.
95-95:isolinesplugin addition.
This plugin is now part ofPlainPlugins. Confirm that the rest of the codebase references it correctly (particularly if it was previously declared elsewhere).
106-109: Evaluate combinedPluginsandWindowPluginsinterfaces.
Merging TagPlugins, SveltePlugins, SveltePanePlugins, PlainPlugins, and BottomSveltePlugins into these composite interfaces can make them quite large. Confirm that the extended shape doesn’t introduce name collisions or overshadow more specialized plugin usage.libs/windy-sounding/types/client/d.ts.files/broadcast.d.ts (2)
110-115: Confirm favorite and alert changes are broadcast appropriately.
New eventsfavChangedandalertChangedmight require UI updates or data synchronization. Ensure subscribers receive these events and handle them gracefully.
134-151: Validate newleaflet-*andmaplibre-*events.
These varied events (leaflet-zoomIn,maplibre-fitBounds, etc.) could overlap in functionality. Confirm that no duplication or conflict arises and that each broadcast is distinct in usage. Also, confirm that calling code properly listens for the right event types.libs/windy-sounding/types/client/Product.d.ts (3)
36-45: Ensure fallback handling for new optional properties.The newly introduced
metadataServer,hasAccumulations,freeProduct, andhideProductSwitchfields are optional. Verify that code referencing these properties gracefully handles the case where they may be absent.
232-236: Double-check null vs. empty string usage.
refTime(): YYYYMMDDHH | ''andgetUpdateTimes(): { ... } | nullhighlight different ways of handling “no value.” For consistency, ensure the calling code expects an empty string vs.nullconsistently.
240-240: Confirm promise resolution type.
loadAndGetReftime()resolves toISODateString | undefined. Verify all callers handle theundefinedcase correctly, especially if the reference time is essential for subsequent logic.libs/windy-sounding/types/client/d.ts.files/dataSpecifications.d.ts (8)
30-31: Check usage of newly imported types.
import type { User, LoginAndFinishAction }has been added. Verify these types are indeed consumed in the new code segments, otherwise remove to keep the file lean.
35-35: Confirmed new import is correctly referenced.
NumberRangeimport appears straightforward; no concerns here.🧰 Tools
🪛 ESLint
[error] 1-35: Run autofix to sort these imports!
(simple-import-sort/imports)
186-188: Renamed accumulations property.
acRangereplaces the previous accumulations time prop. Ensure any referencing code is updated to match.
209-211: Renamed isolines property.
isolinesTypeclarifies the purpose better than a genericisolines. This rename is a good improvement for clarity.
310-317: Map customization enhancements.Added
mapLibraryand a new doc block formap. Verify that switching map libraries does not conflict with the selected map type (sznmap,sat, etc.).
418-421: Ensure consistent layer naming for airspaces.
displayAirspacesis a straightforward toggle. Double-check that a map or layer named “airspaces” is available and that toggling is consistent with other toggles likedisplayHeliports.
776-779: Validate usage of radsatTimestamp.Timers for radar/satellite might be interchanged in some code paths. Confirm any references to older radar timestamps are now updated to
radsatTimestamp.
867-871: Push notifications readiness.
pushNotificationsReadyis straightforward; ensure the system handles a false or undefined value gracefully and triggers no repeated registration attempts.libs/windy-sounding/types/client/loadArticlesOrWhatsNew.d.ts (1)
1-2: LGTM!The function declaration follows TypeScript best practices and its name clearly indicates its purpose.
libs/windy-sounding/types/client/ga.d.ts (1)
1-4: LGTM!The property rename from
qstoreqQsimproves clarity by making the name more descriptive.libs/windy-sounding/types/client/globals.d.ts (1)
4-4: LGTM!The
targetconstant with its union type provides a type-safe way to identify the runtime environment.libs/windy-sounding/types/client/appsFlyer.d.ts (1)
1-4: LGTM!The AppsFlyerPlugin integration is well-structured with proper TypeScript type definitions.
🧰 Tools
🪛 ESLint
[error] 1-1: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/persistentStorage.d.ts (1)
1-6: LGTM! Well-structured storage class implementation.The
PersistentStorageclass provides a clean Promise-based API for storage operations with proper TypeScript access modifiers.libs/windy-sounding/types/client/AccessProducts.d.ts (1)
3-8: LGTM! Well-structured class hierarchy.The
AccessProductandAccessCProductclasses provide a clean inheritance hierarchy with proper constructor parameter types.libs/windy-sounding/types/client/cityLabels.d.ts (1)
7-10: LGTM! Clear and focused function declarations.The functions have clear, single responsibilities for managing city labels on the map.
libs/windy-sounding/types/client/IconProducts.d.ts (1)
4-7: LGTM! Well-structured type definitions.The
iconOverlaysarray andIconProductsclass are well-defined with proper type constraints.libs/windy-sounding/types/client/d.ts.files/pois.d.ts (1)
3-3: LGTM!The import path update aligns with the standardization of type imports across the codebase.
libs/windy-sounding/types/client/TopoMap.d.ts (1)
4-10: LGTM!The
TopoMapclass declaration looks good with appropriate method signatures and property types.libs/windy-sounding/types/client/deviceLogging.d.ts (1)
1-1: LGTM!The changes improve the function signature by:
- Using a more specific type (
RegistrationHash)- Making the parameter optional
- Converting to async/Promise-based implementation
Also applies to: 14-14
libs/windy-sounding/types/client/pois.d.ts (1)
5-5: LGTM!The changes:
- Standardize the import path with
.dextension- Convert
displayPoiOnMapto async/Promise-based implementationAlso applies to: 15-15
libs/windy-sounding/types/client/colorGradients.d.ts (2)
1-5: LGTM! Well-documented type imports.The imports are correctly typed and the documentation comment clearly describes the purpose of the file.
🧰 Tools
🪛 ESLint
[error] 4-5: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 5-5: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
10-13: LGTM! Well-documented utility function.The
createColorGradientfunction has a clear signature and purpose.libs/windy-sounding/types/client/BottomSveltePlugins.d.ts (2)
1-3: LGTM! Well-structured imports.The imports are correctly typed and organized.
🧰 Tools
🪛 ESLint
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
4-8: LGTM! Well-designed type composition.The
BottomSveltePluginInitParamstype effectively combinesOmitandPickutility types to create a precise parameter type.libs/windy-sounding/types/client/promo.d.ts (1)
2-6: LGTM! Well-structured interface.The
PromoInfoObjectinterface is well-defined with clear types.libs/windy-sounding/types/client/baseMap.d.ts (2)
1-12: LGTM! Well-defined map tiles type.The
MapTilesKeystype is comprehensive and clearly defines all possible tile types.
17-24: LGTM! Well-documented basemap functions.The new functions
addOrUpdateBasemapandremoveBasemaphave clear signatures and descriptive documentation.libs/windy-sounding/types/client/RadarPlusProduct.d.ts (1)
11-14: Well-documented method with clear return type.The
loadInfoJsonmethod has good documentation explaining its purpose and the expected return type.libs/windy-sounding/types/client/d.ts.files/Renderer.d.ts (1)
6-9: Well-structured type definitions with clear constraints.The type definitions are well-organized:
AllowedRenderPluginsclearly specifies which plugins are supported.AllowedUserControlsprovides a comprehensive union of possible control types.RendererInitParamsinterface maintains type safety with these constraints.Also applies to: 34-40
libs/windy-sounding/types/client/d.ts.files/LabelsLayer.d.ts (1)
14-15: Clear documentation update reflecting data type change.The documentation has been properly updated to reflect the change from
CityForecastDatatoCityTemperaturesDto, maintaining code clarity.libs/windy-sounding/src/env.d.ts (1)
13-27: LGTM! The W object has been properly updated with the latest Windy API types.The new type declarations are well-structured and properly imported from the Windy client modules, ensuring type safety and better IDE support.
libs/windy-sounding/types/client/MetricClasses.d.ts (3)
3-3: LGTM! Import path updated to match the latest Windy API structure.The import path has been correctly updated from '@windy/types.d' to '@windy/types'.
🧰 Tools
🪛 ESLint
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
7-9: LGTM! The convertNumber method has been enhanced with backward conversion support.The new
backparameter is well-documented and adds useful functionality for inverse conversions.
34-34: LGTM! The updateLines method now supports radar functionality.The new
radarEnabledparameter extends the method's capabilities to handle radar-specific updates.libs/windy-sounding/types/client/OverlayClasses.d.ts (2)
5-5: LGTM! Import path updated to match the latest Windy API structure.The import path has been correctly updated to import LoadedTranslations from '@windy/types'.
🧰 Tools
🪛 ESLint
[error] 1-5: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 5-5: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
6-8: LGTM! Consistent addition of hidePickerElevation property.The hidePickerElevation property has been consistently added to CurrentOverlay, WaveOverlay, RainPtypeOverlay, and CloudsOverlay classes.
Also applies to: 10-12, 26-28, 30-32
libs/windy-sounding/types/client/d.ts.files/Color.d.ts (3)
53-53: LGTM! ColorIdent type updated with new identifiers.The type has been updated to include 'radarPlus', 'drought', and 'soilMoisture', replacing more specific identifiers.
Also applies to: 61-62
82-83: LGTM! New AnyColorIdent type added with proper documentation.The type combines ColorIdent, PluginColorIdent, and additional identifiers, with clear documentation about dynamic creation.
85-88: LGTM! New UserColor interface added for custom color configurations.The interface provides a clear structure for user-defined colors with associated gradients.
libs/windy-sounding/types/client/d.ts.files/Calendar.d.ts (1)
82-90: LGTM! Good addition of premium and forecast availability flags.The new properties enhance the
CalendarDayinterface by providing information about premium-only forecasts and forecast availability. This aligns well with the API synchronization objective.libs/windy-sounding/types/client/geolocation.d.ts (2)
14-18: LGTM! Well-structured geolocation options.The new
GeolocationOptionsinterface provides good control over user messages and fallback behavior.
43-44: Good modernization of async APIs.Converting to Promise-based APIs and adding permission request functionality improves the developer experience.
libs/windy-sounding/types/client/d.ts.files/products.d.ts (1)
14-21: LGTM! Good enhancement of BOM access products.The addition of region-specific BOM access products with proper typing improves type safety and clarity.
libs/windy-sounding/types/client/SveltePlugin.d.ts (1)
4-4: LGTM! Good enhancement of plugin system flexibility.The changes improve the plugin system by:
- Adding support for bottom plugins
- Making the plugin root optional
- Allowing null for svelteApp property
Also applies to: 31-32
🧰 Tools
🪛 ESLint
[error] 1-4: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 4-4: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/src/util/utils.ts (2)
1-1: LGTM!The import statement has been updated to use the new location of the
Favtype, which aligns with the type reorganization infavs.d.ts.
24-25:Details
❓ Verification inconclusive
Verify the impact of removing the
namefallback.The function no longer falls back to
fav.namewhenfav.titleis empty. This change might affect the display of favorites that only have anameproperty.Run the following script to check for potential impact:
🏁 Script executed:
#!/bin/bash # Description: Search for usages of getFavLabel with favorites that might only have a name property. # Search for favorites with only name property rg -A 5 "name:\s*['\"].*['\"]" --type ts # Search for direct usage of fav.name rg "fav\.name" --type tsLength of output: 62199
Action: Confirm whether the removal of the
fav.namefallback is safe.The updated implementation now returns only
fav.title || '', so any favorite object missing a title (but having a name) will yield an empty string. The search results show many object literals setting anameproperty throughout the repository, but we found no direct reference tofav.namein a context that would trigger the fallback. That said, it remains unclear whether there are runtime scenarios (or data instances) where a favorite might only have a name and no title.Please verify that in all cases where favorites are displayed the provided data always includes a non-empty title. If there is any chance that a favorite could be defined with only a
name, you might want to reinstate the fallback to avoid unintended blank labels.libs/windy-sounding/types/client/ExternalSveltePlugin.d.ts (1)
8-8: LGTM!The import of
PluginOpeningOptionsfrom@windy/interfacesis correctly added to support the newopenmethod.libs/windy-sounding/types/client/d.ts.files/favs.d.ts (2)
6-10: LGTM! Clear deprecation notice.The separation of
FavTypeNewfrom the deprecatedFavTypeis well-documented and provides a clear migration path.
38-58: LGTM! Well-structured type definition.The
Favtype is well-documented with clear explanations for each property, especially the timestamp-based sorting mechanism for pinned favorites.libs/windy-sounding/types/client/picker.d.ts (1)
37-37: LGTM! Improved return type.The
lockPositionmethod now returnsLatLon, which is more useful and consistent with other location-related methods in the class likegetLatLon.libs/windy-sounding/types/client/lruCache.d.ts (1)
68-73: LGTM! Well-documented forEach method.The new forEach method is a valuable addition that enables iterating over cache entries in age order. The implementation maintains type safety and includes clear documentation.
libs/windy-sounding/types/client/Renderer.d.ts (1)
50-50: LGTM! Type update improves type safety.The change from
BottomTagPluginstoAllowedUserControlsenhances type safety and better represents the allowed control types.libs/windy-sounding/types/client/IDB.d.ts (1)
1-71: LGTM! Well-structured IndexedDB wrapper with comprehensive type safety.The IDB class provides a robust type-safe wrapper around IndexedDB with:
- Clear type definitions for database operations
- Support for backend synchronization
- Comprehensive documentation
libs/windy-sounding/types/client/http.d.ts (2)
6-10: LGTM! Security enhancement for mobile applications.The acceptHeader constant improves security by adding protection against stealing and handling CORS checks for mobile apps.
63-70: LGTM! Consistent PATCH method implementation.The patch method follows the same pattern as other HTTP methods, maintaining consistency in the API design.
libs/windy-sounding/types/client/map.d.ts (2)
62-65: LGTM! Fixed deprecation notice spelling.The typo in the deprecation notice has been corrected from "depreciated" to "deprecated".
82-87:Details
❓ Verification inconclusive
Consider adding initialization state checks.
The
mapLibre.wrapperbeing nullable suggests a need for proper initialization checks in consuming code.
🏁 Script executed:
#!/bin/bash # Search for direct access to mapLibre.wrapper without null checks ast-grep --pattern 'mapLibre.wrapper.$$$'Length of output: 43
Initialization Safety Review
We definemapLibre.wrapperas nullable in the type declaration, which implies consuming code should check its initialization. However, our initial AST grep search didn’t yield evidence of unsafe direct accesses. Since that result is inconclusive, please manually verify that every usage ofmapLibre.wrapperin the codebase is properly guarded with null or initialization checks. If any usage lacks such safeguards, consider adding appropriate checks here and at the consuming sites.libs/windy-sounding/types/client/layers.d.ts (1)
57-58: LGTM! Well-structured layer additions.The new
radarPlusandtopoMaplayers follow the established type patterns and maintain consistency with existing layer definitions.Also applies to: 78-78
libs/windy-sounding/types/client/Plugin.d.ts (1)
64-64: Documentation fix: Corrected typo in isOpen property comment.Fixed typo in documentation: "currentlly" → "currently".
libs/windy-sounding/types/client/Calendar.d.ts (2)
13-16: Documentation added for freeProduct property.Good addition of documentation for the new
freeProductproperty, clearly explaining its purpose.
4-7:Details
❓ Verification inconclusive
Verify import paths with .d.ts extension.
The import paths have been updated to include
.d.tsextension. This is unusual for TypeScript declaration files.
🏁 Script executed:
#!/bin/bash # Check if other files in the project use similar import paths rg -g '*.d.ts' 'import.*\.d\.ts'Length of output: 34
Attention: Please verify the explicit use of
.d.tsin the import paths.
- The updated import paths in
libs/windy-sounding/types/client/Calendar.d.tsnow include what appears to be a.d.tsextension. This is unconventional for TypeScript declaration files.- A repository-wide search for import strings containing
.d.tsreturned no similar cases. Given that this pattern isn’t observed elsewhere, please manually confirm that:
- The change is intentional.
- It correctly supports TypeScript’s module resolution without introducing issues.
- If this behavior is desired, ensure that all related declaration files consistently follow the same convention.
🧰 Tools
🪛 ESLint
[error] 7-7: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/Metric.d.ts (2)
41-44: LGTM! The addition of backward conversion support enhances flexibility.The new
backConvproperty enables bidirectional unit conversion, which is a valuable addition for handling complex unit transformations.
129-136: LGTM! The static gradient legend method improves reusability.The refactoring of
renderGradientLegendto a static method with a more focused signature is a good architectural decision. It separates the legend generation logic from instance-specific concerns.libs/windy-sounding/types/client/d.ts.files/Metric.d.ts (1)
104-104: LGTM! The addition of radsat metric type enhances satellite data support.The new
radsatproperty of typeSatelliteMetricis a logical addition to theMetricTypesinterface, maintaining consistency with existing satellite-related metrics.libs/windy-sounding/types/client/lib.d.ts (1)
42-42: LGTM! The standardization of exports improves code organization.The transition to namespace exports for
notifications,cityLabels,log,location,router,showableErrorsService, anduserFavsbrings consistency to the module export pattern.Also applies to: 82-82, 87-93
libs/windy-sounding/types/client/fetch.d.ts (3)
74-78: LGTM! The new point forecast URL function improves API flexibility.The addition of
getPointForecastUrlallows clients to obtain the URL separately from data fetching, enabling more flexible usage patterns.
98-112: LGTM! The meteogram forecast functions provide better separation of concerns.The split into
getMeteogramForecastUrlandgetMeteogramForecastDatafunctions follows good API design principles by separating URL generation from data fetching.
157-163: LGTM! The new observation and hurricane functions enhance weather data capabilities.The addition of
getObservationPoiUrlandgetHurricanesCountfunctions expands the API's weather data retrieval capabilities in a type-safe manner.libs/windy-sounding/types/client/Overlay.d.ts (2)
61-64: LGTM! New properties enhance UI customization.The new properties provide better control over UI elements:
hidePickerElevation: Controls elevation visibility in desktop pickerhideFromURL: Controls URL displaypromoBadgeandpromoBadgeColor: Enables promotional badgesmenuImage: Supports menu thumbnailsAlso applies to: 111-124
125-129: LGTM! New methods improve interactivity.The new methods enhance overlay functionality:
onClick: Handles click eventsgetMenuImagePath: Manages menu image pathsAlso applies to: 139-142
libs/windy-sounding/types/client/WindowPlugin.d.ts (1)
121-124: LGTM! New property improves closing behavior.The
closingRequestedproperty helps track if a closing request was made while the plugin was being opened, improving state management.libs/windy-sounding/types/client/d.ts.files/plugin-params.d.ts (1)
50-86: LGTM! Enhanced type definitions improve type safety.The changes improve type safety and add new functionality:
DetailOpenParams: Updated with better timestamp handlingalerts-edit: New type for alert managementlocation-permission: New type for permission handlingAlso applies to: 145-158, 194-198
libs/windy-sounding/types/client/mobile.d.ts (1)
39-40: LGTM! New exports enhance functionality.The new exports add useful functionality:
IDBandidbInstances: IndexedDB supportuserAlertsanduserConsent: User managementappsFlyer: Analytics integrationAlso applies to: 81-83, 139-140
libs/windy-sounding/types/client/overlays.d.ts (2)
195-199: LGTM: New radarPlus overlay added.The addition of the
radarPlusoverlay with proper metric and layer types aligns with the Windy API update.🧰 Tools
🪛 ESLint
[error] 197-197:
import()type annotations are forbidden.(@typescript-eslint/consistent-type-imports)
[error] 198-198:
import()type annotations are forbidden.(@typescript-eslint/consistent-type-imports)
[error] 198-198:
import()type annotations are forbidden.(@typescript-eslint/consistent-type-imports)
249-251: LGTM: New overlays added for enhanced functionality.The addition of
heatmaps,topoMap, andhurricanesoverlays expands the available visualization options. The type definitions are properly structured with appropriate undefined metrics where applicable.🧰 Tools
🪛 ESLint
[error] 250-250:
import()type annotations are forbidden.(@typescript-eslint/consistent-type-imports)
libs/windy-sounding/CHANGELOG.md (2)
3-6: Version number mismatch with PR title.The PR title mentions version 4.1.10, but the changelog shows version 4.1.11. Please ensure version numbers are consistent across all files.
🧰 Tools
🪛 LanguageTool
[typographical] ~3-~3: If you want to indicate numerical ranges or time ranges, consider using an en dash.
Context: # Release history ## 4.1.11 - Feb 20, 2025 - Sync with the latest win...(DASH_RULE)
5-5: Typo: "windy API" should be "Windy API".Maintain consistent capitalization for the Windy API reference.
libs/windy-sounding/types/client/plugins.d.ts (1)
1-1: LGTM: Import path standardization.The update to include
.dsuffix in import paths improves consistency in file references.🧰 Tools
🪛 ESLint
[error] 1-1: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/products.d.ts (1)
1-1: LGTM: Import path standardization.The update to include
.dsuffix in import paths improves consistency in file references.🧰 Tools
🪛 ESLint
[error] 1-1: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/TileLayer.d.ts (1)
4-9: Class Declaration ConsistencyThe declaration of the
TileLayerclass using the updated type definitions is correct and consistent with recent changes in the project’s type imports. No issues detected with the class implementation.libs/windy-sounding/types/client/broadcast.d.ts (1)
1-15: File-Level Consistency CheckOverall, the updates to the import path for the
Broadcasttype and the existing file documentation remain clear and consistent with the broader codebase refactoring. No further modifications are required.🧰 Tools
🪛 ESLint
[error] 9-9: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
libs/windy-sounding/types/client/DataTiler.d.ts (1)
5-42: Class and Interface DefinitionsThe remainder of the file—declaring interfaces and the
DataTilerclass—remains unchanged and is consistent with the overall project structure. The new import paths pose no issues in this context.
| export declare const persistentStorage: PersistentStorage; | ||
| export {}; |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Remove redundant empty export.
The empty export at line 8 is redundant since there's already a named export at line 7.
export declare const persistentStorage: PersistentStorage;
-export {};📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| export declare const persistentStorage: PersistentStorage; | |
| export {}; | |
| export declare const persistentStorage: PersistentStorage; |
🧰 Tools
🪛 Biome (1.9.4)
[error] 7-8: This empty export is useless because there's another export or import.
This export makes useless the empty export.
Safe fix: Remove this useless empty export.
(lint/complexity/noUselessEmptyExport)
| import { Renderer } from '@windy/Renderer'; | ||
| import type { FullRenderParameters } from '@windy/Layer.d'; | ||
| import type { Renderers } from '@windy/Renderer.d'; |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Fix import statement formatting.
The static analysis tools suggest:
- Sorting the imports
- Adding a newline after imports
Apply this diff to fix the formatting:
-import { Renderer } from '@windy/Renderer';
-import type { FullRenderParameters } from '@windy/Layer.d';
-import type { Renderers } from '@windy/Renderer.d';
+import type { FullRenderParameters } from '@windy/Layer.d';
+import { Renderer } from '@windy/Renderer';
+import type { Renderers } from '@windy/Renderer.d';
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| import { Renderer } from '@windy/Renderer'; | |
| import type { FullRenderParameters } from '@windy/Layer.d'; | |
| import type { Renderers } from '@windy/Renderer.d'; | |
| import type { FullRenderParameters } from '@windy/Layer.d'; | |
| import { Renderer } from '@windy/Renderer'; | |
| import type { Renderers } from '@windy/Renderer.d'; |
🧰 Tools
🪛 ESLint
[error] 1-3: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 3-3: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
| import('../../types/interfaces').LatLon & { | ||
| title: string; | ||
| } & ( | ||
| | { | ||
| type: 'fav'; | ||
| } | ||
| | { | ||
| type: 'alert'; | ||
| alert: import('../../types/interfaces').Alert; | ||
| alertProps: import('../../types/interfaces').AlertProps; | ||
| } | ||
| | { | ||
| type: 'airport'; | ||
| icao: string; | ||
| } | ||
| | { | ||
| type: 'station'; | ||
| stationId: | ||
| | `radiation-${string}` | ||
| | `airq-${string}` | ||
| | `ad-${string}` | ||
| | `wmo-${string}` | ||
| | `madis-${string}` | ||
| | `buoy-${string}` | ||
| | `dbuoy-${string}` | ||
| | `pws-${string}` | ||
| | `ship-${string}`; | ||
| } | ||
| | { | ||
| type: 'webcam'; | ||
| webcamId: number; | ||
| } | ||
| | { | ||
| type: 'route'; | ||
| route: | ||
| | `car/${string}` | ||
| | `vfr/${string}` | ||
| | `ifr/${string}` | ||
| | `elevation/${string}` | ||
| | `boat/${string}` | ||
| | `airgram/${string}`; | ||
| } | ||
| ) |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Fix type imports in the userFavsIdb declaration.
Replace dynamic import() type references with static import type statements.
Apply this diff:
string,
Fav,
- import('../../types/interfaces').LatLon & {
+ LatLon & {
title: string;
} & (
| {
type: 'fav';
}
| {
type: 'alert';
- alert: import('../../types/interfaces').Alert;
- alertProps: import('../../types/interfaces').AlertProps;
+ alert: Alert;
+ alertProps: AlertProps;
}Add these imports at the top:
import type { Alert, AlertProps, LatLon } from '../../types/interfaces';🧰 Tools
🪛 ESLint
[error] 15-15: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
[error] 23-23: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
[error] 24-24: import() type annotations are forbidden.
(@typescript-eslint/consistent-type-imports)
| import { IDB } from '@windy/IDB'; | ||
| import type { Fav } from '@windy/favs.d'; | ||
| import type { SearchRecent } from '@plugins/search/search'; | ||
| import type { AlertResponse, AlertRequest } from '@windy/alerts'; | ||
| import type { MarkedNotams } from '@plugins/airport/airport'; | ||
| import type { MinifestObject } from '@windy/Calendar.d'; | ||
| import type { SeenArticle } from '@windy/startup.d'; | ||
| import type { PromoInfoObject } from '@windy/promo'; | ||
| import type { AnyColorIdent, UserColor } from '@windy/Color.d'; |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Fix import statements to follow TypeScript best practices.
The import statements need to be updated to follow TypeScript's best practices:
- Use
import typeconsistently for type-only imports - Sort imports
- Add newline after imports
Apply this diff to fix the import statements:
-import { IDB } from '@windy/IDB';
-import type { Fav } from '@windy/favs.d';
-import type { SearchRecent } from '@plugins/search/search';
-import type { AlertResponse, AlertRequest } from '@windy/alerts';
-import type { MarkedNotams } from '@plugins/airport/airport';
-import type { MinifestObject } from '@windy/Calendar.d';
-import type { SeenArticle } from '@windy/startup.d';
-import type { PromoInfoObject } from '@windy/promo';
-import type { AnyColorIdent, UserColor } from '@windy/Color.d';
+import type { IDB } from '@windy/IDB';
+import type { AlertRequest, AlertResponse } from '@windy/alerts';
+import type { AnyColorIdent, UserColor } from '@windy/Color.d';
+import type { MinifestObject } from '@windy/Calendar.d';
+import type { Fav } from '@windy/favs.d';
+import type { PromoInfoObject } from '@windy/promo';
+import type { SeenArticle } from '@windy/startup.d';
+import type { MarkedNotams } from '@plugins/airport/airport';
+import type { SearchRecent } from '@plugins/search/search';
Committable suggestion skipped: line range outside the PR's diff.
🧰 Tools
🪛 ESLint
[error] 1-1: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 1-9: Run autofix to sort these imports!
(simple-import-sort/imports)
[error] 9-9: Expected 1 empty line after import statement not followed by another import.
(import/newline-after-import)
| import { AlertConditionType, CloudCoverage, AlertStatus, Direction, Weekday } from '@windy/userAlerts'; | ||
| import type { Timestamp, UserInterest } from '@windy/types'; | ||
| import type { Products } from '@windy/rootScope.d'; | ||
| import type { LatLon } from '@windy/interfaces'; |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Convert regular imports to type-only imports.
Since these imports are only used as types, they should use the import type syntax for better type safety and clearer intent.
-import { AlertConditionType, CloudCoverage, AlertStatus, Direction, Weekday } from '@windy/userAlerts';
-import type { Timestamp, UserInterest } from '@windy/types';
-import type { Products } from '@windy/rootScope.d';
-import type { LatLon } from '@windy/interfaces';
+import type { AlertConditionType, CloudCoverage, AlertStatus, Direction, Weekday } from '@windy/userAlerts';
+import type { Timestamp, UserInterest } from '@windy/types';
+import type { Products } from '@windy/rootScope.d';
+import type { LatLon } from '@windy/interfaces';📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| import { AlertConditionType, CloudCoverage, AlertStatus, Direction, Weekday } from '@windy/userAlerts'; | |
| import type { Timestamp, UserInterest } from '@windy/types'; | |
| import type { Products } from '@windy/rootScope.d'; | |
| import type { LatLon } from '@windy/interfaces'; | |
| import type { AlertConditionType, CloudCoverage, AlertStatus, Direction, Weekday } from '@windy/userAlerts'; | |
| import type { Timestamp, UserInterest } from '@windy/types'; | |
| import type { Products } from '@windy/rootScope.d'; | |
| import type { LatLon } from '@windy/interfaces'; |
🧰 Tools
🪛 ESLint
[error] 1-1: All imports in the declaration are only used as types. Use import type.
(@typescript-eslint/consistent-type-imports)
[error] 1-4: Run autofix to sort these imports!
(simple-import-sort/imports)
| | 'aromeFrance' | ||
| | 'aromeReunion' | ||
| | 'canHrdps' | ||
| | 'canRdwpsWaves' | ||
| | 'czeAladin' | ||
| | 'iconEuWaves' | ||
| | 'hrrrAlaska' | ||
| | 'hrrrConus' | ||
| | 'bomAccess' | ||
| | 'bomAccessAd' | ||
| | 'bomAccessBn' | ||
| | 'bomAccessDn' | ||
| | 'bomAccessNq' | ||
| | 'bomAccessPh' | ||
| | 'bomAccessSy' | ||
| | 'bomAccessVt' |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Verify new product identifiers with Windy API documentation.
Several new product identifiers have been added (e.g., aromeFrance, bomAccessAd, etc.). Please ensure these match the latest Windy API documentation.
Also applies to: 89-109
🌐 Web query:
What are the latest supported product identifiers in the Windy API?
💡 Result:
The latest supported product identifiers (weather forecast models) in the Windy API as of February 2025 include:
Core global models:
gfs(Global Forecast System)iconEu(ICON European model)geos5(GEOS-5 atmospheric model)
Regional NAM models:
namConus(North American Mesoscale for continental US)namHawaiinamAlaska
Wave-specific models:
gfsWave(Wavewatch III global waves)arome(French high-resolution wave model)
These products represent distinct weather data sets with different resolutions and coverage areas[6][4]. The availability depends on whether using the free or paid API tier - premium models like iconEu require paid access[4][7].
Recent updates show expanded regional coverage through specialized NAM implementations[6], though ECMWF-based products remain unavailable for third-party redistribution due to licensing restrictions[4]. Developers should verify parameter compatibility using .getAllowed('product') after initialization[1].
Citations:
- 1: https://github.com/windycom/API/blob/master/parameters/README.md
- 2: https://api.windy.com/map-forecast/examples/hello-world
- 3: https://www.globalwindsafety.org/winda/winda-api
- 4: https://github.com/TristanBridge/windycom-api
- 5: https://github.com/windycom/API
- 6: https://api.windy.com/point-forecast/docs
- 7: https://community.windy.com/topic/6356/windy-api-v4-is-here-help-us-to-test-it
- 8: https://www.weather.gov/documentation/services-web-api
- 9: https://api.windy.com/map-forecast/docs
- 10: https://api.windy.com
Action Required: Update Product Identifiers to Match Windy API Documentation
The identifiers in libs/windy-sounding/types/client/models.d.ts (lines 42–57 and 89–109) do not correlate with the latest Windy API documentation. According to the documentation as of February 2025, the supported models include:
- Core global models:
gfs,iconEu,geos5 - Regional NAM models:
namConus,namHawaii,namAlaska - Wave-specific models:
gfsWave,arome
In contrast, the code lists identifiers such as aromeFrance, bomAccessAd, and others that are not mentioned in the official set. Please verify whether these custom identifiers are intentional extensions or need to be updated to the documented values.
| * Required language files | ||
| */ | ||
| langFiles?: LangFileKey[]; | ||
| langFiles: LangFileKey[]; |
There was a problem hiding this comment.
❓ Verification inconclusive
Breaking change: langFiles property is now required.
The langFiles property has been changed from optional to required. This is a breaking change that requires updates to all plugin instances.
Run this script to find affected plugin instances:
🏁 Script executed:
#!/bin/bash
# Find plugin instances that might be affected by the langFiles change
ast-grep --pattern 'new Plugin({ $$$, langFiles: $_? })'Length of output: 58
Manual Verification Required: Confirm Plugin Instances Provide the Required langFiles Property
The update to the Plugin interface now makes langFiles required, which is a breaking change. The initial AST search command did not return any results, so it’s unclear whether all Plugin instances have been updated or if the search pattern didn’t capture some cases.
Next Steps:
-
Review Plugin Instantiations:
Please run the following command to list all Plugin instantiations and check if they include thelangFilesproperty:#!/bin/bash # List all lines instantiating Plugin for manual inspection rg "new Plugin\\(" -n .
-
Manual Check:
Manually inspect each Plugin instantiation from the output. Ensure that every instance provides thelangFilesproperty. If any instantiation is missing this property, update it accordingly.
Once you’ve confirmed that all Plugin instances include the required langFiles property, we can consider this breaking change properly managed.
Action Required: Verify All Plugin Instantiations Provide langFiles
The change in the file libs/windy-sounding/types/client/Plugin.d.ts makes the langFiles property required, which is a breaking change. The initial AST search did not produce conclusive results. To ensure full coverage, please manually verify that every Plugin instantiation now supplies this required property. For example, you can run:
Then, review the output to confirm that all instances include langFiles. If any instance is missing it, update that instantiation accordingly.
🏁 Script executed:
[run_scripts]
#!/bin/bash
# List all Plugin instantiations for manual review
rg "new Plugin\\(" -n .Length of output: 146
Manual Verification Required: Review Plugin Instantiations
The change to libs/windy-sounding/types/client/Plugin.d.ts now requires the langFiles property for all Plugin instantiations. Automated searches using both ast-grep and ripgrep did not reveal any instances of new Plugin( with a configuration object (or any pattern using langFiles). This could mean one of two things:
- Plugin instantiations may be using a different pattern that wasn’t captured by our regex.
- There may be no direct instantiations in the codebase, reducing the risk of breaking changes—but this needs confirmation.
Action Items:
-
Double‑Check Instantiations:
Use a more flexible search if needed (or inspect manually) for Plugin usage. For example:#!/bin/bash # Attempting a broader search for Plugin instantiations with varying whitespace rg "new\s+Plugin\s*\(" -n .
-
Manual Review:
Verify manually that every instantiation or usage of Plugin provides the requiredlangFilesproperty. Update any instances that omit it.
Once confirmed, the breaking change can be managed safely.
Action Required: Manually Verify Plugin Instantiations for Required langFiles
The change in the Plugin interface now makes the langFiles property required, introducing a breaking change. Automated searches (via both ast-grep and ripgrep) have not returned any Plugin instantiation usage. This inconclusive result suggests that either Plugin instances are not directly instantiated in a way captured by our current search patterns, or instantiations are handled dynamically.
Next Steps:
-
Manual Verification:
Please review all usages ofPluginin the codebase to ensure that every instantiation includes the requiredlangFilesproperty. Confirm that no instances (direct or indirect, such as via factories) are missing this property. -
Action if Issues Are Found:
If any Plugin instance is missing thelangFilesproperty, kindly update it to include this property.
Once you have performed this manual review and verified that all Plugin instances provide the required property, the changes can be deemed safe.
| /** | ||
| const originalGetCurrentPosition = navigator.geolocation.getCurrentPosition; | ||
| navigator.geolocation.getCurrentPosition = (...args) => { | ||
| alert(`XXX getCurrentPosition ${new Error().stack}`); | ||
| debugger; | ||
| originalGetCurrentPosition.call(navigator.geolocation, ...args); | ||
| }; | ||
| // Monkey-patch watchPosition | ||
| const originalWatchPosition = navigator.geolocation.watchPosition; | ||
| navigator.geolocation.watchPosition = (...args) => { | ||
| alert('XXX watchPosition'); | ||
| debugger; | ||
| return originalWatchPosition.call(navigator.geolocation, ...args); | ||
| }; | ||
| */ |
There was a problem hiding this comment.
Remove commented debugging code.
The commented code contains debugging statements with alert and debugger that should not be in the codebase.
Remove the commented code block to maintain code cleanliness.
Summary by Sourcery
Update the Windy Sounding plugin to version 4.1.10, which includes synchronizing with the latest Windy API.
Enhancements:
Chores:
Summary by CodeRabbit