local-risk-alert-feed 0.1.0 → 0.2.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 (85) hide show
  1. package/dist/cjs/core/alert-aggregator.js +24 -15
  2. package/dist/cjs/core/alert-aggregator.js.map +1 -1
  3. package/dist/cjs/index.js +3 -6
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/plugins/events/index.js +3 -1
  6. package/dist/cjs/plugins/events/index.js.map +1 -1
  7. package/dist/cjs/plugins/events/phoenix-convention-center.plugin.js +235 -0
  8. package/dist/cjs/plugins/events/phoenix-convention-center.plugin.js.map +1 -0
  9. package/dist/cjs/plugins/events/phoenix-events.plugin.js +24 -195
  10. package/dist/cjs/plugins/events/phoenix-events.plugin.js.map +1 -1
  11. package/dist/cjs/plugins/fire-emt/index.js +3 -1
  12. package/dist/cjs/plugins/fire-emt/index.js.map +1 -1
  13. package/dist/cjs/plugins/fire-emt/nifc-wildfire.plugin.js +221 -0
  14. package/dist/cjs/plugins/fire-emt/nifc-wildfire.plugin.js.map +1 -0
  15. package/dist/cjs/plugins/fire-emt/phoenix-fire.plugin.js +153 -154
  16. package/dist/cjs/plugins/fire-emt/phoenix-fire.plugin.js.map +1 -1
  17. package/dist/cjs/plugins/index.js +2 -7
  18. package/dist/cjs/plugins/index.js.map +1 -1
  19. package/dist/cjs/plugins/traffic/arizona-traffic.plugin.js +70 -77
  20. package/dist/cjs/plugins/traffic/arizona-traffic.plugin.js.map +1 -1
  21. package/dist/esm/core/alert-aggregator.js +24 -15
  22. package/dist/esm/core/alert-aggregator.js.map +1 -1
  23. package/dist/esm/index.js +1 -3
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/plugins/events/index.js +1 -0
  26. package/dist/esm/plugins/events/index.js.map +1 -1
  27. package/dist/esm/plugins/events/phoenix-convention-center.plugin.js +231 -0
  28. package/dist/esm/plugins/events/phoenix-convention-center.plugin.js.map +1 -0
  29. package/dist/esm/plugins/events/phoenix-events.plugin.js +24 -195
  30. package/dist/esm/plugins/events/phoenix-events.plugin.js.map +1 -1
  31. package/dist/esm/plugins/fire-emt/index.js +1 -0
  32. package/dist/esm/plugins/fire-emt/index.js.map +1 -1
  33. package/dist/esm/plugins/fire-emt/nifc-wildfire.plugin.js +217 -0
  34. package/dist/esm/plugins/fire-emt/nifc-wildfire.plugin.js.map +1 -0
  35. package/dist/esm/plugins/fire-emt/phoenix-fire.plugin.js +153 -154
  36. package/dist/esm/plugins/fire-emt/phoenix-fire.plugin.js.map +1 -1
  37. package/dist/esm/plugins/index.js +1 -5
  38. package/dist/esm/plugins/index.js.map +1 -1
  39. package/dist/esm/plugins/traffic/arizona-traffic.plugin.js +70 -77
  40. package/dist/esm/plugins/traffic/arizona-traffic.plugin.js.map +1 -1
  41. package/dist/types/core/alert-aggregator.d.ts +1 -1
  42. package/dist/types/core/alert-aggregator.d.ts.map +1 -1
  43. package/dist/types/index.d.ts +2 -6
  44. package/dist/types/index.d.ts.map +1 -1
  45. package/dist/types/plugins/events/index.d.ts +2 -0
  46. package/dist/types/plugins/events/index.d.ts.map +1 -1
  47. package/dist/types/plugins/events/phoenix-convention-center.plugin.d.ts +55 -0
  48. package/dist/types/plugins/events/phoenix-convention-center.plugin.d.ts.map +1 -0
  49. package/dist/types/plugins/events/phoenix-events.plugin.d.ts +5 -37
  50. package/dist/types/plugins/events/phoenix-events.plugin.d.ts.map +1 -1
  51. package/dist/types/plugins/fire-emt/index.d.ts +2 -0
  52. package/dist/types/plugins/fire-emt/index.d.ts.map +1 -1
  53. package/dist/types/plugins/fire-emt/nifc-wildfire.plugin.d.ts +43 -0
  54. package/dist/types/plugins/fire-emt/nifc-wildfire.plugin.d.ts.map +1 -0
  55. package/dist/types/plugins/fire-emt/phoenix-fire.plugin.d.ts +21 -13
  56. package/dist/types/plugins/fire-emt/phoenix-fire.plugin.d.ts.map +1 -1
  57. package/dist/types/plugins/index.d.ts +2 -6
  58. package/dist/types/plugins/index.d.ts.map +1 -1
  59. package/dist/types/plugins/traffic/arizona-traffic.plugin.d.ts +5 -14
  60. package/dist/types/plugins/traffic/arizona-traffic.plugin.d.ts.map +1 -1
  61. package/package.json +1 -11
  62. package/dist/cjs/plugins/police-blotter/index.js +0 -6
  63. package/dist/cjs/plugins/police-blotter/index.js.map +0 -1
  64. package/dist/cjs/plugins/police-blotter/phoenix-police.plugin.js +0 -198
  65. package/dist/cjs/plugins/police-blotter/phoenix-police.plugin.js.map +0 -1
  66. package/dist/cjs/plugins/pulsepoint/index.js +0 -6
  67. package/dist/cjs/plugins/pulsepoint/index.js.map +0 -1
  68. package/dist/cjs/plugins/pulsepoint/pulsepoint.plugin.js +0 -275
  69. package/dist/cjs/plugins/pulsepoint/pulsepoint.plugin.js.map +0 -1
  70. package/dist/esm/plugins/police-blotter/index.js +0 -2
  71. package/dist/esm/plugins/police-blotter/index.js.map +0 -1
  72. package/dist/esm/plugins/police-blotter/phoenix-police.plugin.js +0 -194
  73. package/dist/esm/plugins/police-blotter/phoenix-police.plugin.js.map +0 -1
  74. package/dist/esm/plugins/pulsepoint/index.js +0 -2
  75. package/dist/esm/plugins/pulsepoint/index.js.map +0 -1
  76. package/dist/esm/plugins/pulsepoint/pulsepoint.plugin.js +0 -271
  77. package/dist/esm/plugins/pulsepoint/pulsepoint.plugin.js.map +0 -1
  78. package/dist/types/plugins/police-blotter/index.d.ts +0 -3
  79. package/dist/types/plugins/police-blotter/index.d.ts.map +0 -1
  80. package/dist/types/plugins/police-blotter/phoenix-police.plugin.d.ts +0 -49
  81. package/dist/types/plugins/police-blotter/phoenix-police.plugin.d.ts.map +0 -1
  82. package/dist/types/plugins/pulsepoint/index.d.ts +0 -3
  83. package/dist/types/plugins/pulsepoint/index.d.ts.map +0 -1
  84. package/dist/types/plugins/pulsepoint/pulsepoint.plugin.d.ts +0 -61
  85. package/dist/types/plugins/pulsepoint/pulsepoint.plugin.d.ts.map +0 -1
