@windycom/plugin-devtools 1.0.9 → 3.0.0

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 (134) 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/BottomSveltePlugins.d.ts +8 -0
  6. package/types/client/Calendar.d.ts +9 -17
  7. package/types/client/Color.d.ts +43 -90
  8. package/types/client/Drag.d.ts +8 -1
  9. package/types/client/Evented.d.ts +4 -0
  10. package/types/client/ExternalSveltePlugin.d.ts +2 -1
  11. package/types/client/IDB.d.ts +63 -0
  12. package/types/client/IconProducts.d.ts +2 -0
  13. package/types/client/Layer.d.ts +1 -2
  14. package/types/client/Metric.d.ts +8 -8
  15. package/types/client/MetricClasses.d.ts +4 -3
  16. package/types/client/Overlay.d.ts +30 -15
  17. package/types/client/OverlayClasses.d.ts +11 -7
  18. package/types/client/Plugin.d.ts +2 -2
  19. package/types/client/Product.d.ts +53 -30
  20. package/types/client/RadarPlusProduct.d.ts +19 -0
  21. package/types/client/Renderer.d.ts +2 -10
  22. package/types/client/SveltePanePlugin.d.ts +4 -3
  23. package/types/client/SveltePlugin.d.ts +9 -5
  24. package/types/client/TileLayer.d.ts +1 -2
  25. package/types/client/TopoMap.d.ts +10 -0
  26. package/types/client/Window.d.ts +0 -4
  27. package/types/client/WindowPlugin.d.ts +15 -10
  28. package/types/client/appsFlyer.d.ts +3 -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/d.ts.files/Calendar.d.ts +11 -2
  34. package/types/client/d.ts.files/Color.d.ts +16 -5
  35. package/types/client/d.ts.files/LabelsLayer.d.ts +1 -18
  36. package/types/client/d.ts.files/Layer.d.ts +8 -1
  37. package/types/client/d.ts.files/Metric.d.ts +1 -0
  38. package/types/client/d.ts.files/Renderer.d.ts +22 -1
  39. package/types/client/d.ts.files/alerts.d.ts +120 -0
  40. package/types/client/d.ts.files/broadcast.d.ts +44 -17
  41. package/types/client/d.ts.files/dataSpecifications.d.ts +94 -137
  42. package/types/client/d.ts.files/favs.d.ts +69 -0
  43. package/types/client/d.ts.files/incomingMessages.d.ts +0 -4
  44. package/types/client/d.ts.files/notifications.d.ts +2 -2
  45. package/types/client/d.ts.files/plugin-params.d.ts +44 -58
  46. package/types/client/d.ts.files/plugins.d.ts +37 -52
  47. package/types/client/d.ts.files/pois.d.ts +1 -1
  48. package/types/client/d.ts.files/products.d.ts +19 -2
  49. package/types/client/d.ts.files/rootScope.d.ts +3 -21
  50. package/types/client/d.ts.files/satellite.d.ts +1 -0
  51. package/types/client/d.ts.files/startup.d.ts +59 -0
  52. package/types/client/d.ts.files/storage.d.ts +12 -35
  53. package/types/client/d.ts.files/user.d.ts +79 -24
  54. package/types/client/device.d.ts +0 -1
  55. package/types/client/deviceLogging.d.ts +2 -1
  56. package/types/client/embed2.d.ts +15 -35
  57. package/types/client/fetch.d.ts +31 -24
  58. package/types/client/ga.d.ts +4 -0
  59. package/types/client/geolocation.d.ts +14 -7
  60. package/types/client/globals.d.ts +1 -0
  61. package/types/client/http.d.ts +17 -0
  62. package/types/client/idbInstances.d.ts +45 -0
  63. package/types/client/interpolator.d.ts +2 -1
  64. package/types/client/langFiles.d.ts +2 -0
  65. package/types/client/layers.d.ts +2 -0
  66. package/types/client/lib.d.ts +7 -25
  67. package/types/client/libHtml.d.ts +1 -1
  68. package/types/client/loadArticlesOrWhatsNew.d.ts +1 -0
  69. package/types/client/log.d.ts +1 -0
  70. package/types/client/lruCache.d.ts +6 -0
  71. package/types/client/map.d.ts +17 -6
  72. package/types/client/mobile.d.ts +33 -27
  73. package/types/client/models.d.ts +1 -1
  74. package/types/client/nativeStorage.d.ts +0 -14
  75. package/types/client/notifications.d.ts +32 -67
  76. package/types/client/overlays.d.ts +4 -1
  77. package/types/client/params.d.ts +0 -1
  78. package/types/client/patchAndPromoCtrl.d.ts +13 -0
  79. package/types/client/permanentPromos.d.ts +1 -2
  80. package/types/client/persistentStorage.d.ts +8 -0
  81. package/types/client/picker.d.ts +1 -1
  82. package/types/client/pois.d.ts +1 -2
  83. package/types/client/promo.d.ts +16 -32
  84. package/types/client/pushNotifications.d.ts +13 -1
  85. package/types/client/queryString.d.ts +1 -1
  86. package/types/client/renderUtils.d.ts +1 -1
  87. package/types/client/renderers.d.ts +7 -3
  88. package/types/client/rootScope.d.ts +22 -27
  89. package/types/client/router.d.ts +10 -6
  90. package/types/client/seoParser.d.ts +21 -0
  91. package/types/client/serviceWorkerCtrl.d.ts +8 -0
  92. package/types/client/startupWeather.d.ts +27 -0
  93. package/types/client/store.d.ts +2 -2
  94. package/types/client/storeLastPosition.d.ts +1 -0
  95. package/types/client/subscription.d.ts +1 -0
  96. package/types/client/swDownloader.d.ts +7 -7
  97. package/types/client/swProxy.d.ts +1 -1
  98. package/types/client/swUtils.d.ts +3 -3
  99. package/types/client/trans.d.ts +26 -37
  100. package/types/client/user.d.ts +11 -14
  101. package/types/client/userAlerts.d.ts +68 -0
  102. package/types/client/userConsent.d.ts +6 -0
  103. package/types/client/userFavs.d.ts +46 -128
  104. package/types/client/utils.d.ts +46 -10
  105. package/types/iconfont.d.ts +6 -4
  106. package/types/interfaces.d.ts +199 -348
  107. package/types/lang-files.d.ts +736 -128
  108. package/types/offline.d.ts +100 -0
  109. package/types/types.d.ts +116 -29
  110. package/types/client/Bar.d.ts +0 -114
  111. package/types/client/BindedBar.d.ts +0 -51
  112. package/types/client/BindedCheckbox.d.ts +0 -30
  113. package/types/client/BindedDropDown.d.ts +0 -14
  114. package/types/client/BindedSwitch.d.ts +0 -35
  115. package/types/client/BottomTagPlugin.d.ts +0 -8
  116. package/types/client/Detail1hCheckbox.d.ts +0 -4
  117. package/types/client/DraggableDiv.d.ts +0 -21
  118. package/types/client/DropDown.d.ts +0 -37
  119. package/types/client/GhostBox.d.ts +0 -17
  120. package/types/client/Legend.d.ts +0 -6
  121. package/types/client/LongTap.d.ts +0 -21
  122. package/types/client/MobileCalendar.d.ts +0 -47
  123. package/types/client/OfflineMessagesClasses.d.ts +0 -30
  124. package/types/client/ProductSwitch.d.ts +0 -14
  125. package/types/client/Scrollable.d.ts +0 -14
  126. package/types/client/Switch.d.ts +0 -24
  127. package/types/client/TimestampBar.d.ts +0 -8
  128. package/types/client/Webcams.d.ts +0 -66
  129. package/types/client/d.ts.files/Product.d.ts +0 -37
  130. package/types/client/d.ts.files/trans.d.ts +0 -55
  131. package/types/client/favs.d.ts +0 -83
  132. package/types/client/hp.d.ts +0 -15
  133. package/types/client/offlineController.d.ts +0 -20
  134. /package/types/client/{loadersUI.d.ts → customColors.d.ts} +0 -0
