local-risk-alert-feed 0.2.4 → 0.4.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 (102) hide show
  1. package/dist/cjs/core/alert-feed.js +16 -3
  2. package/dist/cjs/core/alert-feed.js.map +1 -1
  3. package/dist/cjs/core/plugin-resolver.js +93 -0
  4. package/dist/cjs/core/plugin-resolver.js.map +1 -1
  5. package/dist/cjs/plugins/air-quality/airnow.plugin.js +7 -0
  6. package/dist/cjs/plugins/air-quality/airnow.plugin.js.map +1 -1
  7. package/dist/cjs/plugins/austin/austin-crime.plugin.js +377 -0
  8. package/dist/cjs/plugins/austin/austin-crime.plugin.js.map +1 -0
  9. package/dist/cjs/plugins/austin/austin-events.plugin.js +406 -0
  10. package/dist/cjs/plugins/austin/austin-events.plugin.js.map +1 -0
  11. package/dist/cjs/plugins/austin/austin-fire.plugin.js +275 -0
  12. package/dist/cjs/plugins/austin/austin-fire.plugin.js.map +1 -0
  13. package/dist/cjs/plugins/austin/austin-traffic.plugin.js +260 -0
  14. package/dist/cjs/plugins/austin/austin-traffic.plugin.js.map +1 -0
  15. package/dist/cjs/plugins/austin/index.js +12 -0
  16. package/dist/cjs/plugins/austin/index.js.map +1 -0
  17. package/dist/cjs/plugins/events/phoenix-convention-center.plugin.js +6 -0
  18. package/dist/cjs/plugins/events/phoenix-convention-center.plugin.js.map +1 -1
  19. package/dist/cjs/plugins/events/phoenix-events.plugin.js +6 -0
  20. package/dist/cjs/plugins/events/phoenix-events.plugin.js.map +1 -1
  21. package/dist/cjs/plugins/fire-emt/nifc-wildfire.plugin.js +6 -0
  22. package/dist/cjs/plugins/fire-emt/nifc-wildfire.plugin.js.map +1 -1
  23. package/dist/cjs/plugins/fire-emt/phoenix-fire.plugin.js +6 -0
  24. package/dist/cjs/plugins/fire-emt/phoenix-fire.plugin.js.map +1 -1
  25. package/dist/cjs/plugins/index.js +10 -1
  26. package/dist/cjs/plugins/index.js.map +1 -1
  27. package/dist/cjs/plugins/police/bend-police.plugin.js +309 -0
  28. package/dist/cjs/plugins/police/bend-police.plugin.js.map +1 -0
  29. package/dist/cjs/plugins/police/index.js +6 -0
  30. package/dist/cjs/plugins/police/index.js.map +1 -0
  31. package/dist/cjs/plugins/traffic/arizona-traffic.plugin.js +7 -0
  32. package/dist/cjs/plugins/traffic/arizona-traffic.plugin.js.map +1 -1
  33. package/dist/cjs/plugins/weather/nws-weather.plugin.js +7 -0
  34. package/dist/cjs/plugins/weather/nws-weather.plugin.js.map +1 -1
  35. package/dist/cjs/types/index.js.map +1 -1
  36. package/dist/esm/core/alert-feed.js +16 -3
  37. package/dist/esm/core/alert-feed.js.map +1 -1
  38. package/dist/esm/core/plugin-resolver.js +93 -0
  39. package/dist/esm/core/plugin-resolver.js.map +1 -1
  40. package/dist/esm/plugins/air-quality/airnow.plugin.js +7 -0
  41. package/dist/esm/plugins/air-quality/airnow.plugin.js.map +1 -1
  42. package/dist/esm/plugins/austin/austin-crime.plugin.js +373 -0
  43. package/dist/esm/plugins/austin/austin-crime.plugin.js.map +1 -0
  44. package/dist/esm/plugins/austin/austin-events.plugin.js +402 -0
  45. package/dist/esm/plugins/austin/austin-events.plugin.js.map +1 -0
  46. package/dist/esm/plugins/austin/austin-fire.plugin.js +271 -0
  47. package/dist/esm/plugins/austin/austin-fire.plugin.js.map +1 -0
  48. package/dist/esm/plugins/austin/austin-traffic.plugin.js +256 -0
  49. package/dist/esm/plugins/austin/austin-traffic.plugin.js.map +1 -0
  50. package/dist/esm/plugins/austin/index.js +5 -0
  51. package/dist/esm/plugins/austin/index.js.map +1 -0
  52. package/dist/esm/plugins/events/phoenix-convention-center.plugin.js +6 -0
  53. package/dist/esm/plugins/events/phoenix-convention-center.plugin.js.map +1 -1
  54. package/dist/esm/plugins/events/phoenix-events.plugin.js +6 -0
  55. package/dist/esm/plugins/events/phoenix-events.plugin.js.map +1 -1
  56. package/dist/esm/plugins/fire-emt/nifc-wildfire.plugin.js +6 -0
  57. package/dist/esm/plugins/fire-emt/nifc-wildfire.plugin.js.map +1 -1
  58. package/dist/esm/plugins/fire-emt/phoenix-fire.plugin.js +6 -0
  59. package/dist/esm/plugins/fire-emt/phoenix-fire.plugin.js.map +1 -1
  60. package/dist/esm/plugins/index.js +4 -0
  61. package/dist/esm/plugins/index.js.map +1 -1
  62. package/dist/esm/plugins/police/bend-police.plugin.js +305 -0
  63. package/dist/esm/plugins/police/bend-police.plugin.js.map +1 -0
  64. package/dist/esm/plugins/police/index.js +2 -0
  65. package/dist/esm/plugins/police/index.js.map +1 -0
  66. package/dist/esm/plugins/traffic/arizona-traffic.plugin.js +7 -0
  67. package/dist/esm/plugins/traffic/arizona-traffic.plugin.js.map +1 -1
  68. package/dist/esm/plugins/weather/nws-weather.plugin.js +7 -0
  69. package/dist/esm/plugins/weather/nws-weather.plugin.js.map +1 -1
  70. package/dist/esm/types/index.js.map +1 -1
  71. package/dist/types/core/alert-feed.d.ts.map +1 -1
  72. package/dist/types/core/plugin-resolver.d.ts +26 -1
  73. package/dist/types/core/plugin-resolver.d.ts.map +1 -1
  74. package/dist/types/plugins/air-quality/airnow.plugin.d.ts.map +1 -1
  75. package/dist/types/plugins/austin/austin-crime.plugin.d.ts +63 -0
  76. package/dist/types/plugins/austin/austin-crime.plugin.d.ts.map +1 -0
  77. package/dist/types/plugins/austin/austin-events.plugin.d.ts +79 -0
  78. package/dist/types/plugins/austin/austin-events.plugin.d.ts.map +1 -0
  79. package/dist/types/plugins/austin/austin-fire.plugin.d.ts +50 -0
  80. package/dist/types/plugins/austin/austin-fire.plugin.d.ts.map +1 -0
  81. package/dist/types/plugins/austin/austin-traffic.plugin.d.ts +49 -0
  82. package/dist/types/plugins/austin/austin-traffic.plugin.d.ts.map +1 -0
  83. package/dist/types/plugins/austin/index.d.ts +5 -0
  84. package/dist/types/plugins/austin/index.d.ts.map +1 -0
  85. package/dist/types/plugins/events/phoenix-convention-center.plugin.d.ts.map +1 -1
  86. package/dist/types/plugins/events/phoenix-events.plugin.d.ts.map +1 -1
  87. package/dist/types/plugins/fire-emt/nifc-wildfire.plugin.d.ts.map +1 -1
  88. package/dist/types/plugins/fire-emt/phoenix-fire.plugin.d.ts.map +1 -1
  89. package/dist/types/plugins/index.d.ts +4 -0
  90. package/dist/types/plugins/index.d.ts.map +1 -1
  91. package/dist/types/plugins/police/bend-police.plugin.d.ts +53 -0
  92. package/dist/types/plugins/police/bend-police.plugin.d.ts.map +1 -0
  93. package/dist/types/plugins/police/index.d.ts +2 -0
  94. package/dist/types/plugins/police/index.d.ts.map +1 -0
  95. package/dist/types/plugins/traffic/arizona-traffic.plugin.d.ts.map +1 -1
  96. package/dist/types/plugins/weather/nws-weather.plugin.d.ts.map +1 -1
  97. package/dist/types/types/index.d.ts +1 -1
  98. package/dist/types/types/index.d.ts.map +1 -1
  99. package/dist/types/types/plugin.d.ts +44 -0
  100. package/dist/types/types/plugin.d.ts.map +1 -1
  101. package/package.json +12 -3
  102. package/.env.example +0 -27