@@ -44,11 +44,13 @@ class AlertAggregator {
44
44
  /**
45
45
  * Remove duplicate alerts based on ID and source.
46
46
  *
47
- * If two alerts have the same external ID from the same source,
47
+ * If two alerts have the same ID or the same external ID from the same source,
48
48
  * keep the one with the most recent issued timestamp.
49
49
  */
50
50
  deduplicate(alerts) {
51
- const seen = new Map();
51
+ // Use two maps: one for lookup and one for tracking unique alerts
52
+ const seenByPrimaryKey = new Map();
53
+ const seenBySecondaryKey = new Map(); // secondary key -> primary key
52
54
  for (const alert of alerts) {
53
55
  // Primary dedup key: alert ID
54
56
  const primaryKey = alert.id;
@@ -56,29 +58,36 @@ class AlertAggregator {
56
58
  const secondaryKey = alert.source.externalId
57
59
  ? `${alert.source.pluginId}:${alert.source.externalId}`
58
60
  : null;
61
+ // Check if we've seen this secondary key before
62
+ if (secondaryKey) {
63
+ const existingPrimaryKey = seenBySecondaryKey.get(secondaryKey);
64
+ if (existingPrimaryKey) {
65
+ const existing = seenByPrimaryKey.get(existingPrimaryKey);
66
+ if (existing && new Date(alert.timestamps.issued) > new Date(existing.timestamps.issued)) {
67
+ // Replace with newer alert
68
+ seenByPrimaryKey.delete(existingPrimaryKey);
69
+ seenByPrimaryKey.set(primaryKey, alert);
70
+ seenBySecondaryKey.set(secondaryKey, primaryKey);
71
+ }
72
+ continue;
73
+ }
74
+ }
59
75
  // Check primary key
60
- const existingPrimary = seen.get(primaryKey);
76
+ const existingPrimary = seenByPrimaryKey.get(primaryKey);
61
77
  if (existingPrimary) {
62
78
  // Keep the more recent one
63
79
  if (new Date(alert.timestamps.issued) > new Date(existingPrimary.timestamps.issued)) {
64
- seen.set(primaryKey, alert);
80
+ seenByPrimaryKey.set(primaryKey, alert);
65
81
  }
66
82
  continue;
67
83
  }
68
- // Check secondary key
84
+ // New alert - store it
85
+ seenByPrimaryKey.set(primaryKey, alert);
69
86
  if (secondaryKey) {
70
- const existingSecondary = seen.get(secondaryKey);
71
- if (existingSecondary) {
72
- if (new Date(alert.timestamps.issued) > new Date(existingSecondary.timestamps.issued)) {
73
- seen.set(secondaryKey, alert);
74
- }
75
- continue;
76
- }
77
- seen.set(secondaryKey, alert);
87
+ seenBySecondaryKey.set(secondaryKey, primaryKey);
78
88
  }
79
- seen.set(primaryKey, alert);
80
89
  }
81
- return Array.from(seen.values());
90
+ return Array.from(seenByPrimaryKey.values());
82
91
  }
83
92
  /**
84
93
  * Filter alerts by minimum risk level.
@@ -1 +1 @@
1
- {"version":3,"file":"alert-aggregator.js","sourceRoot":"","sources":["../../../src/core/alert-aggregator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alert-aggregator.js","sourceRoot":"","sources":["../../../src/core/alert-aggregator.ts"],"names":[],"mappings":"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"}
package/dist/cjs/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PhoenixFirePlugin = exports.PhoenixPolicePlugin = exports.NWSWeatherPlugin = exports.BasePlugin = exports.TimeoutError = exports.sleep = exports.withTimeout = exports.withRetry = exports.generateCacheKey = exports.DynamoDBCacheProvider = exports.VercelKVCacheProvider = exports.InMemoryCacheProvider = exports.getBoundingBoxForRadius = exports.doCirclesOverlap = exports.isPointInBoundingBox = exports.isPointInCircle = exports.isPointInRadius = exports.destinationPoint = exports.calculateBearing = exports.calculateDistance = exports.haversineDistance = exports.FetchError = exports.ValidationError = exports.PluginNotFoundError = exports.DuplicatePluginError = exports.PluginTimeoutError = exports.PluginFetchError = exports.PluginInitializationError = exports.PluginError = exports.transformRequestToQuery = exports.TimeRangeSchema = exports.GeoPointSchema = exports.AlertQueryRequestSchema = exports.AlertQuerySchema = exports.AlertSchema = exports.DEFAULT_CONFIG = exports.MAX_QUERY_LIMIT = exports.DEFAULT_QUERY_LIMIT = exports.DEFAULT_QUERY_RADIUS_METERS = exports.TIME_RANGE_PRESETS = exports.ALERT_TEMPORAL_TYPES = exports.ALERT_CATEGORIES = exports.RISK_LEVELS = exports.RISK_LEVEL_VALUES = exports.normalizeTimeRange = exports.resolveTimeRange = exports.AlertAggregator = exports.PluginResolver = exports.PluginRegistry = exports.AlertFeed = void 0;
4
- exports.toCSV = exports.parseCSV = exports.AirNowPlugin = exports.ArizonaTrafficPlugin = exports.PhoenixEventsPlugin = exports.PulsepointPlugin = void 0;
3
+ exports.NIFCWildfirePlugin = exports.PhoenixFirePlugin = exports.NWSWeatherPlugin = exports.BasePlugin = exports.TimeoutError = exports.sleep = exports.withTimeout = exports.withRetry = exports.generateCacheKey = exports.DynamoDBCacheProvider = exports.VercelKVCacheProvider = exports.InMemoryCacheProvider = exports.getBoundingBoxForRadius = exports.doCirclesOverlap = exports.isPointInBoundingBox = exports.isPointInCircle = exports.isPointInRadius = exports.destinationPoint = exports.calculateBearing = exports.calculateDistance = exports.haversineDistance = exports.FetchError = exports.ValidationError = exports.PluginNotFoundError = exports.DuplicatePluginError = exports.PluginTimeoutError = exports.PluginFetchError = exports.PluginInitializationError = exports.PluginError = exports.transformRequestToQuery = exports.TimeRangeSchema = exports.GeoPointSchema = exports.AlertQueryRequestSchema = exports.AlertQuerySchema = exports.AlertSchema = exports.DEFAULT_CONFIG = exports.MAX_QUERY_LIMIT = exports.DEFAULT_QUERY_LIMIT = exports.DEFAULT_QUERY_RADIUS_METERS = exports.TIME_RANGE_PRESETS = exports.ALERT_TEMPORAL_TYPES = exports.ALERT_CATEGORIES = exports.RISK_LEVELS = exports.RISK_LEVEL_VALUES = exports.normalizeTimeRange = exports.resolveTimeRange = exports.AlertAggregator = exports.PluginResolver = exports.PluginRegistry = exports.AlertFeed = void 0;
4
+ exports.toCSV = exports.parseCSV = exports.AirNowPlugin = exports.ArizonaTrafficPlugin = exports.PhoenixEventsPlugin = void 0;
5
5
  // Main AlertFeed class
6
6
  var core_1 = require("./core");
7
7
  Object.defineProperty(exports, "AlertFeed", { enumerable: true, get: function () { return core_1.AlertFeed; } });
@@ -71,12 +71,9 @@ Object.defineProperty(exports, "BasePlugin", { enumerable: true, get: function (
71
71
  // Built-in plugins
72
72
  var weather_1 = require("./plugins/weather");
73
73
  Object.defineProperty(exports, "NWSWeatherPlugin", { enumerable: true, get: function () { return weather_1.NWSWeatherPlugin; } });
74
- var police_blotter_1 = require("./plugins/police-blotter");
75
- Object.defineProperty(exports, "PhoenixPolicePlugin", { enumerable: true, get: function () { return police_blotter_1.PhoenixPolicePlugin; } });
76
74
  var fire_emt_1 = require("./plugins/fire-emt");
77
75
  Object.defineProperty(exports, "PhoenixFirePlugin", { enumerable: true, get: function () { return fire_emt_1.PhoenixFirePlugin; } });
78
- var pulsepoint_1 = require("./plugins/pulsepoint");
79
- Object.defineProperty(exports, "PulsepointPlugin", { enumerable: true, get: function () { return pulsepoint_1.PulsepointPlugin; } });
76
+ Object.defineProperty(exports, "NIFCWildfirePlugin", { enumerable: true, get: function () { return fire_emt_1.NIFCWildfirePlugin; } });
80
77
  var events_1 = require("./plugins/events");
81
78
  Object.defineProperty(exports, "PhoenixEventsPlugin", { enumerable: true, get: function () { return events_1.PhoenixEventsPlugin; } });
82
79
  var traffic_1 = require("./plugins/traffic");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,uBAAuB;AACvB,+BAAmC;AAA1B,iGAAA,SAAS,OAAA;AAElB,kBAAkB;AAClB,+BAAyE;AAAhE,sGAAA,cAAc,OAAA;AAAE,sGAAA,cAAc,OAAA;AAAE,uGAAA,eAAe,OAAA;AACxD,+BAA8D;AAArD,wGAAA,gBAAgB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAwC7C,iBAAiB;AACjB,iCAUiB;AATf,0GAAA,iBAAiB,OAAA;AACjB,oGAAA,WAAW,OAAA;AACX,yGAAA,gBAAgB,OAAA;AAChB,6GAAA,oBAAoB,OAAA;AACpB,2GAAA,kBAAkB,OAAA;AAClB,oHAAA,2BAA2B,OAAA;AAC3B,4GAAA,mBAAmB,OAAA;AACnB,wGAAA,eAAe,OAAA;AACf,uGAAA,cAAc,OAAA;AAGhB,UAAU;AACV,qCAOmB;AANjB,sGAAA,WAAW,OAAA;AACX,2GAAA,gBAAgB,OAAA;AAChB,kHAAA,uBAAuB,OAAA;AACvB,yGAAA,cAAc,OAAA;AACd,0GAAA,eAAe,OAAA;AACf,kHAAA,uBAAuB,OAAA;AAGzB,SAAS;AACT,mCASkB;AARhB,qGAAA,WAAW,OAAA;AACX,mHAAA,yBAAyB,OAAA;AACzB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,8GAAA,oBAAoB,OAAA;AACpB,6GAAA,mBAAmB,OAAA;AACnB,yGAAA,eAAe,OAAA;AACf,oGAAA,UAAU,OAAA;AAIZ,gBAAgB;AAChB,6BAUe;AATb,wGAAA,iBAAiB,OAAA;AACjB,wGAAA,iBAAiB,OAAA;AACjB,uGAAA,gBAAgB,OAAA;AAChB,uGAAA,gBAAgB,OAAA;AAChB,sGAAA,eAAe,OAAA;AACf,sGAAA,eAAe,OAAA;AACf,2GAAA,oBAAoB,OAAA;AACpB,uGAAA,gBAAgB,OAAA;AAChB,8GAAA,uBAAuB,OAAA;AAGzB,kBAAkB;AAClB,iCAKiB;AAJf,8GAAA,qBAAqB,OAAA;AACrB,8GAAA,qBAAqB,OAAA;AACrB,8GAAA,qBAAqB,OAAA;AACrB,yGAAA,gBAAgB,OAAA;AAGlB,oBAAoB;AACpB,iCAAsE;AAA7D,kGAAA,SAAS,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,qGAAA,YAAY,OAAA;AAGpD,0CAA0C;AAC1C,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAGnB,mBAAmB;AACnB,6CAAqD;AAA5C,2GAAA,gBAAgB,OAAA;AAGzB,2DAA+D;AAAtD,qHAAA,mBAAmB,OAAA;AAG5B,+CAAuD;AAA9C,6GAAA,iBAAiB,OAAA;AAG1B,mDAAwD;AAA/C,8GAAA,gBAAgB,OAAA;AAGzB,2CAAuD;AAA9C,6GAAA,mBAAmB,OAAA;AAG5B,6CAAyD;AAAhD,+GAAA,oBAAoB,OAAA;AAG7B,qDAAqD;AAA5C,2GAAA,YAAY,OAAA;AAGrB,2DAA2D;AAC3D,iCAA0C;AAAjC,iGAAA,QAAQ,OAAA;AAAE,8FAAA,KAAK,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,uBAAuB;AACvB,+BAAmC;AAA1B,iGAAA,SAAS,OAAA;AAElB,kBAAkB;AAClB,+BAAyE;AAAhE,sGAAA,cAAc,OAAA;AAAE,sGAAA,cAAc,OAAA;AAAE,uGAAA,eAAe,OAAA;AACxD,+BAA8D;AAArD,wGAAA,gBAAgB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAwC7C,iBAAiB;AACjB,iCAUiB;AATf,0GAAA,iBAAiB,OAAA;AACjB,oGAAA,WAAW,OAAA;AACX,yGAAA,gBAAgB,OAAA;AAChB,6GAAA,oBAAoB,OAAA;AACpB,2GAAA,kBAAkB,OAAA;AAClB,oHAAA,2BAA2B,OAAA;AAC3B,4GAAA,mBAAmB,OAAA;AACnB,wGAAA,eAAe,OAAA;AACf,uGAAA,cAAc,OAAA;AAGhB,UAAU;AACV,qCAOmB;AANjB,sGAAA,WAAW,OAAA;AACX,2GAAA,gBAAgB,OAAA;AAChB,kHAAA,uBAAuB,OAAA;AACvB,yGAAA,cAAc,OAAA;AACd,0GAAA,eAAe,OAAA;AACf,kHAAA,uBAAuB,OAAA;AAGzB,SAAS;AACT,mCASkB;AARhB,qGAAA,WAAW,OAAA;AACX,mHAAA,yBAAyB,OAAA;AACzB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,8GAAA,oBAAoB,OAAA;AACpB,6GAAA,mBAAmB,OAAA;AACnB,yGAAA,eAAe,OAAA;AACf,oGAAA,UAAU,OAAA;AAIZ,gBAAgB;AAChB,6BAUe;AATb,wGAAA,iBAAiB,OAAA;AACjB,wGAAA,iBAAiB,OAAA;AACjB,uGAAA,gBAAgB,OAAA;AAChB,uGAAA,gBAAgB,OAAA;AAChB,sGAAA,eAAe,OAAA;AACf,sGAAA,eAAe,OAAA;AACf,2GAAA,oBAAoB,OAAA;AACpB,uGAAA,gBAAgB,OAAA;AAChB,8GAAA,uBAAuB,OAAA;AAGzB,kBAAkB;AAClB,iCAKiB;AAJf,8GAAA,qBAAqB,OAAA;AACrB,8GAAA,qBAAqB,OAAA;AACrB,8GAAA,qBAAqB,OAAA;AACrB,yGAAA,gBAAgB,OAAA;AAGlB,oBAAoB;AACpB,iCAAsE;AAA7D,kGAAA,SAAS,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,qGAAA,YAAY,OAAA;AAGpD,0CAA0C;AAC1C,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAGnB,mBAAmB;AACnB,6CAAqD;AAA5C,2GAAA,gBAAgB,OAAA;AAGzB,+CAA2E;AAAlE,6GAAA,iBAAiB,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AAG9C,2CAAuD;AAA9C,6GAAA,mBAAmB,OAAA;AAG5B,6CAAyD;AAAhD,+GAAA,oBAAoB,OAAA;AAG7B,qDAAqD;AAA5C,2GAAA,YAAY,OAAA;AAGrB,2DAA2D;AAC3D,iCAA0C;AAAjC,iGAAA,QAAQ,OAAA;AAAE,8FAAA,KAAK,OAAA"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PhoenixEventsPlugin = void 0;
3
+ exports.PhoenixConventionCenterPlugin = exports.PhoenixEventsPlugin = void 0;
4
4
  var phoenix_events_plugin_1 = require("./phoenix-events.plugin");
5
5
  Object.defineProperty(exports, "PhoenixEventsPlugin", { enumerable: true, get: function () { return phoenix_events_plugin_1.PhoenixEventsPlugin; } });
6
+ var phoenix_convention_center_plugin_1 = require("./phoenix-convention-center.plugin");
7
+ Object.defineProperty(exports, "PhoenixConventionCenterPlugin", { enumerable: true, get: function () { return phoenix_convention_center_plugin_1.PhoenixConventionCenterPlugin; } });
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/events/index.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/events/index.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAG5B,uFAAmF;AAA1E,iJAAA,6BAA6B,OAAA"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PhoenixConventionCenterPlugin = void 0;
4
+ const base_plugin_1 = require("../base-plugin");
5
+ /**
6
+ * Phoenix Convention Center coordinates.
7
+ */
8
+ const CONVENTION_CENTER_LOCATION = {
9
+ latitude: 33.4419,
10
+ longitude: -112.0711,
11
+ };
12
+ /**
13
+ * Venue locations for different event types.
14
+ */
15
+ const VENUE_LOCATIONS = {
16
+ B: { name: 'Phoenix Convention Center', latitude: 33.4419, longitude: -112.0711 },
17
+ O: { name: 'Orpheum Theatre', latitude: 33.4461, longitude: -112.0710 },
18
+ S: { name: 'Symphony Hall', latitude: 33.4459, longitude: -112.0712 },
19
+ M: { name: 'Phoenix Convention Center', latitude: 33.4419, longitude: -112.0711 },
20
+ };
21
+ /**
22
+ * Coverage radius in meters (downtown Phoenix area).
23
+ */
24
+ const COVERAGE_RADIUS_METERS = 5_000;
25
+ /**
26
+ * Keywords that indicate potentially high-impact events.
27
+ */
28
+ const HIGH_IMPACT_KEYWORDS = [
29
+ 'final four',
30
+ 'super bowl',
31
+ 'championship',
32
+ 'convention',
33
+ 'expo',
34
+ 'conference',
35
+ 'festival',
36
+ 'marathon',
37
+ 'parade',
38
+ ];
39
+ /**
40
+ * Plugin that fetches events from Phoenix Convention Center, Orpheum Theatre, and Symphony Hall.
41
+ *
42
+ * Uses the Ungerboeck event management system API.
43
+ *
44
+ * @see https://www.phoenixconventioncenter.com/events
45
+ */
46
+ class PhoenixConventionCenterPlugin extends base_plugin_1.BasePlugin {
47
+ metadata = {
48
+ id: 'phoenix-convention-center',
49
+ name: 'Phoenix Convention Center',
50
+ version: '1.0.0',
51
+ description: 'Events from Phoenix Convention Center, Orpheum Theatre, and Symphony Hall',
52
+ coverage: {
53
+ type: 'regional',
54
+ center: CONVENTION_CENTER_LOCATION,
55
+ radiusMeters: COVERAGE_RADIUS_METERS,
56
+ description: 'Downtown Phoenix venues (Convention Center, Orpheum, Symphony Hall)',
57
+ },
58
+ supportedTemporalTypes: ['scheduled'],
59
+ supportedCategories: ['event'],
60
+ refreshIntervalMs: 60 * 60 * 1000, // 1 hour
61
+ };
62
+ pluginConfig;
63
+ constructor(config) {
64
+ super(config);
65
+ this.pluginConfig = {
66
+ includeOrpheum: true,
67
+ includeSymphonyHall: true,
68
+ limit: 100,
69
+ ...config,
70
+ };
71
+ }
72
+ async fetchAlerts(options) {
73
+ const cacheKey = this.generateCacheKey(options);
74
+ try {
75
+ const { data, fromCache } = await this.getCachedOrFetch(cacheKey, () => this.fetchEvents(options), this.config.cacheTtlMs);
76
+ return {
77
+ alerts: data,
78
+ fromCache,
79
+ cacheKey,
80
+ };
81
+ }
82
+ catch (error) {
83
+ console.error('Phoenix Convention Center fetch error:', error);
84
+ throw error;
85
+ }
86
+ }
87
+ /**
88
+ * Fetch events from the convention center API.
89
+ */
90
+ async fetchEvents(options) {
91
+ const { timeRange } = options;
92
+ // Build API URL with start date
93
+ const startDate = timeRange.start.split('T')[0];
94
+ const url = `https://phoenixcc-web.ungerboeck.com/Digital_Services/api/events/getall?orgcode=01&start=${startDate}`;
95
+ const events = await this.fetchJson(url);
96
+ if (!Array.isArray(events)) {
97
+ return [];
98
+ }
99
+ // Filter and transform events
100
+ const endDate = new Date(timeRange.end);
101
+ const alerts = [];
102
+ for (const event of events) {
103
+ // Filter by event type
104
+ if (!this.shouldIncludeEvent(event)) {
105
+ continue;
106
+ }
107
+ // Filter by time range
108
+ const eventStart = new Date(event.start);
109
+ if (eventStart > endDate) {
110
+ continue;
111
+ }
112
+ alerts.push(this.transformEvent(event));
113
+ if (alerts.length >= this.pluginConfig.limit) {
114
+ break;
115
+ }
116
+ }
117
+ return alerts;
118
+ }
119
+ /**
120
+ * Check if an event should be included based on configuration.
121
+ */
122
+ shouldIncludeEvent(event) {
123
+ const eventType = event.event_type;
124
+ // Always include convention center events
125
+ if (eventType === 'B' || eventType === 'M') {
126
+ return true;
127
+ }
128
+ // Check Orpheum
129
+ if (eventType === 'O' && !this.pluginConfig.includeOrpheum) {
130
+ return false;
131
+ }
132
+ // Check Symphony Hall
133
+ if (eventType === 'S' && !this.pluginConfig.includeSymphonyHall) {
134
+ return false;
135
+ }
136
+ return true;
137
+ }
138
+ /**
139
+ * Transform a convention center event to our Alert format.
140
+ */
141
+ transformEvent(event) {
142
+ const venue = this.getVenue(event.event_type);
143
+ const riskLevel = this.assessEventRisk(event);
144
+ return this.createAlert({
145
+ id: `pcc-${event.id}`,
146
+ externalId: event.id,
147
+ title: this.cleanTitle(event.title),
148
+ description: this.buildDescription(event, venue),
149
+ riskLevel,
150
+ priority: this.riskLevelToPriority(riskLevel),
151
+ category: 'event',
152
+ temporalType: 'scheduled',
153
+ location: {
154
+ point: { latitude: venue.latitude, longitude: venue.longitude },
155
+ address: venue.name,
156
+ city: 'Phoenix',
157
+ state: 'AZ',
158
+ },
159
+ timestamps: {
160
+ issued: new Date().toISOString(),
161
+ eventStart: event.start,
162
+ eventEnd: event.end,
163
+ },
164
+ url: event.event_url || undefined,
165
+ metadata: {
166
+ source: 'phoenix-convention-center',
167
+ venue: venue.name,
168
+ eventType: event.event_type,
169
+ allDay: event.allDay === 'True',
170
+ },
171
+ });
172
+ }
173
+ /**
174
+ * Get venue information from event type.
175
+ */
176
+ getVenue(eventType) {
177
+ return VENUE_LOCATIONS[eventType] ?? VENUE_LOCATIONS.B;
178
+ }
179
+ /**
180
+ * Clean up event title.
181
+ */
182
+ cleanTitle(title) {
183
+ // Remove common suffixes and clean up
184
+ return title
185
+ .replace(/\s*\(Cancelling\)\s*/gi, '')
186
+ .replace(/\s*\(Cancelled\)\s*/gi, '')
187
+ .replace(/^FOTOT:\s*/i, '') // Remove internal prefix
188
+ .trim();
189
+ }
190
+ /**
191
+ * Assess risk level for an event based on expected impact.
192
+ */
193
+ assessEventRisk(event) {
194
+ const title = event.title.toLowerCase();
195
+ const description = (event.event_notes_description || '').toLowerCase();
196
+ const combined = `${title} ${description}`;
197
+ // Check for high-impact keywords
198
+ for (const keyword of HIGH_IMPACT_KEYWORDS) {
199
+ if (combined.includes(keyword)) {
200
+ return 'moderate';
201
+ }
202
+ }
203
+ // Convention center events (type B) tend to be larger
204
+ if (event.event_type === 'B') {
205
+ return 'moderate';
206
+ }
207
+ // Multi-day events suggest larger gatherings
208
+ if (event.start_date_formatted !== event.end_date_formatted) {
209
+ return 'moderate';
210
+ }
211
+ return 'low';
212
+ }
213
+ /**
214
+ * Build description from event data.
215
+ */
216
+ buildDescription(event, venue) {
217
+ const parts = [];
218
+ parts.push(`Venue: ${venue.name}`);
219
+ if (event.start_date_formatted === event.end_date_formatted) {
220
+ parts.push(`Date: ${event.start_date_week_formatted}, ${event.start_date_formatted}`);
221
+ if (event.allDay !== 'True') {
222
+ parts.push(`Time: ${event.start_time} - ${event.end_time}`);
223
+ }
224
+ }
225
+ else {
226
+ parts.push(`Dates: ${event.start_date_formatted} - ${event.end_date_formatted}`);
227
+ }
228
+ if (event.event_notes_description) {
229
+ parts.push(`\n${event.event_notes_description}`);
230
+ }
231
+ return parts.join('\n');
232
+ }
233
+ }
234
+ exports.PhoenixConventionCenterPlugin = PhoenixConventionCenterPlugin;
235
+ //# sourceMappingURL=phoenix-convention-center.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phoenix-convention-center.plugin.js","sourceRoot":"","sources":["../../../../src/plugins/events/phoenix-convention-center.plugin.ts"],"names":[],"mappings":";;;AACA,gDAA8D;AAoC9D;;GAEG;AACH,MAAM,0BAA0B,GAAG;IACjC,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,CAAC,QAAQ;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,eAAe,GAA0E;IAC7F,CAAC,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE;IACjF,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE;IACvE,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE;IACrE,CAAC,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE;CAClF,CAAC;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAErC;;GAEG;AACH,MAAM,oBAAoB,GAAG;IAC3B,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,UAAU;IACV,UAAU;IACV,QAAQ;CACT,CAAC;AAEF;;;;;;GAMG;AACH,MAAa,6BAA8B,SAAQ,wBAAU;IAClD,QAAQ,GAAmB;QAClC,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,2EAA2E;QACxF,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,0BAA0B;YAClC,YAAY,EAAE,sBAAsB;YACpC,WAAW,EAAE,qEAAqE;SACnF;QACD,sBAAsB,EAAE,CAAC,WAAW,CAAC;QACrC,mBAAmB,EAAE,CAAC,OAAO,CAAC;QAC9B,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;KAC7C,CAAC;IAEM,YAAY,CAAsC;IAE1D,YAAY,MAA4C;QACtD,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,GAAG;YAClB,cAAc,EAAE,IAAI;YACpB,mBAAmB,EAAE,IAAI;YACzB,KAAK,EAAE,GAAG;YACV,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA2B;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CACrD,QAAQ,EACR,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,CACvB,CAAC;YAEF,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,SAAS;gBACT,QAAQ;aACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,OAA2B;QACnD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAE9B,gCAAgC;QAChC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,4FAA4F,SAAS,EAAE,CAAC;QAEpH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAA0B,GAAG,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,SAAS;YACX,CAAC;YAED,uBAAuB;YACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,UAAU,GAAG,OAAO,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAExC,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAM,EAAE,CAAC;gBAC9C,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,KAA4B;QACrD,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;QAEnC,0CAA0C;QAC1C,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gBAAgB;QAChB,IAAI,SAAS,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,sBAAsB;QACtB,IAAI,SAAS,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;YAChE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,KAA4B;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC,WAAW,CAAC;YACtB,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,EAAE;YACrB,UAAU,EAAE,KAAK,CAAC,EAAE;YACpB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;YAChD,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAC7C,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;YACzB,QAAQ,EAAE;gBACR,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;gBAC/D,OAAO,EAAE,KAAK,CAAC,IAAI;gBACnB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,IAAI;aACZ;YACD,UAAU,EAAE;gBACV,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAChC,UAAU,EAAE,KAAK,CAAC,KAAK;gBACvB,QAAQ,EAAE,KAAK,CAAC,GAAG;aACpB;YACD,GAAG,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACjC,QAAQ,EAAE;gBACR,MAAM,EAAE,2BAA2B;gBACnC,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,SAAS,EAAE,KAAK,CAAC,UAAU;gBAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,MAAM;aAChC;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,SAAiB;QAChC,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,KAAa;QAC9B,sCAAsC;QACtC,OAAO,KAAK;aACT,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;aACrC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;aACpC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,yBAAyB;aACpD,IAAI,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAA4B;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACxE,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,WAAW,EAAE,CAAC;QAE3C,iCAAiC;QACjC,KAAK,MAAM,OAAO,IAAI,oBAAoB,EAAE,CAAC;YAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,6CAA6C;QAC7C,IAAI,KAAK,CAAC,oBAAoB,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC5D,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,KAA4B,EAC5B,KAAuB;QAEvB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,oBAAoB,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,yBAAyB,KAAK,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;YACtF,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,UAAU,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,oBAAoB,MAAM,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAlOD,sEAkOC"}