@windycom/plugin-devtools 3.0.2 → 3.0.3

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 (112) hide show
  1. package/package.json +1 -1
  2. package/types/client/Calendar.d.ts +4 -0
  3. package/types/client/Color.d.ts +9 -2
  4. package/types/client/DataTiler.d.ts +2 -2
  5. package/types/client/EventManager.d.ts +69 -0
  6. package/types/client/ExternalSveltePlugin.d.ts +4 -3
  7. package/types/client/GlBuffer.d.ts +45 -0
  8. package/types/client/GlMesh.d.ts +147 -0
  9. package/types/client/GlProgram.d.ts +41 -0
  10. package/types/client/GlRenderer.d.ts +95 -0
  11. package/types/client/GlTexture.d.ts +98 -0
  12. package/types/client/GlVertexArray.d.ts +38 -0
  13. package/types/client/IDB.d.ts +25 -4
  14. package/types/client/LabelsLayer.d.ts +69 -2
  15. package/types/client/Layer.d.ts +2 -1
  16. package/types/client/MetricClasses.d.ts +1 -1
  17. package/types/client/Overlay.d.ts +1 -5
  18. package/types/client/Product.d.ts +10 -5
  19. package/types/client/ProductClasses.d.ts +7 -0
  20. package/types/client/Renderer.d.ts +16 -19
  21. package/types/client/ShaderStorage.d.ts +25 -0
  22. package/types/client/StartupElementPlugin.d.ts +8 -0
  23. package/types/client/SveltePlugin.d.ts +4 -4
  24. package/types/client/SwitchableTileCache.d.ts +104 -0
  25. package/types/client/TileLayer.d.ts +11 -2
  26. package/types/client/TileLayerCustom.d.ts +51 -0
  27. package/types/client/TileLayerMulti.d.ts +53 -0
  28. package/types/client/TileLayerPreprocessorStandalone.d.ts +45 -0
  29. package/types/client/TileLayerRenderer.d.ts +24 -0
  30. package/types/client/TileLayerUtils.d.ts +43 -0
  31. package/types/client/TilePreprocessor.d.ts +27 -0
  32. package/types/client/TopoMap.d.ts +2 -1
  33. package/types/client/WindowPlugin.d.ts +1 -3
  34. package/types/client/baseMap.d.ts +12 -2
  35. package/types/client/broadcast.d.ts +1 -1
  36. package/types/client/cityLabels.d.ts +2 -3
  37. package/types/client/colorGradients.d.ts +1 -2
  38. package/types/client/css.test.d.ts +1 -0
  39. package/types/client/customProtocol.d.ts +11 -0
  40. package/types/client/d.ts.files/GlObj.d.ts +1 -5
  41. package/types/client/d.ts.files/Metric.d.ts +2 -0
  42. package/types/client/d.ts.files/broadcast.d.ts +28 -32
  43. package/types/client/d.ts.files/dataSpecifications.d.ts +60 -42
  44. package/types/client/d.ts.files/glUtils.d.ts +71 -0
  45. package/types/client/d.ts.files/http.d.ts +0 -5
  46. package/types/client/d.ts.files/interpolatorTypes.d.ts +5 -5
  47. package/types/client/d.ts.files/lib.d.ts +1 -1
  48. package/types/client/d.ts.files/liveAlerts.d.ts +52 -0
  49. package/types/client/d.ts.files/mapUtils.d.ts +25 -0
  50. package/types/client/d.ts.files/outgoingMessages.d.ts +1 -1
  51. package/types/client/d.ts.files/plugin-params.d.ts +31 -13
  52. package/types/client/d.ts.files/plugins.d.ts +44 -29
  53. package/types/client/d.ts.files/singleclick.d.ts +4 -2
  54. package/types/client/d.ts.files/startup.d.ts +7 -52
  55. package/types/client/d.ts.files/storage.d.ts +0 -11
  56. package/types/client/d.ts.files/user.d.ts +6 -1
  57. package/types/client/embed.d.ts +2 -5
  58. package/types/client/errorLogger.d.ts +19 -0
  59. package/types/client/externalPlugins.d.ts +4 -2
  60. package/types/client/fetch.d.ts +38 -5
  61. package/types/client/format.d.ts +11 -0
  62. package/types/client/glContextUtils.d.ts +9 -0
  63. package/types/client/glStatus.d.ts +7 -0
  64. package/types/client/glUtils.d.ts +119 -0
  65. package/types/client/http.d.ts +0 -6
  66. package/types/client/idbConnection.d.ts +13 -0
  67. package/types/client/idbInstances.d.ts +36 -42
  68. package/types/client/landLayer.d.ts +3 -0
  69. package/types/client/layers.d.ts +2 -1
  70. package/types/client/lib.d.ts +11 -14
  71. package/types/client/liveAlerts.d.ts +2 -2
  72. package/types/client/location.d.ts +1 -1
  73. package/types/client/map.d.ts +95 -22
  74. package/types/client/mapUtils.d.ts +66 -0
  75. package/types/client/math.d.ts +14 -0
  76. package/types/client/mobile.d.ts +16 -34
  77. package/types/client/mobileUtils.d.ts +10 -0
  78. package/types/client/models.d.ts +1 -1
  79. package/types/client/overlays.d.ts +2 -2
  80. package/types/client/picker.d.ts +4 -8
  81. package/types/client/products.d.ts +0 -1
  82. package/types/client/promo.d.ts +1 -1
  83. package/types/client/renderUtils.d.ts +14 -0
  84. package/types/client/renderers.d.ts +5 -6
  85. package/types/client/rootScope.d.ts +9 -9
  86. package/types/client/router.d.ts +7 -2
  87. package/types/client/singleclick.d.ts +1 -1
  88. package/types/client/startup.d.ts +48 -0
  89. package/types/client/startupUtils.d.ts +19 -0
  90. package/types/client/subscription.d.ts +3 -26
  91. package/types/client/throttler.d.ts +32 -0
  92. package/types/client/tileHelpers.d.ts +35 -0
  93. package/types/client/tileLayerInterpolator.d.ts +40 -0
  94. package/types/client/tileLayerSource.d.ts +98 -0
  95. package/types/client/timestampUtils.test.d.ts +1 -0
  96. package/types/client/topMessage.d.ts +22 -0
  97. package/types/client/user.d.ts +1 -0
  98. package/types/client/userConsent.d.ts +0 -2
  99. package/types/client/userFavs.d.ts +0 -8
  100. package/types/client/utils.d.ts +62 -10
  101. package/types/client/utils.test.d.ts +1 -0
  102. package/types/iconfont.d.ts +2 -5
  103. package/types/interfaces.d.ts +121 -100
  104. package/types/lang-files.d.ts +412 -72
  105. package/types/leaflet-gl.d.ts +12773 -0
  106. package/types/types.d.ts +28 -6
  107. package/types/client/d.ts.files/CanvasLayer.d.ts +0 -70
  108. package/types/client/d.ts.files/DataTiler.d.ts +0 -45
  109. package/types/client/d.ts.files/LandMask.d.ts +0 -17
  110. package/types/client/d.ts.files/PoisOverlay.d.ts +0 -27
  111. package/types/client/d.ts.files/TileLayerCanvas.d.ts +0 -78
  112. package/types/client/d.ts.files/TileLayerMultiPatch.d.ts +0 -13