@@ -0,0 +1,406 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AustinEventsPlugin = void 0;
4
+ const base_plugin_1 = require("../base-plugin");
5
+ /**
6
+ * Austin, TX center coordinates.
7
+ */
8
+ const AUSTIN_CENTER = {
9
+ latitude: 30.2672,
10
+ longitude: -97.7431,
11
+ };
12
+ /**
13
+ * Coverage radius in meters (~40km covers Austin metro).
14
+ */
15
+ const COVERAGE_RADIUS_METERS = 40_000;
16
+ /**
17
+ * Known venue coordinates.
18
+ */
19
+ const VENUE_COORDINATES = {
20
+ 'Palmer Events Center': { latitude: 30.2598, longitude: -97.7526 },
21
+ 'Austin Convention Center': { latitude: 30.2636, longitude: -97.7397 },
22
+ 'Long Center': { latitude: 30.2590, longitude: -97.7525 },
23
+ };
24
+ /**
25
+ * Plugin that fetches events from Austin, Texas.
26
+ *
27
+ * Combines data from:
28
+ * - Austin Convention Center/Palmer Events Center calendar
29
+ * - Special Events Permits (includes road closures)
30
+ *
31
+ * @see https://data.austintexas.gov/City-Government/ACCD-Event-Listings/p9ma-z6y9
32
+ * @see https://data.austintexas.gov/Permitting/Special-Events-Permits-Current-Year/teth-r7k8
33
+ */
34
+ class AustinEventsPlugin extends base_plugin_1.BasePlugin {
35
+ metadata = {
36
+ id: 'austin-events',
37
+ name: 'Austin Events',
38
+ version: '1.0.0',
39
+ description: 'Events from Austin Convention Center, Palmer Events Center, and special events permits',
40
+ coverage: {
41
+ type: 'regional',
42
+ center: AUSTIN_CENTER,
43
+ radiusMeters: COVERAGE_RADIUS_METERS,
44
+ description: 'Austin, TX metropolitan area',
45
+ },
46
+ temporal: {
47
+ supportsPast: false,
48
+ supportsFuture: true,
49
+ futureLookaheadMinutes: 43200, // 30 days
50
+ freshnessDescription: 'Scheduled events up to 30 days ahead',
51
+ },
52
+ supportedTemporalTypes: ['scheduled'],
53
+ supportedCategories: ['event'],
54
+ refreshIntervalMs: 60 * 60 * 1000, // 1 hour
55
+ };
56
+ eventsConfig;
57
+ constructor(config) {
58
+ super(config);
59
+ this.eventsConfig = {
60
+ includeConventionEvents: true,
61
+ includeSpecialEvents: true,
62
+ roadClosuresOnly: false,
63
+ ...config,
64
+ };
65
+ }
66
+ async fetchAlerts(options) {
67
+ const { location, radiusMeters, timeRange } = options;
68
+ const cacheKey = this.generateCacheKey(options);
69
+ const warnings = [];
70
+ try {
71
+ const { data, fromCache } = await this.getCachedOrFetch(cacheKey, () => this.fetchEvents(location, radiusMeters, timeRange, warnings), this.config.cacheTtlMs);
72
+ return {
73
+ alerts: data,
74
+ fromCache,
75
+ cacheKey,
76
+ warnings: warnings.length > 0 ? warnings : undefined,
77
+ };
78
+ }
79
+ catch (error) {
80
+ console.error('Austin Events fetch error:', error);
81
+ throw error;
82
+ }
83
+ }
84
+ /**
85
+ * Fetch events from both sources.
86
+ */
87
+ async fetchEvents(location, radiusMeters, timeRange, warnings) {
88
+ const allAlerts = [];
89
+ // Fetch convention events
90
+ if (this.eventsConfig.includeConventionEvents) {
91
+ try {
92
+ const conventionAlerts = await this.fetchConventionEvents(location, radiusMeters, timeRange);
93
+ allAlerts.push(...conventionAlerts);
94
+ }
95
+ catch (error) {
96
+ warnings.push(`Failed to fetch convention events: ${error instanceof Error ? error.message : 'Unknown error'}`);
97
+ }
98
+ }
99
+ // Fetch special events permits
100
+ if (this.eventsConfig.includeSpecialEvents) {
101
+ try {
102
+ const specialAlerts = await this.fetchSpecialEvents(location, radiusMeters, timeRange);
103
+ allAlerts.push(...specialAlerts);
104
+ }
105
+ catch (error) {
106
+ warnings.push(`Failed to fetch special events: ${error instanceof Error ? error.message : 'Unknown error'}`);
107
+ }
108
+ }
109
+ // Deduplicate by title similarity
110
+ return this.deduplicateEvents(allAlerts);
111
+ }
112
+ /**
113
+ * Fetch convention center events.
114
+ */
115
+ async fetchConventionEvents(location, radiusMeters, timeRange) {
116
+ const baseUrl = 'https://data.austintexas.gov/resource/p9ma-z6y9.json';
117
+ const startDate = new Date(timeRange.start).toISOString().split('T')[0];
118
+ const endDate = new Date(timeRange.end).toISOString().split('T')[0];
119
+ const params = new URLSearchParams({
120
+ $limit: '500',
121
+ $order: 'arrive_date ASC',
122
+ $where: `arrive_date >= '${startDate}' AND arrive_date <= '${endDate}'`,
123
+ });
124
+ const url = `${baseUrl}?${params}`;
125
+ const events = await this.fetchJson(url);
126
+ if (!events || !Array.isArray(events)) {
127
+ return [];
128
+ }
129
+ // Filter by location (based on venue)
130
+ const filtered = events.filter((event) => {
131
+ const venueCoords = VENUE_COORDINATES[event.location];
132
+ if (!venueCoords) {
133
+ // Default to Austin Convention Center if venue unknown
134
+ return true;
135
+ }
136
+ const distance = this.calculateDistance(location.latitude, location.longitude, venueCoords.latitude, venueCoords.longitude);
137
+ return distance <= radiusMeters;
138
+ });
139
+ return filtered.map((event) => this.transformConventionEvent(event));
140
+ }
141
+ /**
142
+ * Fetch special events permits.
143
+ */
144
+ async fetchSpecialEvents(location, radiusMeters, timeRange) {
145
+ const baseUrl = 'https://data.austintexas.gov/resource/teth-r7k8.json';
146
+ const params = new URLSearchParams({
147
+ $limit: '500',
148
+ $order: 'start_date ASC',
149
+ });
150
+ // Filter by active/approved status
151
+ params.set('$where', "status='Active' OR status='Approved'");
152
+ const url = `${baseUrl}?${params}`;
153
+ const events = await this.fetchJson(url);
154
+ if (!events || !Array.isArray(events)) {
155
+ return [];
156
+ }
157
+ const startTime = new Date(timeRange.start).getTime();
158
+ const endTime = new Date(timeRange.end).getTime();
159
+ // Filter by location, time, and config
160
+ const filtered = events.filter((event) => {
161
+ // Filter by road closures only if configured
162
+ if (this.eventsConfig.roadClosuresOnly && !event.road_closure) {
163
+ return false;
164
+ }
165
+ // Filter by time range
166
+ const eventStart = this.parseEventDate(event.start_date);
167
+ const eventEnd = this.parseEventDate(event.end_date);
168
+ if (!eventStart)
169
+ return false;
170
+ // Event must overlap with time range
171
+ const eventStartTime = eventStart.getTime();
172
+ const eventEndTime = eventEnd?.getTime() ?? eventStartTime;
173
+ if (eventEndTime < startTime || eventStartTime > endTime) {
174
+ return false;
175
+ }
176
+ // Filter by location
177
+ if (event.gpslatitude && event.gpslongitude) {
178
+ const lat = parseFloat(event.gpslatitude);
179
+ const lng = parseFloat(event.gpslongitude);
180
+ if (!isNaN(lat) && !isNaN(lng)) {
181
+ const distance = this.calculateDistance(location.latitude, location.longitude, lat, lng);
182
+ if (distance > radiusMeters)
183
+ return false;
184
+ }
185
+ }
186
+ return true;
187
+ });
188
+ return filtered.map((event) => this.transformSpecialEvent(event));
189
+ }
190
+ /**
191
+ * Transform a convention event to our Alert format.
192
+ */
193
+ transformConventionEvent(event) {
194
+ const venueCoords = VENUE_COORDINATES[event.location] ?? AUSTIN_CENTER;
195
+ return this.createAlert({
196
+ id: `austin-conv-${this.slugify(event.event_name)}-${event.arrive_date}`,
197
+ externalId: `${event.event_name}-${event.arrive_date}`,
198
+ title: event.event_name,
199
+ description: this.buildConventionDescription(event),
200
+ riskLevel: 'low',
201
+ priority: this.riskLevelToPriority('low'),
202
+ category: 'event',
203
+ temporalType: 'scheduled',
204
+ location: {
205
+ point: venueCoords,
206
+ address: event.location,
207
+ city: 'Austin',
208
+ state: 'TX',
209
+ },
210
+ timestamps: {
211
+ issued: new Date().toISOString(),
212
+ eventStart: event.arrive_date,
213
+ eventEnd: event.depart_date,
214
+ },
215
+ metadata: {
216
+ venue: event.location,
217
+ website: event.website,
218
+ source: 'convention-center',
219
+ },
220
+ });
221
+ }
222
+ /**
223
+ * Transform a special event to our Alert format.
224
+ */
225
+ transformSpecialEvent(event) {
226
+ const hasRoadClosure = !!event.road_closure;
227
+ const riskLevel = this.mapSpecialEventToRisk(event);
228
+ const lat = parseFloat(event.gpslatitude ?? '');
229
+ const lng = parseFloat(event.gpslongitude ?? '');
230
+ const point = !isNaN(lat) && !isNaN(lng)
231
+ ? { latitude: lat, longitude: lng }
232
+ : AUSTIN_CENTER;
233
+ const eventStart = this.parseEventDate(event.start_date);
234
+ const eventEnd = this.parseEventDate(event.end_date);
235
+ return this.createAlert({
236
+ id: `austin-special-${event.folderrsn}`,
237
+ externalId: event.folderrsn,
238
+ title: event.foldername,
239
+ description: this.buildSpecialEventDescription(event),
240
+ riskLevel,
241
+ priority: this.riskLevelToPriority(riskLevel),
242
+ category: 'event',
243
+ temporalType: 'scheduled',
244
+ location: {
245
+ point,
246
+ address: event.road_closure,
247
+ city: 'Austin',
248
+ state: 'TX',
249
+ },
250
+ timestamps: {
251
+ issued: new Date().toISOString(),
252
+ eventStart: eventStart?.toISOString(),
253
+ eventEnd: eventEnd?.toISOString(),
254
+ },
255
+ metadata: {
256
+ permitId: event.folderrsn,
257
+ organization: event.event_applicant_organization,
258
+ tier: event.tier_type,
259
+ hasRoadClosure,
260
+ roadClosure: event.road_closure,
261
+ roadClosureType: event.type_of_road_closure,
262
+ amplifiedSound: event.amplified_sound === 'Yes',
263
+ alcoholServed: event.alcohol_served === 'Yes',
264
+ setupDate: event.event_setup,
265
+ teardownDate: event.event_teardown,
266
+ source: 'special-events-permit',
267
+ },
268
+ });
269
+ }
270
+ /**
271
+ * Map special event to risk level based on impact.
272
+ */
273
+ mapSpecialEventToRisk(event) {
274
+ // Full road closure = higher risk
275
+ if (event.type_of_road_closure?.includes('Full Road')) {
276
+ return 'moderate';
277
+ }
278
+ // Any road closure
279
+ if (event.road_closure) {
280
+ return 'low';
281
+ }
282
+ // Large tier events
283
+ if (event.tier_type === '3' || event.tier_type === '4') {
284
+ return 'low';
285
+ }
286
+ return 'low';
287
+ }
288
+ /**
289
+ * Parse event date string.
290
+ * Handles formats like "September 27, 2025 10:00"
291
+ */
292
+ parseEventDate(dateStr) {
293
+ if (!dateStr)
294
+ return null;
295
+ try {
296
+ // Try standard ISO format first
297
+ const isoDate = new Date(dateStr);
298
+ if (!isNaN(isoDate.getTime())) {
299
+ return isoDate;
300
+ }
301
+ // Try "Month Day, Year HH:MM" format
302
+ const match = dateStr.match(/(\w+)\s+(\d+),\s+(\d+)\s+(\d+):(\d+)/);
303
+ if (match) {
304
+ const [, month, day, year, hour, minute] = match;
305
+ const monthIndex = new Date(`${month} 1, 2000`).getMonth();
306
+ return new Date(parseInt(year), monthIndex, parseInt(day), parseInt(hour), parseInt(minute));
307
+ }
308
+ return null;
309
+ }
310
+ catch {
311
+ return null;
312
+ }
313
+ }
314
+ /**
315
+ * Build description for convention event.
316
+ */
317
+ buildConventionDescription(event) {
318
+ const parts = [];
319
+ parts.push(`Event: ${event.event_name}`);
320
+ parts.push(`Venue: ${event.location}`);
321
+ parts.push(`Dates: ${event.arrive_date} to ${event.depart_date}`);
322
+ if (event.website) {
323
+ parts.push(`Website: ${event.website}`);
324
+ }
325
+ return parts.join('\n');
326
+ }
327
+ /**
328
+ * Build description for special event.
329
+ */
330
+ buildSpecialEventDescription(event) {
331
+ const parts = [];
332
+ parts.push(`Event: ${event.foldername}`);
333
+ if (event.event_applicant_organization) {
334
+ parts.push(`Organization: ${event.event_applicant_organization}`);
335
+ }
336
+ parts.push(`Dates: ${event.start_date} to ${event.end_date}`);
337
+ if (event.road_closure) {
338
+ parts.push(`Road Closure: ${event.road_closure}`);
339
+ if (event.type_of_road_closure) {
340
+ parts.push(`Closure Type: ${event.type_of_road_closure}`);
341
+ }
342
+ }
343
+ if (event.amplified_sound === 'Yes') {
344
+ parts.push('Amplified Sound: Yes');
345
+ }
346
+ if (event.event_setup) {
347
+ parts.push(`Setup: ${event.event_setup}`);
348
+ }
349
+ if (event.event_teardown) {
350
+ parts.push(`Teardown: ${event.event_teardown}`);
351
+ }
352
+ return parts.join('\n');
353
+ }
354
+ /**
355
+ * Create URL-safe slug from text.
356
+ */
357
+ slugify(text) {
358
+ return text
359
+ .toLowerCase()
360
+ .replace(/[^a-z0-9]+/g, '-')
361
+ .replace(/^-|-$/g, '')
362
+ .substring(0, 50);
363
+ }
364
+ /**
365
+ * Deduplicate events by similar titles.
366
+ */
367
+ deduplicateEvents(alerts) {
368
+ const seen = new Map();
369
+ for (const alert of alerts) {
370
+ // Create a key based on normalized title and date
371
+ const dateKey = alert.timestamps.eventStart?.split('T')[0] ?? '';
372
+ const titleKey = alert.title.toLowerCase().replace(/[^a-z0-9]/g, '');
373
+ const key = `${titleKey}-${dateKey}`;
374
+ // Keep the one with more metadata (likely the permit with road closure info)
375
+ const existing = seen.get(key);
376
+ if (!existing) {
377
+ seen.set(key, alert);
378
+ }
379
+ else {
380
+ const existingMeta = Object.keys(existing.metadata ?? {}).length;
381
+ const currentMeta = Object.keys(alert.metadata ?? {}).length;
382
+ if (currentMeta > existingMeta) {
383
+ seen.set(key, alert);
384
+ }
385
+ }
386
+ }
387
+ return Array.from(seen.values());
388
+ }
389
+ /**
390
+ * Calculate distance between two points in meters.
391
+ */
392
+ calculateDistance(lat1, lon1, lat2, lon2) {
393
+ const R = 6371e3;
394
+ const φ1 = (lat1 * Math.PI) / 180;
395
+ const φ2 = (lat2 * Math.PI) / 180;
396
+ const Δφ = ((lat2 - lat1) * Math.PI) / 180;
397
+ const Δλ = ((lon2 - lon1) * Math.PI) / 180;
398
+ const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
399
+ Math.cos(φ1) * Math.cos(φ2) *
400
+ Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
401
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
402
+ return R * c;
403
+ }
404
+ }
405
+ exports.AustinEventsPlugin = AustinEventsPlugin;
406
+ //# sourceMappingURL=austin-events.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"austin-events.plugin.js","sourceRoot":"","sources":["../../../../src/plugins/austin/austin-events.plugin.ts"],"names":[],"mappings":"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"}