@@ -0,0 +1,69 @@
1
+ import type { RouteType, StationId, Timestamp } from '@windy/types';
2
+ import type { LatLon, Alert, AlertProps } from '@windy/interfaces';
3
+
4
+ export type FavId = string;
5
+
6
+ /** New fav type not including alerts */
7
+ export type FavTypeNew = 'fav' | 'airport' | 'station' | 'webcam' | 'route';
8
+
9
+ /** @deprecated Old fav type including alert that will be abandoned soon */
10
+ export type FavType = FavTypeNew | 'alert';
11
+
12
+ export type RouteAsString = `${RouteType}/${string}`;
13
+
14
+ export type FavFragment =
15
+ | (LatLon & {
16
+ /** Title of the fav */
17
+ title: string;
18
+ }) &
19
+ (
20
+ | { type: 'fav' }
21
+
22
+ /** @deprecated use till migration of alerts is in process */
23
+ | {
24
+ type: 'alert';
25
+ alert: Alert;
26
+ alertProps: AlertProps;
27
+ }
28
+
29
+ /** Airport ICAO code in case of airport */
30
+ | { type: 'airport'; icao: string }
31
+
32
+ /** Weather station ID (if WX station) */
33
+ | { type: 'station'; stationId: StationId }
34
+ | { type: 'webcam'; webcamId: number }
35
+ | { type: 'route'; route: RouteAsString }
36
+ );
37
+
38
+ export type Fav = FavFragment & {
39
+ /** Unique mongoDb ID of item */
40
+ id: FavId;
41
+
42
+ /**
43
+ * If user wants to pin to top this fav, this timestamp enable us to sort all the favs
44
+ * so the last pinned is on top
45
+ */
46
+ pin2top?: Timestamp | null;
47
+
48
+ /**
49
+ * If user wants to pin to homepage this fav, this timestamp enable us to sort all the favs
50
+ * so the last pinned is first in line
51
+ */
52
+ pin2homepage?: Timestamp | null;
53
+
54
+ /**
55
+ * Timestamp when the item has been updated for the last time. It is used for updating items on all devices (the most up-to-date wins)
56
+ */
57
+ updated: Timestamp;
58
+ };
59
+
60
+ export type ObsoleteFav = FavFragment & {
61
+ key: string;
62
+ };
63
+
64
+ export type FavQuery =
65
+ | { webcamsId: number }
66
+ | { stationId: StationId }
67
+ | { icao: string }
68
+ | { type: FavType }
69
+ | { title: string };
@@ -53,10 +53,6 @@ export interface QueryStringEmbedParams {
53
53
  product?: Products;
54
54
  showDetail: boolean;
55
55
  showMarker: boolean;
56
- /**
57
- * @deprecated Only used for query string of type=alert
58
- */
59
- timestamps?: string;
60
56
  type: 'map' | 'alert' | 'forecast';
61
57
  zoom: number;
62
58
  }
