@windycom/plugin-devtools 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +4 -0
  2. package/index.mjs +2 -2
  3. package/package.json +2 -3
  4. package/types/client/AccessProducts.d.ts +8 -0
  5. package/types/client/BottomSlide.d.ts +3 -0
  6. package/types/client/BottomSveltePlugins.d.ts +8 -0
  7. package/types/client/Calendar.d.ts +9 -17
  8. package/types/client/Color.d.ts +44 -91
  9. package/types/client/EcmwfProduct.d.ts +0 -22
  10. package/types/client/Evented.d.ts +4 -0
  11. package/types/client/ExternalSveltePlugin.d.ts +8 -2
  12. package/types/client/IDB.d.ts +69 -0
  13. package/types/client/IconProducts.d.ts +2 -0
  14. package/types/client/Layer.d.ts +1 -2
  15. package/types/client/Metric.d.ts +13 -9
  16. package/types/client/MetricClasses.d.ts +4 -3
  17. package/types/client/Overlay.d.ts +31 -16
  18. package/types/client/OverlayClasses.d.ts +11 -7
  19. package/types/client/Plugin.d.ts +6 -2
  20. package/types/client/Product.d.ts +33 -30
  21. package/types/client/RadarPlusProduct.d.ts +19 -0
  22. package/types/client/Renderer.d.ts +2 -10
  23. package/types/client/SatelliteProduct.d.ts +1 -1
  24. package/types/client/SveltePlugin.d.ts +16 -5
  25. package/types/client/TileLayer.d.ts +1 -2
  26. package/types/client/TopoMap.d.ts +10 -0
  27. package/types/client/WindowPlugin.d.ts +9 -4
  28. package/types/client/appsFlyer.d.ts +2 -0
  29. package/types/client/baseMap.d.ts +8 -5
  30. package/types/client/cityLabels.d.ts +10 -2
  31. package/types/client/cloudSync.d.ts +3 -1
  32. package/types/client/colorGradients.d.ts +13 -0
  33. package/types/client/compatibilityCheck.d.ts +1 -0
  34. package/types/client/connection.d.ts +1 -1
  35. package/types/client/customColors.d.ts +1 -0
  36. package/types/client/d.ts.files/Calendar.d.ts +11 -2
  37. package/types/client/d.ts.files/Color.d.ts +17 -5
  38. package/types/client/d.ts.files/LabelsLayer.d.ts +3 -20
  39. package/types/client/d.ts.files/Layer.d.ts +8 -1
  40. package/types/client/d.ts.files/Metric.d.ts +1 -0
  41. package/types/client/d.ts.files/Renderer.d.ts +22 -1
  42. package/types/client/d.ts.files/alerts.d.ts +119 -0
  43. package/types/client/d.ts.files/broadcast.d.ts +51 -18
  44. package/types/client/d.ts.files/dataSpecifications.d.ts +121 -137
  45. package/types/client/d.ts.files/favs.d.ts +68 -0
  46. package/types/client/d.ts.files/incomingMessages.d.ts +0 -4
  47. package/types/client/d.ts.files/lib.d.ts +5 -7
  48. package/types/client/d.ts.files/notifications.d.ts +2 -2
  49. package/types/client/d.ts.files/plugin-params.d.ts +53 -57
  50. package/types/client/d.ts.files/plugins.d.ts +31 -42
  51. package/types/client/d.ts.files/pois.d.ts +1 -1
  52. package/types/client/d.ts.files/products.d.ts +16 -5
  53. package/types/client/d.ts.files/rootScope.d.ts +13 -31
  54. package/types/client/d.ts.files/startup.d.ts +65 -0
  55. package/types/client/d.ts.files/storage.d.ts +12 -35
  56. package/types/client/d.ts.files/user.d.ts +82 -24
  57. package/types/client/detectDevice.d.ts +0 -3
  58. package/types/client/device.d.ts +1 -0
  59. package/types/client/deviceLogging.d.ts +2 -1
  60. package/types/client/embed.d.ts +70 -0
  61. package/types/client/embed2.d.ts +14 -31
  62. package/types/client/errorLogger.d.ts +28 -3
  63. package/types/client/errors.d.ts +6 -0
  64. package/types/client/fetch.d.ts +41 -16
  65. package/types/client/format.d.ts +1 -1
  66. package/types/client/ga.d.ts +1 -1
  67. package/types/client/geolocation.d.ts +15 -7
  68. package/types/client/globals.d.ts +1 -0
  69. package/types/client/http.d.ts +17 -6
  70. package/types/client/idbInstances.d.ts +36 -0
  71. package/types/client/imaker.d.ts +112 -0
  72. package/types/client/imakerMain.d.ts +49 -0
  73. package/types/client/langFiles.d.ts +2 -0
  74. package/types/client/latestBroadcasts.d.ts +1 -1
  75. package/types/client/layers.d.ts +2 -0
  76. package/types/client/lib.d.ts +6 -22
  77. package/types/client/libHtml.d.ts +1 -1
  78. package/types/client/liveAlerts.d.ts +5 -0
  79. package/types/client/liveAlerts.types.d.ts +28 -0
  80. package/types/client/loadArticlesOrWhatsNew.d.ts +1 -0
  81. package/types/client/location.d.ts +5 -0
  82. package/types/client/log.d.ts +4 -1
  83. package/types/client/lruCache.d.ts +6 -0
  84. package/types/client/map.d.ts +17 -6
  85. package/types/client/mobile.d.ts +31 -22
  86. package/types/client/models.d.ts +7 -5
  87. package/types/client/notifications.d.ts +29 -67
  88. package/types/client/overlays.d.ts +4 -1
  89. package/types/client/params.d.ts +0 -1
  90. package/types/client/permanentPromos.d.ts +1 -1
  91. package/types/client/persistentStorage.d.ts +8 -0
  92. package/types/client/picker.d.ts +1 -1
  93. package/types/client/plugins.d.ts +4 -0
  94. package/types/client/pois.d.ts +1 -2
  95. package/types/client/promo.d.ts +6 -16
  96. package/types/client/pushNotifications.d.ts +1 -1
  97. package/types/client/queryString.d.ts +1 -1
  98. package/types/client/renderUtils.d.ts +1 -1
  99. package/types/client/renderers.d.ts +7 -3
  100. package/types/client/rootScope.d.ts +23 -24
  101. package/types/client/router.d.ts +9 -29
  102. package/types/client/seoParser.d.ts +0 -14
  103. package/types/client/serviceWorkerCtrl.d.ts +8 -0
  104. package/types/client/showableErrorsService.d.ts +6 -10
  105. package/types/client/startupWeather.d.ts +13 -9
  106. package/types/client/store.d.ts +2 -2
  107. package/types/client/storeLastPosition.d.ts +4 -0
  108. package/types/client/subscription.d.ts +1 -0
  109. package/types/client/swDownloader.d.ts +7 -7
  110. package/types/client/swProxy.d.ts +1 -1
  111. package/types/client/swUtils.d.ts +3 -3
  112. package/types/client/trans.d.ts +26 -37
  113. package/types/client/user.d.ts +7 -13
  114. package/types/client/userAlerts.d.ts +68 -0
  115. package/types/client/userConsent.d.ts +6 -0
  116. package/types/client/userFavs.d.ts +46 -122
  117. package/types/client/utils.d.ts +67 -9
  118. package/types/iconfont.d.ts +8 -0
  119. package/types/interfaces.d.ts +226 -284
  120. package/types/lang-files.d.ts +1334 -142
  121. package/types/offline.d.ts +100 -0
  122. package/types/types.d.ts +108 -34
  123. package/types/client/Bar.d.ts +0 -114
  124. package/types/client/BindedBar.d.ts +0 -51
  125. package/types/client/BindedCheckbox.d.ts +0 -30
  126. package/types/client/BindedSwitch.d.ts +0 -35
  127. package/types/client/BottomTagPlugin.d.ts +0 -8
  128. package/types/client/DraggableDiv.d.ts +0 -21
  129. package/types/client/GhostBox.d.ts +0 -17
  130. package/types/client/Legend.d.ts +0 -6
  131. package/types/client/LongTap.d.ts +0 -21
  132. package/types/client/MobileCalendar.d.ts +0 -51
  133. package/types/client/OfflineMessagesClasses.d.ts +0 -30
  134. package/types/client/ProductSwitch.d.ts +0 -14
  135. package/types/client/Scrollable.d.ts +0 -14
  136. package/types/client/Switch.d.ts +0 -24
  137. package/types/client/TimestampBar.d.ts +0 -8
  138. package/types/client/d.ts.files/Product.d.ts +0 -37
  139. package/types/client/d.ts.files/errorLogger.d.ts +0 -35
  140. package/types/client/d.ts.files/trans.d.ts +0 -55
  141. package/types/client/favs.d.ts +0 -83
  142. package/types/client/offlineController.d.ts +0 -20
  143. /package/types/client/d.ts.files/{Webcams.d.ts → webcams.d.ts} +0 -0