@@ -2,10 +2,8 @@
2
2
  * Main Windy interfaces
3
3
  */
4
4
  import { Weekday } from '@windy/Calendar';
5
- import { ExtendedTileParams } from '@windy/DataTiler.d';
6
5
  import { FavId } from '@windy/favs';
7
6
  import { Layers } from '@windy/Layer';
8
- import { Particles } from '@windy/Particles';
9
7
  import { PluginOpenEventSource, PluginsOpenParams, PluginsQsParams } from '@windy/plugin-params.d';
10
8
  import { Plugins } from '@windy/plugins.d';
11
9
  import { DataQuality } from '@windy/Product';
@@ -23,6 +21,7 @@ import {
23
21
  GpsPreferences,
24
22
  Hours,
25
23
  ISODateString,
24
+ ISOCountryCode,
26
25
  LocationPreferences,
27
26
  MeteogramLayers,
28
27
  MeteogramLevels,
@@ -42,8 +41,9 @@ import {
42
41
  WidgetNotificationPreferences,
43
42
  WidgetType,
44
43
  YearMonthDay,
44
+ type SemVersion,
45
45
  } from '@windy/types.d';
46
- import type { PaddingOptions, RequireAtLeastOne } from '@windycom/maplibre-gl';
46
+ import type { LatLng, Marker, PaddingOptions, RequireAtLeastOne } from '@leafletGl';
47
47
 
48
48
  export interface ExportedObj {
49
49
  default?: unknown;
@@ -107,7 +107,7 @@ export interface GeolocationInfo extends LatLon {
107
107
  /**
108
108
  * Optional lowercase 2 letter ISO country code
109
109
  */
110
- cc?: string;
110
+ cc?: ISOCountryCode;
111
111
 
112
112
  /**
113
113
  * Optional name of the place
@@ -280,9 +280,9 @@ export interface LastSentDevice {
280
280
  deviceID: string;
281
281
  platform: string;
282
282
  target: string;
283
- version: string;
283
+ version: SemVersion;
284
284
  subscription: SubTier;
285
- cc: string;
285
+ cc: ISOCountryCode | 'xx';
286
286
  deactivated?: boolean;
287
287
  updated?: number;
288
288
  screen?: {
@@ -311,9 +311,9 @@ export interface TilePoint {
311
311
  }
312
312
 
313
313
  /**
314
- * Celestial object as received from backend
314
+ * Timezone information as received from backend
315
315
  */
316
- export interface Celestial {
316
+ export interface TZinfo {
317
317
  /**
318
318
  * Time zone abbreviation (for instance CEST)
319
319
  */
@@ -343,7 +343,12 @@ export interface Celestial {
343
343
  * Type of TZ type t..terrestrial, n..nautical
344
344
  */
345
345
  TZtype: 't' | 'n';
346
+ }
346
347
 
348
+ /**
349
+ * Celestial object as received from backend
350
+ */
351
+ export interface Celestial extends TZinfo {
347
352
  /**
348
353
  * Determines probability if the location is at sea or not as number from 1..0
349
354
  * Unfortunately the number is inverted, so 1 means land, and 0 means sea
@@ -377,6 +382,11 @@ export interface Celestial {
377
382
  sunsetTs: Timestamp;
378
383
  }
379
384
 
385
+ export type CelestialWithoutTimezone = Pick<
386
+ Celestial,
387
+ 'night' | 'sunsetTs' | 'sunriseTs' | 'duskTs' | 'isDay' | 'atSea'
388
+ >;
389
+
380
390
  /**
381
391
  * Summary day as received from backend
382
392
  */
@@ -992,25 +1002,6 @@ export interface MeteogramDataPayload {
992
1002
  data: MeteogramDataHash;
993
1003
  }
994
1004
 
995
- /**
996
- * Particle animation parameters
997
- */
998
- export interface ExtendedRenderParams extends ExtendedTileParams, FullRenderParameters {
999
- canvas: HTMLCanvasElement;
1000
-
1001
- /**
1002
- * Actual instance of particles
1003
- */
1004
- partObj: Particles;
1005
-
1006
- /**
1007
- * Pointer to dest table
1008
- */
1009
- vectors: Float32Array;
1010
-
1011
- speed2pixel: number;
1012
- }
1013
-
1014
1005
  /**
1015
1006
  * How good are observations by this AD or WX station?
1016
1007
  */
@@ -1022,7 +1013,7 @@ export interface ObservationInfo {
1022
1013
  }
1023
1014
 
1024
1015
  export interface ServiceGeoipResponse {
1025
- country: string;
1016
+ country: ISOCountryCode;
1026
1017
  region: `${number}`;
1027
1018
  eu: '0' | '1';
1028
1019
  timezone: string;
@@ -1031,11 +1022,6 @@ export interface ServiceGeoipResponse {
1031
1022
  metro: number;
1032
1023
  area: number;
1033
1024
  ip: string;
1034
-
1035
- /**
1036
- * @deprecated
1037
- */
1038
- hash: 'oiurouoweruouoiuou';
1039
1025
  }
1040
1026
 
1041
1027
  export interface BillingPluginMinimalProduct {
@@ -1216,19 +1202,38 @@ export interface WindyWatchPlugin {
1216
1202
  addWatchFace: () => Promise<unknown>;
1217
1203
  }
1218
1204
 
1219
- export interface WindyServicePlugin {
1205
+ export interface WindyServicesPlugin {
1220
1206
  openSettings: () => Promise<void | string>;
1221
1207
  getLocationPermissions: () => Promise<LocationPreferences>;
1222
1208
  getNotificationPermissions: () => Promise<NotificationPreferences>;
1223
1209
  openApplicationSettings: () => Promise<void | string>;
1224
1210
  isGpsEnabled: () => Promise<GpsPreferences>;
1225
- getBatteryUsagePermissions: () => Promise<BatteryPreferences>;
1211
+ /**
1212
+ * Android-only function that checks whether the app has battery usage permissions.
1213
+ *
1214
+ * - If the user has no widget installed, it always resolves to "authorized".
1215
+ * - Otherwise, it may resolve to:
1216
+ * - "authorized" → permission granted
1217
+ * - "denied" → permission restricted
1218
+ *
1219
+ * May be undefined on non-Android platforms.
1220
+ *
1221
+ * @returns {Promise<BatteryPreferences>} A promise resolving to "authorized" or "denied".
1222
+ * */
1223
+ getBatteryUsagePermissions?: () => Promise<BatteryPreferences>;
1226
1224
  openBatterySettings: () => Promise<void>;
1227
1225
  getGoogleServicesAvailability: () => Promise<GoogleServicesPreferences>;
1228
1226
  getWidgetNotificationPermissions: () => Promise<WidgetNotificationPreferences>;
1229
1227
  openWidgetNotificationSettings: () => Promise<void>;
1230
- getBackgroundLocationPermission: () => Promise<BatteryPreferences>;
1231
- getBatteryStatus: () => Promise<BatteryPreferences>;
1228
+ getBackgroundLocationPermission: () => Promise<GpsPreferences>;
1229
+ /**
1230
+ * Android-only function that checks whether the app has battery usage permissions.
1231
+ *
1232
+ * May be undefined on non-Android platforms.
1233
+ *
1234
+ * @returns {Promise<BatteryPreferences>} A promise resolving to "authorized" or "denied".
1235
+ */
1236
+ getBatteryStatus?: () => Promise<BatteryPreferences>;
1232
1237
  openBackgroundLocationSettings: () => Promise<void>;
1233
1238
  logError: (arg: { moduleName: string; msg: string; error?: string }) => Promise<void>;
1234
1239
  getId: () => Promise<{ identifier: string }>;
@@ -1329,6 +1334,74 @@ export interface WindyMigrationPlugin {
1329
1334
  getOldLocalStorageDataAndroid: () => Promise<{ result: string | null }>;
1330
1335
  }
1331
1336
 
1337
+ export interface ImageOptions {
1338
+ maxWidth?: number;
1339
+ maxHeight?: number;
1340
+ quality?: number; // 0..1
1341
+ format?: 'jpeg' | 'png'; // default 'jpeg'
1342
+ }
1343
+
1344
+ export interface VideoOptions {
1345
+ preset?: 'medium' | 'low' | 'h264_720p' | 'h264_1080p' | 'passthrough'; // Medium is default
1346
+ }
1347
+
1348
+ export interface CompressOptions {
1349
+ imageOptions?: ImageOptions;
1350
+ videoOptions?: VideoOptions;
1351
+ }
1352
+
1353
+ export interface OneCompressOptions extends CompressOptions {
1354
+ id: string;
1355
+ }
1356
+
1357
+ export interface PickedItem {
1358
+ id: string;
1359
+ kind: 'image' | 'video' | 'unknown';
1360
+ filename?: string;
1361
+ mimeType?: string;
1362
+ originalPath?: string; // POSIX path to original temp file
1363
+ width?: number;
1364
+ height?: number;
1365
+ duration?: number;
1366
+ size?: number; // bytes
1367
+ }
1368
+
1369
+ export interface CompressedItem extends PickedItem {
1370
+ compressedPath: string; // POSIX path to compressed file
1371
+ compressedSize: number; // bytes
1372
+ }
1373
+
1374
+ /**
1375
+ * Extended MediaItem type that supports both native compressed items
1376
+ * and web-based items with blob references
1377
+ */
1378
+ export interface MediaItem extends PickedItem {
1379
+ compressedPath?: string; // For native plugin
1380
+ compressedSize?: number;
1381
+ blob?: Blob; // For web fallback (full-size, no compression)
1382
+ blobUrl?: string; // Object URL for preview
1383
+ }
1384
+
1385
+ type PickOptions = {
1386
+ selectionLimit?: number;
1387
+ };
1388
+
1389
+ // iOS only
1390
+ export interface WindyMediaPlugin {
1391
+ pick(options?: PickOptions): Promise<{ items: PickedItem[] }>;
1392
+ getPicked(): Promise<{ items: PickedItem[] }>;
1393
+ removeFromPicked(id: string): Promise<{ success: boolean }>;
1394
+ pickAndCompress(options?: PickOptions): Promise<{ items: CompressedItem[] }>;
1395
+ compressOne(arg: OneCompressOptions): Promise<{ item: CompressedItem }>;
1396
+ // CompressAll - if compress options are not provided, default options will be used
1397
+ compressAll(arg: CompressOptions | undefined): Promise<{ items: CompressedItem[] }>;
1398
+ clearAll(): Promise<void>;
1399
+ addListener(
1400
+ eventName: 'compressionProgress',
1401
+ listener: (payload: { total: number; done: number; percent: number }) => void,
1402
+ ): { remove: () => void };
1403
+ }
1404
+
1332
1405
  export interface SocialLoginParams {
1333
1406
  purpose: string;
1334
1407
  deviceId: string;
@@ -1402,8 +1475,8 @@ export interface PluginOpeningOptions<P extends keyof Plugins> extends WindowOpe
1402
1475
  */
1403
1476
  export interface RplannerPoint {
1404
1477
  ident: number;
1405
- marker: L.Marker;
1406
- position: L.LatLng;
1478
+ marker: Marker;
1479
+ position: LatLng;
1407
1480
  }
1408
1481
 
1409
1482
  /**
@@ -1413,7 +1486,7 @@ export interface RplannerWaypoint {
1413
1486
  distance?: number;
1414
1487
  ident?: number;
1415
1488
  initialBearing?: number;
1416
- point: L.LatLng;
1489
+ point: LatLng;
1417
1490
  rads?: {
1418
1491
  cosInitialBearing: number;
1419
1492
  cosLat: number;
@@ -1524,7 +1597,7 @@ export interface ExternalPluginConfig {
1524
1597
  *
1525
1598
  * @example '1.0.0'
1526
1599
  */
1527
- version: string;
1600
+ version: SemVersion;
1528
1601
 
1529
1602
  /**
1530
1603
  * Official title of the plugin, that will be displayed as a browser title,
@@ -1644,6 +1717,11 @@ export interface CompiledExternalPluginConfig extends ExternalPluginConfig {
1644
1717
  * Already installed external plugin
1645
1718
  */
1646
1719
  export interface InstalledExternalPluginConfig extends CompiledExternalPluginConfig {
1720
+ /**
1721
+ * ID must be present to enable backend cloud sync
1722
+ */
1723
+ id: string;
1724
+
1647
1725
  /**
1648
1726
  * URL of the plugin is used as unique identifier
1649
1727
  */
@@ -1652,7 +1730,7 @@ export interface InstalledExternalPluginConfig extends CompiledExternalPluginCon
1652
1730
  /**
1653
1731
  * From which process was plugin installed
1654
1732
  */
1655
- installedBy: 'dev' | 'gallery' | 'url' | 'patch';
1733
+ installedBy: 'dev' | 'gallery' | 'url';
1656
1734
 
1657
1735
  /**
1658
1736
  * When was this plugin installed by specific user
@@ -1666,64 +1744,6 @@ interface PromoFilteringParams {
1666
1744
  isPremium: boolean;
1667
1745
  }
1668
1746
 
1669
- /**
1670
- * Main promo object, used in `client-patch`
1671
- */
1672
- interface PromoObj {
1673
- /**
1674
- * Main ID of the promo. This key is also used in `promo` object in localStorage
1675
- */
1676
- readonly id: string;
1677
-
1678
- /**
1679
- * ISO date, when the promo expires
1680
- */
1681
- readonly end: string;
1682
-
1683
- /**
1684
- * How many times display promo to the user (respective on one device)
1685
- */
1686
- counter: number;
1687
-
1688
- /**
1689
- * How often to display promo on particular device (in ms)
1690
- */
1691
- delay: number;
1692
-
1693
- /**
1694
- * Any others filters, deciding whether to display promo or not
1695
- */
1696
- filter: () => boolean;
1697
-
1698
- /**
1699
- * Should we display HP articles together with promo
1700
- * @deprecated
1701
- */
1702
- loadArticles?: boolean;
1703
-
1704
- /**
1705
- * Required method to be run, when promo is executed. In this stage we can also
1706
- * do some additional checks, if promo should be displayed or not, so we must
1707
- * call `promo.hitCounter()` method ourselves.
1708
- */
1709
- readonly run: () => void;
1710
-
1711
- /**
1712
- * Optional HTML code to be used internally in `run` method
1713
- */
1714
- html?: string;
1715
- }
1716
-
1717
- /**
1718
- * Client patch object
1719
- */
1720
- interface ClientPatch {
1721
- __version: string;
1722
- __css: string;
1723
- exclusivePromos: PromoObj[];
1724
- otherPromos: PromoObj[];
1725
- }
1726
-
1727
1747
  /**
1728
1748
  * Amount of active hurricanes as returnd from hurricane tracker backend
1729
1749
  */
@@ -1817,6 +1837,7 @@ interface FullRenderParameters extends WeatherParameters, RenderParams {
1817
1837
  */
1818
1838
  acRangeInHours?: number;
1819
1839
 
1840
+ // TODO: Why this does not use FileSuffix type?
1820
1841
  fileSuffix?: 'png' | 'jpg' | 'json';
1821
1842
  }
1822
1843