@@ -1,8 +1,8 @@
1
1
  import { QueryStringSource } from '@windy/http.d';
2
2
 
3
3
  export interface NotifHttpQsOptions extends QueryStringSource {
4
- pageSize: number;
5
- current: number;
4
+ pageSize?: number;
5
+ current?: number;
6
6
  markAsViewed?: boolean;
7
7
  }
8
8
 
@@ -1,10 +1,7 @@
1
- import { OpenOptions } from '@capacitor/browser';
2
- import { PublicationParams } from '@plugins/articles/articles.d';
3
- import { FavEventTypes } from '@plugins/favs/favs.d';
4
- import { ProviderConstructorParams } from '@plugins/_shared/subscription-services/subscription-services.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
- import { WebcamCategoryType } from '@windy/Webcams.d';
8
5
  import { HttpPayload } from '@windy/http.d';
9
6
  import {
10
7
  CapAlertHeadline,
@@ -12,8 +9,6 @@ import {
12
9
  HomeLocation,
13
10
  LatLon,
14
11
  PickerCoords,
15
- SavedAlertFav,
16
- SavedFav,
17
12
  SummaryDataHash,
18
13
  WeatherDataPayload,
19
14
  } from '@windy/interfaces.d';
@@ -23,8 +18,10 @@ import {
23
18
  DetailDisplayType,
24
19
  RouteType,
25
20
  StationOrPoiType,
26
- type ExternalPluginIdent,
21
+ ExternalPluginIdent,
22
+ type Timestamp,
27
23
  } from '@windy/types.d';
24
+ import { WebcamCategoryType } from '@windy/webcams';
28
25
 
29
26
  /**
30
27
  * Type of source event, that led to opening any plugin
@@ -33,12 +30,12 @@ export type PluginOpenEventSource =
33
30
  | 'contextmenu'
34
31
  | 'hp'
35
32
  | 'url'
36
- | 'sigleclick'
37
33
  | 'poi-icon'
38
34
  | 'search'
39
35
  | 'detail'
40
36
  | 'singleclick'
41
37
  | 'favs-page'
38
+ | 'favs-on-hp'
42
39
  | 'picker'
43
40
  | 'meta'
44
41
  | 'fallback'
@@ -48,6 +45,7 @@ export type PluginOpenEventSource =
48
45
  | 'api'
49
46
  | 'last'
50
47
  | 'back-button'
48
+ | 'other'
51
49
  | 'label';
52
50
 
53
51
  export interface PluginSource {
@@ -55,7 +53,7 @@ export interface PluginSource {
55
53
  poiType?: StationOrPoiType | Pois | 'stations';
56
54
  }
57
55
 
58
- interface DetailOpenParams extends PluginSource, LatLon {
56
+ export interface DetailOpenParams extends PluginSource, LatLon {
59
57
  /**
60
58
  * How to display detail
61
59
  */
@@ -82,16 +80,15 @@ interface DetailOpenParams extends PluginSource, LatLon {
82
80
  sourceEl?: HTMLElement;
83
81
 
84
82
  /**
85
- * Detail was opened by clicking on Alert neotification so detail table should be scrolled to
83
+ * Detail was opened by clicking on Alert notification so detail table should be scrolled to
86
84
  * particular timestamp
87
85
  */
88
86
  moveToTimestamp?: boolean;
89
87
 
90
88
  /**
91
- * Array of times, when Alert was triggered in a form of 897987987,098908089,09809098
92
- * where numbers are timestamps / tsHour
89
+ * Array of timestamp, when Alert was triggered
93
90
  */
94
- hrTimestamps?: string;
91
+ timestamps?: Timestamp[] | null;
95
92
  }
96
93
 
97
94
  type WebcamDetailOpenParams =
@@ -101,8 +98,9 @@ type WebcamDetailOpenParams =
101
98
  | undefined;
102
99
 
103
100
  type RplannerDistanceParams =
101
+ | { view: RouteType; coords: string; id: FavId; isFav: true } // Opening from favourites
104
102
  | { view?: RouteType; coords: string; id?: string } // Opening from URL
105
- | SavedFav
103
+ | Fav
106
104
  // | RplannerOpeningAsFavs // Clicking on route stored as fav
107
105
  | LatLon[] // User puts two airports is search bar
108
106
  | (LatLon & {
@@ -124,27 +122,16 @@ export type PluginsOpenParams = {
124
122
  detail: DetailOpenParams;
125
123
  picker: PickerOpenParams;
126
124
  'picker-mobile': PickerOpenParams;
127
- favs:
128
- | (PluginSource & {
129
- msg?: FavEventTypes;
130
- })
131
- | undefined;
132
-
133
- station: PluginSource & { id?: string; stationId?: string };
125
+ favs: PluginSource & { importObsoleteFavs?: boolean };
126
+ station: PluginSource & { id: string };
134
127
  multimodel: LatLon & PluginSource & { name?: string | null };
135
128
  webcams: (PluginSource & { category: WebcamCategoryType }) | undefined;
136
129
  'webcams-detail': PluginSource & WebcamDetailOpenParams;
137
130
  'webcams-edit': PluginSource & WebcamDetailOpenParams;
138
- 'webcams-embed':
139
- | PluginSource & {
140
- id: string | number;
141
- forcedPois?: boolean;
142
- };
143
131
  'webcams-remove': PluginSource & WebcamDetailOpenParams;
144
132
  //settings: (PluginSource & { id: string }) | undefined;
145
- settings: (PluginSource & { section?: 'notificationPreferences' }) | undefined;
146
- articles: (PluginSource & { id: number }) | (PluginSource & PublicationParams) | undefined;
147
- 'article-publisher': (PluginSource & { pane?: '' | 'list' | 'detail' }) | null;
133
+ settings: PluginSource | undefined;
134
+ articles: (PluginSource & { id: number | string }) | undefined;
148
135
  upload: PluginSource & { id: string };
149
136
  uploader: PluginSource & { id?: string };
150
137
  'cap-alert': PluginSource &
@@ -157,32 +144,27 @@ export type PluginsOpenParams = {
157
144
  contextmenu: PluginSource & LatLon & { containerPoint?: L.Point };
158
145
  subscription:
159
146
  | (PluginSource & {
160
- fscNext?: string;
161
147
  promote?: ReasonTypes | HiddenReasonType;
162
148
  pendingError?: Error & { responseText: string };
163
149
  })
164
150
  | undefined;
165
- alerts:
166
- | (PluginSource & {
167
- id?: string;
168
- name?: string;
169
- title?: string;
170
- action?: 'new';
171
- lat?: string | number;
172
- lon?: string | number;
173
- })
174
- | (PluginSource & SavedAlertFav);
151
+ 'alerts-edit': PluginSource &
152
+ (
153
+ | { action: 'edit'; id: string }
154
+ | { action: 'migration'; favId: string }
155
+ | {
156
+ action: 'new';
157
+ lat: number;
158
+ lon: number;
159
+ locationName?: string;
160
+ }
161
+ );
162
+ alerts: PluginSource & {
163
+ message?: string;
164
+ };
175
165
  distance: PluginSource & RplannerDistanceParams;
176
166
  rplanner: PluginSource & RplannerDistanceParams;
177
- airport: PluginSource & {
178
- // Airport plugin can receive ICAO code as id || icao property
179
- icao?: string;
180
- id?: string;
181
- };
182
- 'save-password': PluginSource & {
183
- username: string;
184
- password: string;
185
- };
167
+ airport: PluginSource & { id: string };
186
168
  share: undefined;
187
169
  'nearest-stations': PluginSource & LatLon & { compactVersion?: boolean; includeAirq?: boolean };
188
170
  'nearest-airq': PluginSource & LatLon;
@@ -191,13 +173,12 @@ export type PluginsOpenParams = {
191
173
  'external-plugins':
192
174
  | (PluginSource & { id?: string; qs?: PluginsQsParams['external-plugins'] })
193
175
  | undefined;
194
- browser: PluginSource & {
195
- options: OpenOptions;
196
- onFinished?: () => void;
197
- };
198
176
  sounding: PluginSource & LatLon & { name?: string };
199
177
  radiosonde: PluginSource & { id: string; lat?: number; lon?: number };
200
- 'hp-weather': PluginSource & {
178
+ startup: PluginSource;
179
+ 'startup-whats-new': PluginSource & { data: WhatsNewData };
180
+ 'startup-articles': PluginSource & { data: StartupArticleData[] };
181
+ 'startup-weather': PluginSource & {
201
182
  coords: HomeLocation | GeolocationInfo;
202
183
  promises: {
203
184
  wx: Promise<HttpPayload<WeatherDataPayload<SummaryDataHash>>>;
@@ -218,10 +199,16 @@ export type PluginsOpenParams = {
218
199
  showSystemDialog?: boolean;
219
200
  })
220
201
  | undefined;
221
- offline: PluginSource;
202
+ 'location-permission':
203
+ | (PluginSource & {
204
+ resolve?: (value: boolean | PromiseLike<boolean>) => void;
205
+ })
206
+ | undefined;
222
207
  'developer-mode': (PluginSource & { qs: Record<string, string> | undefined }) | undefined;
223
208
  'windy-external-plugin': PluginSource & LatLon;
224
- menu: PluginSource;
209
+ menu: PluginSource & { scrollTo?: 'pois' };
210
+ onboarding: (PluginSource & { getUserInterests?: boolean }) | undefined;
211
+ 'heatmaps-redirect': PluginSource & { id?: string };
225
212
  } & {
226
213
  [external: ExternalPluginIdent]:
227
214
  | (PluginSource & { query: Record<string, string> | undefined })
@@ -230,7 +217,6 @@ export type PluginsOpenParams = {
230
217
  } & { [others: string]: undefined };
231
218
 
232
219
  export type PluginsQsParams = {
233
- subscription: ProviderConstructorParams | undefined;
234
220
  'external-plugins': Record<string, string> | undefined;
235
221
  'developer-mode': Record<string, string> | undefined;
236
222
  detail: { hrTimestamps?: string; name?: string; moveToTimestamp?: string };
@@ -1,52 +1,45 @@
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'>;
26
-
27
22
  debug: SveltePanePlugin<'debug'>;
28
23
  hurricanes: SveltePanePlugin<'hurricanes'>;
29
24
  'cap-alert': SveltePanePlugin<'cap-alert'>;
30
- login: SveltePanePlugin<'login'>;
31
25
  'delete-info': SveltePanePlugin<'delete-info'>;
32
26
  settings: SveltePanePlugin<'settings'>;
33
27
  sounding: SveltePanePlugin<'sounding'>;
34
28
  radiosonde: SveltePanePlugin<'radiosonde'>;
35
29
  airport: SveltePanePlugin<'airport'>;
36
30
  info: SveltePanePlugin<'info'>;
37
-
38
31
  webcams: SveltePanePlugin<'webcams'>;
39
32
  'webcams-detail': SveltePanePlugin<'webcams-detail'>;
40
33
  'webcams-add': SveltePanePlugin<'webcams-add'>;
41
34
  'webcams-edit': SveltePanePlugin<'webcams-edit'>;
42
35
  'webcams-remove': SveltePanePlugin<'webcams-remove'>;
43
- 'webcams-embed': SveltePanePlugin<'webcams-embed'>;
44
36
 
45
37
  uploader?: SveltePanePlugin<'uploader'>;
46
38
  'external-plugins'?: SveltePanePlugin<'external-plugins'>;
47
39
  }
48
40
 
49
41
  export interface SveltePlugins {
42
+ login: SveltePlugin<'login'>;
50
43
  'nearest-webcams': SveltePlugin<'nearest-webcams'>;
51
44
  'nearest-webcams-mobile': SveltePlugin<'nearest-webcams-mobile'>;
52
45
  'nearest-airq': SveltePlugin<'nearest-airq'>;
@@ -55,25 +48,43 @@ export interface SveltePlugins {
55
48
  multimodel: SveltePlugin<'multimodel'>;
56
49
  subscription: SveltePlugin<'subscription'>;
57
50
  'pending-subscription': SveltePlugin<'pending-subscription'>;
58
- 'whats-new': SveltePlugin<'whats-new'>;
59
- offline: SveltePlugin<'offline'>;
60
51
  detail: SveltePlugin<'detail'>;
61
52
  station: SveltePlugin<'station'>;
62
53
  consent: SveltePlugin<'consent'>;
63
54
  rplanner: SveltePlugin<'rplanner'>;
64
55
  menu: SveltePlugin<'menu'>;
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'>;
65
61
 
66
62
  // Mobile/desktop only plugins
67
63
  distance?: SveltePlugin<'distance'>;
68
- 'article-publisher'?: SveltePlugin<'article-publisher'>;
69
- 'beta-test'?: SveltePlugin<'beta-test'>;
70
64
  'watch-faces'?: SveltePlugin<'watch-faces'>;
71
65
  'app-review-dialog'?: SveltePlugin<'app-review-dialog'>;
66
+ widgets?: SveltePlugin<'widgets'>;
72
67
  'fav-layers'?: SveltePlugin<'fav-layers'>;
68
+ onboarding?: SveltePlugin<'onboarding'>;
73
69
  'developer-mode'?: SveltePlugin<'developer-mode'>;
70
+ 'pin-to-homepage'?: SveltePlugin<'pin-to-homepage'>;
71
+ 'startup-whats-new'?: SveltePlugin<'startup-whats-new'>;
72
+ 'rhpane-top': SveltePlugin<'rhpane-top'>;
73
+ rhbottom?: SveltePlugin<'rhbottom'>;
74
+ 'location-permission'?: SveltePlugin<'location-permission'>;
75
+
76
+ 'startup-weather'?: SveltePlugin<'startup-weather'>;
77
+ 'mobile-ui'?: SveltePlugin<'mobile-ui'>;
78
+ 'embed-ui'?: SveltePlugin<'embed-ui'>;
79
+ contextmenu?: SveltePlugin<'contextmenu'>;
80
+ upload: SveltePlugin<'upload'>;
81
+ screenshot: SveltePlugin<'screenshot'>;
82
+ search: SveltePlugin<'search'>;
83
+ 'startup-articles'?: SveltePlugin<'startup-articles'>;
84
+ 'picker-mobile'?: SveltePlugin<'picker-mobile'>; // to Svelte plugin
74
85
 
75
86
  // Used as fake plugin for any other external plugin
76
- // basically we are unalble to type each individual external plugin
87
+ // basically we are unable to type each individual external plugin
77
88
  'windy-external-plugin'?: SveltePlugin<'windy-external-plugin'>;
78
89
  }
79
90
 
@@ -81,41 +92,15 @@ export interface PlainPlugins {
81
92
  'gl-particles': Plugin<'gl-particles'>;
82
93
  'legacy-tile-render': Plugin<'legacy-tile-render'>;
83
94
  particles: Plugin<'particles'>;
95
+ isolines: Plugin<'isolines'>;
84
96
  }
85
97
 
86
98
  export interface TagPlugins {
87
- /**
88
- * Libraries with possible CSS, that remains opened
89
- */
90
- 'rhpane-top': TagPlugin<'rhpane-top'>;
91
- rhbottom: TagPlugin<'rhbottom'>;
92
- patch: TagPlugin<'patch'>;
99
+ // These plugins have css only (no html)
93
100
  'poi-libs': TagPlugin<'poi-libs'>;
94
-
95
- /**
96
- * Tag Plugins
97
- */
98
- 'fav-alert-menu': TagPlugin<'fav-alert-menu'>;
99
- upload: TagPlugin<'upload'>;
100
- screenshot: TagPlugin<'screenshot'>;
101
- isolines: TagPlugin<'isolines'>;
102
- search: TagPlugin<'search'>;
103
-
104
- // not embed plugins
105
- 'hp-weather'?: TagPlugin<'hp-weather'>;
106
-
107
- // desktop only plugins
108
- contextmenu?: TagPlugin<'contextmenu'>;
109
101
  picker?: TagPlugin<'picker'>;
110
102
  globe?: TagPlugin<'globe'>;
111
-
112
- // mobile only plugins
113
- 'picker-mobile'?: TagPlugin<'picker-mobile'>;
114
- 'promo-mobile-intro'?: TagPlugin<'promo-mobile-intro'>;
115
- profile?: TagPlugin<'profile'>;
116
- 'save-password'?: TagPlugin<'save-password'>;
117
- browser?: TagPlugin<'browser'>;
118
- 'map-selector'?: TagPlugin<'map-selector'>;
103
+ 'heatmaps-redirect': TagPlugin<'heatmaps-redirect'>;
119
104
  }
120
105
 
121
106
  export interface Plugins
@@ -123,10 +108,10 @@ export interface Plugins
123
108
  SveltePlugins,
124
109
  SveltePanePlugins,
125
110
  PlainPlugins,
126
- BottomTagPlugins {}
111
+ BottomSveltePlugins {}
127
112
 
128
113
  export interface WindowPlugins
129
114
  extends TagPlugins,
130
115
  SveltePlugins,
131
116
  SveltePanePlugins,
132
- BottomTagPlugins {}
117
+ 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,30 +1,43 @@
1
+ import { AccessProduct, AccessCProduct } from '@windy/AccessProducts';
1
2
  import { AromeProduct } from '@windy/AromeProduct';
2
3
  import { EcmwfAnalysisProduct } from '@windy/EcmwfAnalysisProduct';
3
4
  import { EcmwfProduct } from '@windy/EcmwfProduct';
4
5
  import { Product } from '@windy/Product';
6
+ import { RadarPlusProduct } from '@windy/RadarPlusProduct';
5
7
  import { SatelliteProduct } from '@windy/SatelliteProduct';
8
+
6
9
  import { Products } from '@windy/rootScope.d';
7
10
 
8
11
  export type products = Implements<
9
12
  { [P in Products]: Product },
10
13
  {
11
- bomAccess: Product;
14
+ bomAccess: AccessProduct;
15
+ bomAccessAd: AccessCProduct;
16
+ bomAccessBn: AccessCProduct;
17
+ bomAccessDn: AccessCProduct;
18
+ bomAccessNq: AccessCProduct;
19
+ bomAccessPh: AccessCProduct;
20
+ bomAccessSy: AccessCProduct;
21
+ bomAccessVt: AccessCProduct;
12
22
  mblue: Product;
13
23
  ecmwf: EcmwfProduct;
14
24
  ecmwfWaves: Product;
15
25
  ecmwfAnalysis: EcmwfAnalysisProduct;
26
+ canHrdps: Product;
27
+ canRdwpsWaves: Product;
16
28
  cams: Product;
17
29
  camsEu: Product;
18
30
  cmems: Product;
31
+ czeAladin: Product;
19
32
  gfs: Product;
20
33
  gfsWaves: Product;
21
34
  icon: Product;
22
35
  iconD2: Product;
23
36
  iconEu: Product;
24
37
  iconEuWaves: Product;
25
- iconWaves: Product;
26
38
  arome: Product;
27
39
  aromeAntilles: AromeProduct;
40
+ aromeFrance: AromeProduct;
28
41
  aromeReunion: AromeProduct;
29
42
  nems: Product;
30
43
  namAlaska: Product;
@@ -34,11 +47,15 @@ export type products = Implements<
34
47
  efi: Product;
35
48
  radar: Product;
36
49
  satellite: SatelliteProduct;
50
+ radarPlus: RadarPlusProduct;
37
51
  hrrrAlaska: Product;
38
52
  hrrrConus: Product;
39
53
  ukv: Product;
40
54
  drought: Product;
41
55
  fireDanger: Product;
42
56
  activeFires: Product;
57
+ jmaMsm: Product;
58
+ jmaCwmWaves: Product;
59
+ topoMap: Product;
43
60
  }
44
61
  >;
@@ -2,8 +2,6 @@ export type Levels = typeof import('./rootScope').levels[number];
2
2
 
3
3
  export type Overlays = typeof import('./rootScope').overlays[number];
4
4
 
5
- export type AcTimes = typeof import('./rootScope').acTimes[number];
6
-
7
5
  export type LocalProducts = typeof import('./rootScope').localProducts[number];
8
6
 
9
7
  export type GlobalProducts = typeof import('./rootScope').globalProducts[number];
@@ -22,22 +20,6 @@ export type Products = typeof import('./rootScope').products[number];
22
20
 
23
21
  export type SupportedLanguages = typeof import('./rootScope').supportedLanguages[number];
24
22
 
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';
23
+ export type Pois = keyof typeof import('./rootScope').pois;
24
+
25
+ export type Isolines = typeof import('./rootScope').isolinesType[number];
@@ -42,6 +42,7 @@ export interface SatelliteInfoJson {
42
42
 
43
43
  // content added during processing:
44
44
  hash: number;
45
+ // time interval for archive
45
46
  minDateTs: number;
46
47
  maxDateTs: number;
47
48
 
@@ -0,0 +1,59 @@
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
+ export interface EnhancedStartupArticle extends StartupArticleData {
35
+ key: string;
36
+ count: number;
37
+ lastDisplayed: number;
38
+ }
39
+
40
+ /**
41
+ * Info about articles, user has already seen
42
+ */
43
+ export interface SeenArticle {
44
+ /**
45
+ * Last time, the article has been displayed to the user
46
+ */
47
+ lastDisplayed: Timestamp;
48
+
49
+ /**
50
+ * How many times the article has been seen
51
+ * (one count is added only if the article has been seen after 12 hours from the last seen time)
52
+ */
53
+ count: number;
54
+
55
+ /**
56
+ * Marks beginning of 12h interval
57
+ */
58
+ seen: Timestamp;
59
+ }