@@ -1,7 +1,5 @@
1
- import { OpenOptions } from '@capacitor/browser';
2
- import { ProviderConstructorParams } from '@plugins/_shared/subscription-services/subscription-services.d';
3
- import { FavEventTypes } from '@plugins/favs/favs.d';
4
- import { StartupArticleData, WhatsNewData } from '@plugins/startup/startup.d';
1
+ import { Fav, FavId } from '@windy/favs.d';
2
+ import { StartupArticleData, WhatsNewData } from '@windy/startup.d';
5
3
  import { HiddenReasonType, ReasonTypes } from '@plugins/subscription/subscription';
6
4
  import { FullRenderParameters } from '@windy/Layer.d';
7
5
  import { HttpPayload } from '@windy/http.d';
@@ -11,8 +9,6 @@ import {
11
9
  HomeLocation,
12
10
  LatLon,
13
11
  PickerCoords,
14
- SavedAlertFav,
15
- SavedFav,
16
12
  SummaryDataHash,
17
13
  WeatherDataPayload,
18
14
  } from '@windy/interfaces.d';
@@ -22,10 +18,15 @@ import {
22
18
  DetailDisplayType,
23
19
  RouteType,
24
20
  StationOrPoiType,
25
- type ExternalPluginIdent,
21
+ ExternalPluginIdent,
22
+ type Timestamp,
26
23
  } from '@windy/types.d';
27
24
  import { WebcamCategoryType } from '@windy/webcams';
28
25
 
26
+ import type { StoryPreview } from '@plugins/stories/stories.d';
27
+ import type { StationDisplayType } from '@plugins/station/station';
28
+ import type { PluginsListResponseDto } from '@plugins/external-plugins/external-plugins';
29
+
29
30
  /**
30
31
  * Type of source event, that led to opening any plugin
31
32
  */
@@ -33,12 +34,12 @@ export type PluginOpenEventSource =
33
34
  | 'contextmenu'
34
35
  | 'hp'
35
36
  | 'url'
36
- | 'sigleclick'
37
+ | 'singleclick'
37
38
  | 'poi-icon'
38
39
  | 'search'
39
40
  | 'detail'
40
- | 'singleclick'
41
41
  | 'favs-page'
42
+ | 'alerts-page'
42
43
  | 'favs-on-hp'
43
44
  | 'picker'
44
45
  | 'meta'
@@ -49,6 +50,7 @@ export type PluginOpenEventSource =
49
50
  | 'api'
50
51
  | 'last'
51
52
  | 'back-button'
53
+ | 'other'
52
54
  | 'label';
53
55
 
54
56
  export interface PluginSource {
@@ -56,7 +58,7 @@ export interface PluginSource {
56
58
  poiType?: StationOrPoiType | Pois | 'stations';
57
59
  }
58
60
 
59
- interface DetailOpenParams extends PluginSource, LatLon {
61
+ export interface DetailOpenParams extends PluginSource, LatLon {
60
62
  /**
61
63
  * How to display detail
62
64
  */
@@ -78,21 +80,14 @@ interface DetailOpenParams extends PluginSource, LatLon {
78
80
  id?: string;
79
81
 
80
82
  /**
81
- * If detail is opened by clicking on label
82
- */
83
- sourceEl?: HTMLElement;
84
-
85
- /**
86
- * Detail was opened by clicking on Alert neotification so detail table should be scrolled to
87
- * particular timestamp
83
+ * Detail should be scrolled to this timestamp
88
84
  */
89
85
  moveToTimestamp?: boolean;
90
86
 
91
87
  /**
92
- * Array of times, when Alert was triggered in a form of 897987987,098908089,09809098
93
- * where numbers are timestamps / tsHour
88
+ * Array of timestamp, when Alert was triggered
94
89
  */
95
- hrTimestamps?: string;
90
+ timestamps?: Timestamp[] | null;
96
91
  }
97
92
 
98
93
  type WebcamDetailOpenParams =
@@ -102,8 +97,9 @@ type WebcamDetailOpenParams =
102
97
  | undefined;
103
98
 
104
99
  type RplannerDistanceParams =
100
+ | { view: RouteType; coords: string; id: FavId; isFav: true } // Opening from favourites
105
101
  | { view?: RouteType; coords: string; id?: string } // Opening from URL
106
- | SavedFav
102
+ | Fav
107
103
  // | RplannerOpeningAsFavs // Clicking on route stored as fav
108
104
  | LatLon[] // User puts two airports is search bar
109
105
  | (LatLon & {
@@ -125,13 +121,12 @@ export type PluginsOpenParams = {
125
121
  detail: DetailOpenParams;
126
122
  picker: PickerOpenParams;
127
123
  'picker-mobile': PickerOpenParams;
128
- favs:
129
- | (PluginSource & {
130
- msg?: FavEventTypes;
131
- })
132
- | undefined;
133
-
134
- station: PluginSource & { id: string };
124
+ favs: PluginSource & { importObsoleteFavs?: boolean };
125
+ station: PluginSource & {
126
+ id: string;
127
+ moveToTimestamp?: Timestamp;
128
+ view?: StationDisplayType;
129
+ };
135
130
  multimodel: LatLon & PluginSource & { name?: string | null };
136
131
  webcams: (PluginSource & { category: WebcamCategoryType }) | undefined;
137
132
  'webcams-detail': PluginSource & WebcamDetailOpenParams;
@@ -152,49 +147,44 @@ export type PluginsOpenParams = {
152
147
  contextmenu: PluginSource & LatLon & { containerPoint?: L.Point };
153
148
  subscription:
154
149
  | (PluginSource & {
155
- fscNext?: string;
156
150
  promote?: ReasonTypes | HiddenReasonType;
157
151
  pendingError?: Error & { responseText: string };
158
152
  })
159
153
  | undefined;
160
- alerts:
161
- | (PluginSource & {
162
- id?: string;
163
- name?: string;
164
- title?: string;
165
- action?: 'new';
166
- lat?: string | number;
167
- lon?: string | number;
168
- })
169
- | (PluginSource & SavedAlertFav);
154
+ 'alerts-edit': PluginSource &
155
+ (
156
+ | { action: 'edit'; id: string }
157
+ | { action: 'migration'; favId: string }
158
+ | {
159
+ action: 'new';
160
+ lat: number;
161
+ lon: number;
162
+ locationName?: string;
163
+ }
164
+ );
165
+ alerts: PluginSource & {
166
+ message?: string;
167
+ };
170
168
  distance: PluginSource & RplannerDistanceParams;
171
169
  rplanner: PluginSource & RplannerDistanceParams;
172
- airport: PluginSource & {
173
- // Airport plugin can receive ICAO code as id || icao property
174
- icao?: string;
175
- id?: string;
176
- };
177
- 'save-password': PluginSource & {
178
- username: string;
179
- password: string;
180
- };
170
+ airport: PluginSource & { id: string };
181
171
  share: undefined;
182
172
  'nearest-stations': PluginSource & LatLon & { compactVersion?: boolean; includeAirq?: boolean };
183
173
  'nearest-airq': PluginSource & LatLon;
184
174
  'nearest-webcams-mobile': PluginSource & LatLon;
185
175
  'nearest-webcams': PluginSource & LatLon;
186
176
  'external-plugins':
187
- | (PluginSource & { id?: string; qs?: PluginsQsParams['external-plugins'] })
177
+ | (PluginSource & {
178
+ id?: string;
179
+ qs?: PluginsQsParams['external-plugins'];
180
+ installPlugin?: PluginsListResponseDto;
181
+ })
188
182
  | undefined;
189
- browser: PluginSource & {
190
- options: OpenOptions;
191
- onFinished?: () => void;
192
- };
193
183
  sounding: PluginSource & LatLon & { name?: string };
194
184
  radiosonde: PluginSource & { id: string; lat?: number; lon?: number };
195
185
  startup: PluginSource;
196
186
  'startup-whats-new': PluginSource & { data: WhatsNewData };
197
- 'startup-articles': PluginSource & { data: StartupArticleData[] };
187
+ 'startup-articles': PluginSource & { data: StartupArticleData };
198
188
  'startup-weather': PluginSource & {
199
189
  coords: HomeLocation | GeolocationInfo;
200
190
  promises: {
@@ -216,10 +206,17 @@ export type PluginsOpenParams = {
216
206
  showSystemDialog?: boolean;
217
207
  })
218
208
  | undefined;
219
- offline: PluginSource;
209
+ 'location-permission':
210
+ | (PluginSource & {
211
+ resolve?: (value: boolean | PromiseLike<boolean>) => void;
212
+ })
213
+ | undefined;
220
214
  'developer-mode': (PluginSource & { qs: Record<string, string> | undefined }) | undefined;
221
215
  'windy-external-plugin': PluginSource & LatLon;
222
- menu: PluginSource; // FIXME: This typing is not correct. Poi selector on HP is calling menu with string 'pois'
216
+ menu: PluginSource & { scrollTo?: 'pois' };
217
+ stories: { id: string; sortedAndEnhancedPreviews?: StoryPreview[] } & PluginSource;
218
+ onboarding: (PluginSource & { getUserInterests?: boolean }) | undefined;
219
+ 'heatmaps-redirect': PluginSource & { id?: string };
223
220
  } & {
224
221
  [external: ExternalPluginIdent]:
225
222
  | (PluginSource & { query: Record<string, string> | undefined })
@@ -228,7 +225,6 @@ export type PluginsOpenParams = {
228
225
  } & { [others: string]: undefined };
229
226
 
230
227
  export type PluginsQsParams = {
231
- subscription: ProviderConstructorParams | undefined;
232
228
  'external-plugins': Record<string, string> | undefined;
233
229
  'developer-mode': Record<string, string> | undefined;
234
230
  detail: { hrTimestamps?: string; name?: string; moveToTimestamp?: string };
@@ -1,25 +1,21 @@
1
- import { BottomTagPlugin } from '@windy/BottomTagPlugin';
1
+ import { BottomSveltePlugin } from '@windy/BottomSveltePlugins';
2
2
  import { Plugin } from '@windy/Plugin';
3
3
  import { SveltePanePlugin } from '@windy/SveltePanePlugin';
4
4
  import { SveltePlugin } from '@windy/SveltePlugin';
5
5
  import { TagPlugin } from '@windy/TagPlugin';
6
6
 
7
- export interface BottomTagPlugins {
8
- accumulations: BottomTagPlugin<'accumulations'>;
9
- radar: BottomTagPlugin<'radar'>;
10
- satellite: BottomTagPlugin<'satellite'>;
11
- 'cap-alerts': BottomTagPlugin<'cap-alerts'>;
12
- 'day-switcher': BottomTagPlugin<'day-switcher'>;
7
+ export interface BottomSveltePlugins {
8
+ 'mobile-calendar'?: BottomSveltePlugin<'mobile-calendar'>;
9
+ 'progress-bar'?: BottomSveltePlugin<'progress-bar'>;
13
10
 
14
- // mobile only, not embed
15
- 'mobile-calendar'?: BottomTagPlugin<'mobile-calendar'>;
16
-
17
- // embed or desktop only
18
- 'progress-bar'?: BottomTagPlugin<'progress-bar'>;
11
+ 'day-switcher': BottomSveltePlugin<'day-switcher'>;
12
+ 'cap-alerts': BottomSveltePlugin<'cap-alerts'>;
13
+ accumulations: BottomSveltePlugin<'accumulations'>;
19
14
  }
20
15
 
21
16
  export interface SveltePanePlugins {
22
17
  favs: SveltePanePlugin<'favs'>;
18
+ 'alerts-edit': SveltePanePlugin<'alerts-edit'>;
23
19
  alerts: SveltePanePlugin<'alerts'>;
24
20
  colors: SveltePanePlugin<'colors'>;
25
21
  articles: SveltePanePlugin<'articles'>;
@@ -32,12 +28,12 @@ export interface SveltePanePlugins {
32
28
  radiosonde: SveltePanePlugin<'radiosonde'>;
33
29
  airport: SveltePanePlugin<'airport'>;
34
30
  info: SveltePanePlugin<'info'>;
35
- offline: SveltePlugin<'offline'>;
36
31
  webcams: SveltePanePlugin<'webcams'>;
37
32
  'webcams-detail': SveltePanePlugin<'webcams-detail'>;
38
33
  'webcams-add': SveltePanePlugin<'webcams-add'>;
39
34
  'webcams-edit': SveltePanePlugin<'webcams-edit'>;
40
35
  'webcams-remove': SveltePanePlugin<'webcams-remove'>;
36
+
41
37
  uploader?: SveltePanePlugin<'uploader'>;
42
38
  'external-plugins'?: SveltePanePlugin<'external-plugins'>;
43
39
  }
@@ -58,61 +54,54 @@ export interface SveltePlugins {
58
54
  rplanner: SveltePlugin<'rplanner'>;
59
55
  menu: SveltePlugin<'menu'>;
60
56
  'fav-alert-menu': SveltePlugin<'fav-alert-menu'>;
57
+ radar: SveltePlugin<'radar'>;
58
+ satellite: SveltePlugin<'satellite'>;
59
+ 'radar-plus': SveltePlugin<'radar-plus'>;
60
+ 'map-selector': SveltePlugin<'map-selector'>;
61
61
 
62
62
  // Mobile/desktop only plugins
63
63
  distance?: SveltePlugin<'distance'>;
64
64
  'watch-faces'?: SveltePlugin<'watch-faces'>;
65
65
  'app-review-dialog'?: SveltePlugin<'app-review-dialog'>;
66
+ widgets?: SveltePlugin<'widgets'>;
67
+ garmin?: SveltePlugin<'garmin'>;
66
68
  'fav-layers'?: SveltePlugin<'fav-layers'>;
69
+ onboarding?: SveltePlugin<'onboarding'>;
67
70
  'developer-mode'?: SveltePlugin<'developer-mode'>;
68
71
  'pin-to-homepage'?: SveltePlugin<'pin-to-homepage'>;
69
72
  'startup-whats-new'?: SveltePlugin<'startup-whats-new'>;
70
73
  'rhpane-top': SveltePlugin<'rhpane-top'>;
74
+ rhbottom?: SveltePlugin<'rhbottom'>;
75
+ 'location-permission'?: SveltePlugin<'location-permission'>;
71
76
 
72
77
  'startup-weather'?: SveltePlugin<'startup-weather'>;
78
+ 'mobile-ui'?: SveltePlugin<'mobile-ui'>;
79
+ 'embed-ui'?: SveltePlugin<'embed-ui'>;
80
+ contextmenu?: SveltePlugin<'contextmenu'>;
81
+ upload: SveltePlugin<'upload'>;
82
+ search: SveltePlugin<'search'>;
83
+ 'startup-articles'?: SveltePlugin<'startup-articles'>;
84
+ 'picker-mobile'?: SveltePlugin<'picker-mobile'>; // to Svelte plugin
73
85
 
74
86
  // Used as fake plugin for any other external plugin
75
87
  // basically we are unable to type each individual external plugin
76
88
  'windy-external-plugin'?: SveltePlugin<'windy-external-plugin'>;
89
+ stories: SveltePlugin<'stories'>;
77
90
  }
78
91
 
79
92
  export interface PlainPlugins {
80
93
  'gl-particles': Plugin<'gl-particles'>;
81
94
  'legacy-tile-render': Plugin<'legacy-tile-render'>;
82
95
  particles: Plugin<'particles'>;
83
- startup?: Plugin<'startup'>;
96
+ isolines: Plugin<'isolines'>;
84
97
  }
85
98
 
86
99
  export interface TagPlugins {
87
- /**
88
- * Libraries with possible CSS, that remains opened
89
- */
90
- rhbottom: TagPlugin<'rhbottom'>;
100
+ // These plugins have css only (no html)
91
101
  'poi-libs': TagPlugin<'poi-libs'>;
92
-
93
- /**
94
- * Tag Plugins
95
- */
96
- upload: TagPlugin<'upload'>;
97
- screenshot: TagPlugin<'screenshot'>;
98
- isolines: TagPlugin<'isolines'>;
99
- search: TagPlugin<'search'>;
100
-
101
- // not embed plugins
102
- 'startup-articles'?: TagPlugin<'startup-articles'>;
103
-
104
- // desktop only plugins
105
- contextmenu?: TagPlugin<'contextmenu'>;
106
102
  picker?: TagPlugin<'picker'>;
107
103
  globe?: TagPlugin<'globe'>;
108
-
109
- // mobile only plugins
110
- 'picker-mobile'?: TagPlugin<'picker-mobile'>;
111
- 'promo-mobile-intro'?: TagPlugin<'promo-mobile-intro'>;
112
- profile?: TagPlugin<'profile'>;
113
- 'save-password'?: TagPlugin<'save-password'>;
114
- browser?: TagPlugin<'browser'>;
115
- 'map-selector'?: TagPlugin<'map-selector'>;
104
+ 'heatmaps-redirect': TagPlugin<'heatmaps-redirect'>;
116
105
  }
117
106
 
118
107
  export interface Plugins
@@ -120,10 +109,10 @@ export interface Plugins
120
109
  SveltePlugins,
121
110
  SveltePanePlugins,
122
111
  PlainPlugins,
123
- BottomTagPlugins {}
112
+ BottomSveltePlugins {}
124
113
 
125
114
  export interface WindowPlugins
126
115
  extends TagPlugins,
127
116
  SveltePlugins,
128
117
  SveltePanePlugins,
129
- BottomTagPlugins {}
118
+ BottomSveltePlugins {}
@@ -1,6 +1,6 @@
1
1
  import type { DataSpecifications } from '@windy/dataSpecifications.d';
2
2
  import type { Pois } from '@windy/rootScope.d';
3
- import type { LoadedTranslations } from '@windy/trans.d';
3
+ import type { LoadedTranslations } from '@windy/types';
4
4
 
5
5
  export type PoisCheckboxeDef = {
6
6
  checkboxTranslation?: keyof LoadedTranslations;
@@ -1,33 +1,42 @@
1
+ import { AccessProduct, AccessCProduct } from '@windy/AccessProducts';
1
2
  import { AromeProduct } from '@windy/AromeProduct';
2
- import { EcmwfAnalysisProduct } from '@windy/EcmwfAnalysisProduct';
3
3
  import { EcmwfProduct } from '@windy/EcmwfProduct';
4
4
  import { Product } from '@windy/Product';
5
+ import { RadarPlusProduct } from '@windy/RadarPlusProduct';
5
6
  import { SatelliteProduct } from '@windy/SatelliteProduct';
7
+
6
8
  import { Products } from '@windy/rootScope.d';
7
9
 
8
10
  export type products = Implements<
9
11
  { [P in Products]: Product },
10
12
  {
11
- bomAccess: Product;
13
+ bomAccess: AccessProduct;
14
+ bomAccessAd: AccessCProduct;
15
+ bomAccessBn: AccessCProduct;
16
+ bomAccessDn: AccessCProduct;
17
+ bomAccessNq: AccessCProduct;
18
+ bomAccessPh: AccessCProduct;
19
+ bomAccessSy: AccessCProduct;
20
+ bomAccessVt: AccessCProduct;
12
21
  mblue: Product;
13
22
  ecmwf: EcmwfProduct;
14
23
  ecmwfWaves: Product;
15
- ecmwfAifs: Product;
16
- ecmwfAnalysis: EcmwfAnalysisProduct;
24
+ ecmwfAnalysis: EcmwfProduct;
17
25
  canHrdps: Product;
18
26
  canRdwpsWaves: Product;
19
27
  cams: Product;
20
28
  camsEu: Product;
21
29
  cmems: Product;
30
+ czeAladin: Product;
22
31
  gfs: Product;
23
32
  gfsWaves: Product;
24
33
  icon: Product;
25
34
  iconD2: Product;
26
35
  iconEu: Product;
27
36
  iconEuWaves: Product;
28
- iconWaves: Product;
29
37
  arome: Product;
30
38
  aromeAntilles: AromeProduct;
39
+ aromeFrance: AromeProduct;
31
40
  aromeReunion: AromeProduct;
32
41
  nems: Product;
33
42
  namAlaska: Product;
@@ -37,6 +46,7 @@ export type products = Implements<
37
46
  efi: Product;
38
47
  radar: Product;
39
48
  satellite: SatelliteProduct;
49
+ radarPlus: RadarPlusProduct;
40
50
  hrrrAlaska: Product;
41
51
  hrrrConus: Product;
42
52
  ukv: Product;
@@ -45,5 +55,6 @@ export type products = Implements<
45
55
  activeFires: Product;
46
56
  jmaMsm: Product;
47
57
  jmaCwmWaves: Product;
58
+ topoMap: Product;
48
59
  }
49
60
  >;
@@ -1,43 +1,25 @@
1
- export type Levels = typeof import('./rootScope').levels[number];
1
+ export type Levels = (typeof import('./rootScope').levels)[number];
2
2
 
3
- export type Overlays = typeof import('./rootScope').overlays[number];
3
+ export type Overlays = (typeof import('./rootScope').overlays)[number];
4
4
 
5
- export type AcTimes = typeof import('./rootScope').acTimes[number];
5
+ export type LocalProducts = (typeof import('./rootScope').localProducts)[number];
6
6
 
7
- export type LocalProducts = typeof import('./rootScope').localProducts[number];
7
+ export type GlobalProducts = (typeof import('./rootScope').globalProducts)[number];
8
8
 
9
- export type GlobalProducts = typeof import('./rootScope').globalProducts[number];
9
+ export type SeaProducts = (typeof import('./rootScope').seaProducts)[number];
10
10
 
11
- export type SeaProducts = typeof import('./rootScope').seaProducts[number];
11
+ export type AirQualityProducts = (typeof import('./rootScope').airQualityProducts)[number];
12
12
 
13
- export type AirQualityProducts = typeof import('./rootScope').airQualityProducts[number];
13
+ export type LocalPointProducts = (typeof import('./rootScope').localPointProducts)[number];
14
14
 
15
- export type LocalPointProducts = typeof import('./rootScope').localPointProducts[number];
15
+ export type GlobalPointProducts = (typeof import('./rootScope').globalPointProducts)[number];
16
16
 
17
- export type GlobalPointProducts = typeof import('./rootScope').globalPointProducts[number];
17
+ export type PointProducts = (typeof import('./rootScope').pointProducts)[number];
18
18
 
19
- export type PointProducts = typeof import('./rootScope').pointProducts[number];
19
+ export type Products = (typeof import('./rootScope').products)[number];
20
20
 
21
- export type Products = typeof import('./rootScope').products[number];
21
+ export type SupportedLanguages = (typeof import('./rootScope').supportedLanguages)[number];
22
22
 
23
- export type SupportedLanguages = typeof import('./rootScope').supportedLanguages[number];
23
+ export type Pois = keyof typeof import('./rootScope').pois;
24
24
 
25
- export type Pois =
26
- | 'favs'
27
- | 'cities'
28
- | 'wind'
29
- | 'temp'
30
- | 'precip'
31
- | 'metars'
32
- | 'radiosonde'
33
- | 'cams'
34
- | 'pgspots'
35
- | 'kitespots'
36
- | 'surfspots'
37
- | 'tide'
38
- | 'radiation'
39
- | 'firespots'
40
- | 'airq'
41
- | 'empty';
42
-
43
- export type Isolines = 'off' | 'pressure' | 'gh' | 'temp' | 'deg0';
25
+ export type Isolines = (typeof import('./rootScope').isolinesType)[number];
@@ -0,0 +1,65 @@
1
+ import type { RelatedHomepageArticlesResponseDto } from '@plugins/articles/articles.d';
2
+ import type { Timestamp } from '@windy/types';
3
+
4
+ export type StartupNewsType = 'hp-article' | 'whats-new';
5
+
6
+ export interface StartupItem {
7
+ type: StartupNewsType;
8
+ }
9
+
10
+ export interface StartupResponse {
11
+ 'hp-articles'?: StartupArticleData[];
12
+ 'whats-new'?: WhatsNewData;
13
+ }
14
+
15
+ export interface StartupArticleData extends RelatedHomepageArticlesResponseDto, StartupItem {
16
+ type: 'hp-article';
17
+ }
18
+
19
+ export interface WhatsNewData extends StartupItem {
20
+ type: 'whats-new';
21
+ id: string;
22
+ title: string;
23
+ contributors: {
24
+ name: string;
25
+ avatarUrl: string;
26
+ }[];
27
+ content: {
28
+ new?: string;
29
+ improved?: string;
30
+ fixed?: string;
31
+ };
32
+ }
33
+
34
+ /**
35
+ * Info about articles, user has already seen
36
+ */
37
+ export interface SeenArticle {
38
+ /**
39
+ * How many times the article has been seen
40
+ * (one count is added only if the article has been seen after 12 hours from the last seen time)
41
+ */
42
+ count: number;
43
+
44
+ /**
45
+ * Marks beginning of 12h interval
46
+ */
47
+ seen: Timestamp;
48
+
49
+ /**
50
+ * Article was liked by user
51
+ */
52
+ liked?: boolean;
53
+ }
54
+
55
+ export interface SeenStory {
56
+ /**
57
+ * Timestamp when was story seen
58
+ */
59
+ seen: Timestamp;
60
+
61
+ /**
62
+ * Story was liked by user
63
+ */
64
+ liked?: boolean;
65
+ }
@@ -1,14 +1,9 @@
1
- import { MinifestObject } from '@windy/Calendar.d';
2
- import { Fav, LastSentDevice, SavedFav, SeenArticle } from '@windy/interfaces.d';
3
- import { StoredTransFile } from '@windy/trans.d';
4
1
  import { Timestamp } from '@windy/types.d';
5
-
6
- import LRUCache from './lruCache';
2
+ import { Fav, type ObsoleteFav } from '@windy/favs.d';
3
+ import { SearchRecent } from '@plugins/search/search';
7
4
 
8
5
  export interface StorageData {
9
- /**
10
- * Number of hits for every single promo2 id.
11
- */
6
+ /** @deprecated replaced by IDB */
12
7
  promos2?: Record<string, number>;
13
8
 
14
9
  /**
@@ -35,18 +30,6 @@ export interface StorageData {
35
30
  */
36
31
  rateDialogShown?: Timestamp;
37
32
 
38
- lastSentDevice?: LastSentDevice;
39
-
40
- /**
41
- * Articles, user has seen on particular device
42
- */
43
- articles?: Record<string, SeenArticle>;
44
-
45
- /**
46
- * Airport detail offline cache
47
- */
48
- 'offline/airport'?: ReturnType<LRUCache<string>['toJSON']>;
49
-
50
33
  /**
51
34
  * Used by dev plugin for plugins development
52
35
  */
@@ -54,27 +37,21 @@ export interface StorageData {
54
37
 
55
38
  version?: string;
56
39
 
57
- // TODO - centralize all these template strings to the logic directly in their modules
58
-
59
40
  [key: `settings_${string}_ts`]: Timestamp | null;
60
41
 
61
- [key: `lang/${string}.json`]: StoredTransFile | null;
62
-
63
- [key: `favs${number}`]: Record<string, SavedFav> | null;
64
-
65
- // TODO - remove this
66
- [key: `favs${number}_overflowed`]: Record<string, SavedFav> | null;
67
-
68
- [key: `favs${number}_ts`]: Timestamp | null;
69
-
70
- [key: `recents${number}`]: Record<string, Fav> | null;
71
-
72
- [key: `lastMinifest/${string}`]: MinifestObject | null;
73
-
74
42
  /**
75
43
  * Other dynamically add storage data
76
44
  */
77
45
  [ident: string]: unknown | null;
46
+
47
+ /** @deprecated & replaced by IDB */
48
+ [key: `recents${number}`]: Record<string, SearchRecent> | null;
49
+
50
+ /** @deprecated & replaced by IDB */
51
+ [key: `favs${number}`]: Record<string, Fav | ObsoleteFav> | null;
52
+
53
+ /** @deprecated & replaced by IDB */
54
+ [key: `favs${number}_ts`]: Timestamp | null;
78
55
  }
79
56
 
80
57
  export type StorageDataKey = keyof StorageData & string;