local-risk-alert-feed 0.1.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 (283) hide show
  1. package/dist/cjs/adapters/index.js +8 -0
  2. package/dist/cjs/adapters/index.js.map +1 -0
  3. package/dist/cjs/adapters/lambda.js +143 -0
  4. package/dist/cjs/adapters/lambda.js.map +1 -0
  5. package/dist/cjs/adapters/vercel.js +119 -0
  6. package/dist/cjs/adapters/vercel.js.map +1 -0
  7. package/dist/cjs/core/alert-aggregator.js +207 -0
  8. package/dist/cjs/core/alert-aggregator.js.map +1 -0
  9. package/dist/cjs/core/alert-feed.js +236 -0
  10. package/dist/cjs/core/alert-feed.js.map +1 -0
  11. package/dist/cjs/core/index.js +22 -0
  12. package/dist/cjs/core/index.js.map +1 -0
  13. package/dist/cjs/core/plugin-registry.js +193 -0
  14. package/dist/cjs/core/plugin-registry.js.map +1 -0
  15. package/dist/cjs/core/plugin-resolver.js +121 -0
  16. package/dist/cjs/core/plugin-resolver.js.map +1 -0
  17. package/dist/cjs/core/time-range.js +67 -0
  18. package/dist/cjs/core/time-range.js.map +1 -0
  19. package/dist/cjs/errors/fetch-error.js +71 -0
  20. package/dist/cjs/errors/fetch-error.js.map +1 -0
  21. package/dist/cjs/errors/index.js +15 -0
  22. package/dist/cjs/errors/index.js.map +1 -0
  23. package/dist/cjs/errors/plugin-error.js +80 -0
  24. package/dist/cjs/errors/plugin-error.js.map +1 -0
  25. package/dist/cjs/errors/validation-error.js +49 -0
  26. package/dist/cjs/errors/validation-error.js.map +1 -0
  27. package/dist/cjs/geo/distance.js +94 -0
  28. package/dist/cjs/geo/distance.js.map +1 -0
  29. package/dist/cjs/geo/index.js +18 -0
  30. package/dist/cjs/geo/index.js.map +1 -0
  31. package/dist/cjs/geo/point-in-radius.js +86 -0
  32. package/dist/cjs/geo/point-in-radius.js.map +1 -0
  33. package/dist/cjs/index.js +90 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/plugins/air-quality/airnow.plugin.js +343 -0
  36. package/dist/cjs/plugins/air-quality/airnow.plugin.js.map +1 -0
  37. package/dist/cjs/plugins/air-quality/index.js +6 -0
  38. package/dist/cjs/plugins/air-quality/index.js.map +1 -0
  39. package/dist/cjs/plugins/base-plugin.js +213 -0
  40. package/dist/cjs/plugins/base-plugin.js.map +1 -0
  41. package/dist/cjs/plugins/events/index.js +6 -0
  42. package/dist/cjs/plugins/events/index.js.map +1 -0
  43. package/dist/cjs/plugins/events/phoenix-events.plugin.js +382 -0
  44. package/dist/cjs/plugins/events/phoenix-events.plugin.js.map +1 -0
  45. package/dist/cjs/plugins/fire-emt/index.js +6 -0
  46. package/dist/cjs/plugins/fire-emt/index.js.map +1 -0
  47. package/dist/cjs/plugins/fire-emt/phoenix-fire.plugin.js +262 -0
  48. package/dist/cjs/plugins/fire-emt/phoenix-fire.plugin.js.map +1 -0
  49. package/dist/cjs/plugins/index.js +28 -0
  50. package/dist/cjs/plugins/index.js.map +1 -0
  51. package/dist/cjs/plugins/police-blotter/index.js +6 -0
  52. package/dist/cjs/plugins/police-blotter/index.js.map +1 -0
  53. package/dist/cjs/plugins/police-blotter/phoenix-police.plugin.js +198 -0
  54. package/dist/cjs/plugins/police-blotter/phoenix-police.plugin.js.map +1 -0
  55. package/dist/cjs/plugins/pulsepoint/index.js +6 -0
  56. package/dist/cjs/plugins/pulsepoint/index.js.map +1 -0
  57. package/dist/cjs/plugins/pulsepoint/pulsepoint.plugin.js +275 -0
  58. package/dist/cjs/plugins/pulsepoint/pulsepoint.plugin.js.map +1 -0
  59. package/dist/cjs/plugins/traffic/arizona-traffic.plugin.js +391 -0
  60. package/dist/cjs/plugins/traffic/arizona-traffic.plugin.js.map +1 -0
  61. package/dist/cjs/plugins/traffic/index.js +6 -0
  62. package/dist/cjs/plugins/traffic/index.js.map +1 -0
  63. package/dist/cjs/plugins/weather/index.js +6 -0
  64. package/dist/cjs/plugins/weather/index.js.map +1 -0
  65. package/dist/cjs/plugins/weather/nws-weather.plugin.js +180 -0
  66. package/dist/cjs/plugins/weather/nws-weather.plugin.js.map +1 -0
  67. package/dist/cjs/schemas/alert.schema.js +93 -0
  68. package/dist/cjs/schemas/alert.schema.js.map +1 -0
  69. package/dist/cjs/schemas/index.js +24 -0
  70. package/dist/cjs/schemas/index.js.map +1 -0
  71. package/dist/cjs/schemas/query.schema.js +76 -0
  72. package/dist/cjs/schemas/query.schema.js.map +1 -0
  73. package/dist/cjs/types/alert.js +35 -0
  74. package/dist/cjs/types/alert.js.map +1 -0
  75. package/dist/cjs/types/config.js +13 -0
  76. package/dist/cjs/types/config.js.map +1 -0
  77. package/dist/cjs/types/geo.js +3 -0
  78. package/dist/cjs/types/geo.js.map +1 -0
  79. package/dist/cjs/types/index.js +16 -0
  80. package/dist/cjs/types/index.js.map +1 -0
  81. package/dist/cjs/types/plugin.js +3 -0
  82. package/dist/cjs/types/plugin.js.map +1 -0
  83. package/dist/cjs/types/query.js +28 -0
  84. package/dist/cjs/types/query.js.map +1 -0
  85. package/dist/cjs/utils/cache.js +188 -0
  86. package/dist/cjs/utils/cache.js.map +1 -0
  87. package/dist/cjs/utils/csv.js +189 -0
  88. package/dist/cjs/utils/csv.js.map +1 -0
  89. package/dist/cjs/utils/date.js +153 -0
  90. package/dist/cjs/utils/date.js.map +1 -0
  91. package/dist/cjs/utils/index.js +28 -0
  92. package/dist/cjs/utils/index.js.map +1 -0
  93. package/dist/cjs/utils/retry.js +109 -0
  94. package/dist/cjs/utils/retry.js.map +1 -0
  95. package/dist/esm/adapters/index.js +3 -0
  96. package/dist/esm/adapters/index.js.map +1 -0
  97. package/dist/esm/adapters/lambda.js +140 -0
  98. package/dist/esm/adapters/lambda.js.map +1 -0
  99. package/dist/esm/adapters/vercel.js +116 -0
  100. package/dist/esm/adapters/vercel.js.map +1 -0
  101. package/dist/esm/core/alert-aggregator.js +203 -0
  102. package/dist/esm/core/alert-aggregator.js.map +1 -0
  103. package/dist/esm/core/alert-feed.js +232 -0
  104. package/dist/esm/core/alert-feed.js.map +1 -0
  105. package/dist/esm/core/index.js +6 -0
  106. package/dist/esm/core/index.js.map +1 -0
  107. package/dist/esm/core/plugin-registry.js +189 -0
  108. package/dist/esm/core/plugin-registry.js.map +1 -0
  109. package/dist/esm/core/plugin-resolver.js +117 -0
  110. package/dist/esm/core/plugin-resolver.js.map +1 -0
  111. package/dist/esm/core/time-range.js +57 -0
  112. package/dist/esm/core/time-range.js.map +1 -0
  113. package/dist/esm/errors/fetch-error.js +67 -0
  114. package/dist/esm/errors/fetch-error.js.map +1 -0
  115. package/dist/esm/errors/index.js +4 -0
  116. package/dist/esm/errors/index.js.map +1 -0
  117. package/dist/esm/errors/plugin-error.js +71 -0
  118. package/dist/esm/errors/plugin-error.js.map +1 -0
  119. package/dist/esm/errors/validation-error.js +45 -0
  120. package/dist/esm/errors/validation-error.js.map +1 -0
  121. package/dist/esm/geo/distance.js +85 -0
  122. package/dist/esm/geo/distance.js.map +1 -0
  123. package/dist/esm/geo/index.js +3 -0
  124. package/dist/esm/geo/index.js.map +1 -0
  125. package/dist/esm/geo/point-in-radius.js +79 -0
  126. package/dist/esm/geo/point-in-radius.js.map +1 -0
  127. package/dist/esm/index.js +30 -0
  128. package/dist/esm/index.js.map +1 -0
  129. package/dist/esm/plugins/air-quality/airnow.plugin.js +339 -0
  130. package/dist/esm/plugins/air-quality/airnow.plugin.js.map +1 -0
  131. package/dist/esm/plugins/air-quality/index.js +2 -0
  132. package/dist/esm/plugins/air-quality/index.js.map +1 -0
  133. package/dist/esm/plugins/base-plugin.js +209 -0
  134. package/dist/esm/plugins/base-plugin.js.map +1 -0
  135. package/dist/esm/plugins/events/index.js +2 -0
  136. package/dist/esm/plugins/events/index.js.map +1 -0
  137. package/dist/esm/plugins/events/phoenix-events.plugin.js +378 -0
  138. package/dist/esm/plugins/events/phoenix-events.plugin.js.map +1 -0
  139. package/dist/esm/plugins/fire-emt/index.js +2 -0
  140. package/dist/esm/plugins/fire-emt/index.js.map +1 -0
  141. package/dist/esm/plugins/fire-emt/phoenix-fire.plugin.js +258 -0
  142. package/dist/esm/plugins/fire-emt/phoenix-fire.plugin.js.map +1 -0
  143. package/dist/esm/plugins/index.js +17 -0
  144. package/dist/esm/plugins/index.js.map +1 -0
  145. package/dist/esm/plugins/police-blotter/index.js +2 -0
  146. package/dist/esm/plugins/police-blotter/index.js.map +1 -0
  147. package/dist/esm/plugins/police-blotter/phoenix-police.plugin.js +194 -0
  148. package/dist/esm/plugins/police-blotter/phoenix-police.plugin.js.map +1 -0
  149. package/dist/esm/plugins/pulsepoint/index.js +2 -0
  150. package/dist/esm/plugins/pulsepoint/index.js.map +1 -0
  151. package/dist/esm/plugins/pulsepoint/pulsepoint.plugin.js +271 -0
  152. package/dist/esm/plugins/pulsepoint/pulsepoint.plugin.js.map +1 -0
  153. package/dist/esm/plugins/traffic/arizona-traffic.plugin.js +387 -0
  154. package/dist/esm/plugins/traffic/arizona-traffic.plugin.js.map +1 -0
  155. package/dist/esm/plugins/traffic/index.js +2 -0
  156. package/dist/esm/plugins/traffic/index.js.map +1 -0
  157. package/dist/esm/plugins/weather/index.js +2 -0
  158. package/dist/esm/plugins/weather/index.js.map +1 -0
  159. package/dist/esm/plugins/weather/nws-weather.plugin.js +176 -0
  160. package/dist/esm/plugins/weather/nws-weather.plugin.js.map +1 -0
  161. package/dist/esm/schemas/alert.schema.js +90 -0
  162. package/dist/esm/schemas/alert.schema.js.map +1 -0
  163. package/dist/esm/schemas/index.js +5 -0
  164. package/dist/esm/schemas/index.js.map +1 -0
  165. package/dist/esm/schemas/query.schema.js +72 -0
  166. package/dist/esm/schemas/query.schema.js.map +1 -0
  167. package/dist/esm/types/alert.js +32 -0
  168. package/dist/esm/types/alert.js.map +1 -0
  169. package/dist/esm/types/config.js +10 -0
  170. package/dist/esm/types/config.js.map +1 -0
  171. package/dist/esm/types/geo.js +2 -0
  172. package/dist/esm/types/geo.js.map +1 -0
  173. package/dist/esm/types/index.js +4 -0
  174. package/dist/esm/types/index.js.map +1 -0
  175. package/dist/esm/types/plugin.js +2 -0
  176. package/dist/esm/types/plugin.js.map +1 -0
  177. package/dist/esm/types/query.js +25 -0
  178. package/dist/esm/types/query.js.map +1 -0
  179. package/dist/esm/utils/cache.js +181 -0
  180. package/dist/esm/utils/cache.js.map +1 -0
  181. package/dist/esm/utils/csv.js +185 -0
  182. package/dist/esm/utils/csv.js.map +1 -0
  183. package/dist/esm/utils/date.js +142 -0
  184. package/dist/esm/utils/date.js.map +1 -0
  185. package/dist/esm/utils/index.js +5 -0
  186. package/dist/esm/utils/index.js.map +1 -0
  187. package/dist/esm/utils/retry.js +102 -0
  188. package/dist/esm/utils/retry.js.map +1 -0
  189. package/dist/types/adapters/index.d.ts +5 -0
  190. package/dist/types/adapters/index.d.ts.map +1 -0
  191. package/dist/types/adapters/lambda.d.ts +37 -0
  192. package/dist/types/adapters/lambda.d.ts.map +1 -0
  193. package/dist/types/adapters/vercel.d.ts +54 -0
  194. package/dist/types/adapters/vercel.d.ts.map +1 -0
  195. package/dist/types/core/alert-aggregator.d.ts +81 -0
  196. package/dist/types/core/alert-aggregator.d.ts.map +1 -0
  197. package/dist/types/core/alert-feed.d.ts +80 -0
  198. package/dist/types/core/alert-feed.d.ts.map +1 -0
  199. package/dist/types/core/index.d.ts +8 -0
  200. package/dist/types/core/index.d.ts.map +1 -0
  201. package/dist/types/core/plugin-registry.d.ts +91 -0
  202. package/dist/types/core/plugin-registry.d.ts.map +1 -0
  203. package/dist/types/core/plugin-resolver.d.ts +78 -0
  204. package/dist/types/core/plugin-resolver.d.ts.map +1 -0
  205. package/dist/types/core/time-range.d.ts +40 -0
  206. package/dist/types/core/time-range.d.ts.map +1 -0
  207. package/dist/types/errors/fetch-error.d.ts +46 -0
  208. package/dist/types/errors/fetch-error.d.ts.map +1 -0
  209. package/dist/types/errors/index.d.ts +5 -0
  210. package/dist/types/errors/index.d.ts.map +1 -0
  211. package/dist/types/errors/plugin-error.d.ts +42 -0
  212. package/dist/types/errors/plugin-error.d.ts.map +1 -0
  213. package/dist/types/errors/validation-error.d.ts +34 -0
  214. package/dist/types/errors/validation-error.d.ts.map +1 -0
  215. package/dist/types/geo/distance.d.ts +50 -0
  216. package/dist/types/geo/distance.d.ts.map +1 -0
  217. package/dist/types/geo/index.d.ts +3 -0
  218. package/dist/types/geo/index.d.ts.map +1 -0
  219. package/dist/types/geo/point-in-radius.d.ts +44 -0
  220. package/dist/types/geo/point-in-radius.d.ts.map +1 -0
  221. package/dist/types/index.d.ts +32 -0
  222. package/dist/types/index.d.ts.map +1 -0
  223. package/dist/types/plugins/air-quality/airnow.plugin.d.ts +84 -0
  224. package/dist/types/plugins/air-quality/airnow.plugin.d.ts.map +1 -0
  225. package/dist/types/plugins/air-quality/index.d.ts +3 -0
  226. package/dist/types/plugins/air-quality/index.d.ts.map +1 -0
  227. package/dist/types/plugins/base-plugin.d.ts +99 -0
  228. package/dist/types/plugins/base-plugin.d.ts.map +1 -0
  229. package/dist/types/plugins/events/index.d.ts +3 -0
  230. package/dist/types/plugins/events/index.d.ts.map +1 -0
  231. package/dist/types/plugins/events/phoenix-events.plugin.d.ts +71 -0
  232. package/dist/types/plugins/events/phoenix-events.plugin.d.ts.map +1 -0
  233. package/dist/types/plugins/fire-emt/index.d.ts +3 -0
  234. package/dist/types/plugins/fire-emt/index.d.ts.map +1 -0
  235. package/dist/types/plugins/fire-emt/phoenix-fire.plugin.d.ts +47 -0
  236. package/dist/types/plugins/fire-emt/phoenix-fire.plugin.d.ts.map +1 -0
  237. package/dist/types/plugins/index.d.ts +17 -0
  238. package/dist/types/plugins/index.d.ts.map +1 -0
  239. package/dist/types/plugins/police-blotter/index.d.ts +3 -0
  240. package/dist/types/plugins/police-blotter/index.d.ts.map +1 -0
  241. package/dist/types/plugins/police-blotter/phoenix-police.plugin.d.ts +49 -0
  242. package/dist/types/plugins/police-blotter/phoenix-police.plugin.d.ts.map +1 -0
  243. package/dist/types/plugins/pulsepoint/index.d.ts +3 -0
  244. package/dist/types/plugins/pulsepoint/index.d.ts.map +1 -0
  245. package/dist/types/plugins/pulsepoint/pulsepoint.plugin.d.ts +61 -0
  246. package/dist/types/plugins/pulsepoint/pulsepoint.plugin.d.ts.map +1 -0
  247. package/dist/types/plugins/traffic/arizona-traffic.plugin.d.ts +83 -0
  248. package/dist/types/plugins/traffic/arizona-traffic.plugin.d.ts.map +1 -0
  249. package/dist/types/plugins/traffic/index.d.ts +3 -0
  250. package/dist/types/plugins/traffic/index.d.ts.map +1 -0
  251. package/dist/types/plugins/weather/index.d.ts +3 -0
  252. package/dist/types/plugins/weather/index.d.ts.map +1 -0
  253. package/dist/types/plugins/weather/nws-weather.plugin.d.ts +50 -0
  254. package/dist/types/plugins/weather/nws-weather.plugin.d.ts.map +1 -0
  255. package/dist/types/schemas/alert.schema.d.ts +266 -0
  256. package/dist/types/schemas/alert.schema.d.ts.map +1 -0
  257. package/dist/types/schemas/index.d.ts +5 -0
  258. package/dist/types/schemas/index.d.ts.map +1 -0
  259. package/dist/types/schemas/query.schema.d.ts +150 -0
  260. package/dist/types/schemas/query.schema.d.ts.map +1 -0
  261. package/dist/types/types/alert.d.ts +96 -0
  262. package/dist/types/types/alert.d.ts.map +1 -0
  263. package/dist/types/types/config.d.ts +63 -0
  264. package/dist/types/types/config.d.ts.map +1 -0
  265. package/dist/types/types/geo.d.ts +33 -0
  266. package/dist/types/types/geo.d.ts.map +1 -0
  267. package/dist/types/types/index.d.ts +9 -0
  268. package/dist/types/types/index.d.ts.map +1 -0
  269. package/dist/types/types/plugin.d.ts +125 -0
  270. package/dist/types/types/plugin.d.ts.map +1 -0
  271. package/dist/types/types/query.d.ts +86 -0
  272. package/dist/types/types/query.d.ts.map +1 -0
  273. package/dist/types/utils/cache.d.ts +112 -0
  274. package/dist/types/utils/cache.d.ts.map +1 -0
  275. package/dist/types/utils/csv.d.ts +38 -0
  276. package/dist/types/utils/csv.d.ts.map +1 -0
  277. package/dist/types/utils/date.d.ts +47 -0
  278. package/dist/types/utils/date.d.ts.map +1 -0
  279. package/dist/types/utils/index.d.ts +7 -0
  280. package/dist/types/utils/index.d.ts.map +1 -0
  281. package/dist/types/utils/retry.d.ts +51 -0
  282. package/dist/types/utils/retry.d.ts.map +1 -0
  283. package/package.json +115 -0
@@ -0,0 +1,37 @@
1
+ import type { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda';
2
+ import type { AlertFeedConfig } from '../types';
3
+ /**
4
+ * Options for the Lambda handler factory.
5
+ */
6
+ export interface LambdaHandlerOptions extends AlertFeedConfig {
7
+ /** CORS origin(s) to allow (default: '*') */
8
+ corsOrigin?: string | string[];
9
+ /** Additional CORS headers to allow */
10
+ corsHeaders?: string[];
11
+ /** Additional CORS methods to allow */
12
+ corsMethods?: string[];
13
+ }
14
+ /**
15
+ * Lambda handler function type.
16
+ */
17
+ export type LambdaHandler = (event: APIGatewayProxyEvent, context: Context) => Promise<APIGatewayProxyResult>;
18
+ /**
19
+ * Create an AWS Lambda handler for the AlertFeed.
20
+ *
21
+ * Supports both GET (query parameters) and POST (JSON body) requests.
22
+ *
23
+ * @param options - Handler configuration options
24
+ * @returns Lambda handler function
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * import { createLambdaHandler } from 'local-risk-alert-feed/adapters/lambda';
29
+ * import { PhoenixPolicePlugin } from 'local-risk-alert-feed/plugins/police-blotter';
30
+ *
31
+ * export const handler = createLambdaHandler({
32
+ * plugins: [{ plugin: new PhoenixPolicePlugin() }]
33
+ * });
34
+ * ```
35
+ */
36
+ export declare function createLambdaHandler(options: LambdaHandlerOptions): LambdaHandler;
37
+ //# sourceMappingURL=lambda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.d.ts","sourceRoot":"","sources":["../../../src/adapters/lambda.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,UAAU,CAAC;AAKpE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAEpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA4DhF"}
@@ -0,0 +1,54 @@
1
+ import type { AlertFeedConfig } from '../types';
2
+ /**
3
+ * Options for the Vercel handler factory.
4
+ */
5
+ export interface VercelHandlerOptions extends AlertFeedConfig {
6
+ /** CORS origin(s) to allow (default: '*') */
7
+ corsOrigin?: string | string[];
8
+ }
9
+ /**
10
+ * Next.js App Router request type.
11
+ */
12
+ interface NextRequest {
13
+ method: string;
14
+ url: string;
15
+ json(): Promise<unknown>;
16
+ nextUrl: {
17
+ searchParams: URLSearchParams;
18
+ };
19
+ }
20
+ /**
21
+ * Handler function for Next.js App Router.
22
+ */
23
+ export type VercelHandler = (request: NextRequest) => Promise<Response>;
24
+ /**
25
+ * Result of createVercelHandler with GET and POST handlers.
26
+ */
27
+ export interface VercelHandlerResult {
28
+ GET: VercelHandler;
29
+ POST: VercelHandler;
30
+ }
31
+ /**
32
+ * Create Next.js App Router handlers for the AlertFeed.
33
+ *
34
+ * Returns GET and POST handlers that can be exported from a route file.
35
+ *
36
+ * @param options - Handler configuration options
37
+ * @returns Object with GET and POST handlers
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * // app/api/alerts/route.ts
42
+ * import { createVercelHandler } from 'local-risk-alert-feed/adapters/vercel';
43
+ * import { PhoenixPolicePlugin } from 'local-risk-alert-feed/plugins/police-blotter';
44
+ *
45
+ * const { GET, POST } = createVercelHandler({
46
+ * plugins: [{ plugin: new PhoenixPolicePlugin() }]
47
+ * });
48
+ *
49
+ * export { GET, POST };
50
+ * ```
51
+ */
52
+ export declare function createVercelHandler(options: VercelHandlerOptions): VercelHandlerResult;
53
+ export {};
54
+ //# sourceMappingURL=vercel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/adapters/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,UAAU,CAAC;AAKpE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,EAAE;QACP,YAAY,EAAE,eAAe,CAAC;KAC/B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAsDtF"}
@@ -0,0 +1,81 @@
1
+ import type { Alert, RiskLevel, GeoPoint, TimeRange } from '../types';
2
+ /**
3
+ * Options for aggregating alerts.
4
+ */
5
+ export interface AggregateOptions {
6
+ /** Minimum risk level to include */
7
+ minRiskLevel?: RiskLevel;
8
+ /** Maximum number of alerts to return */
9
+ limit?: number;
10
+ /** Time range to filter by */
11
+ timeRange?: TimeRange;
12
+ /** Center location for distance calculations */
13
+ location?: GeoPoint;
14
+ /** Radius in meters for location filtering */
15
+ radiusMeters?: number;
16
+ }
17
+ /**
18
+ * Sort order for alerts.
19
+ */
20
+ export type AlertSortOrder = 'priority-asc' | 'priority-desc' | 'risk-asc' | 'risk-desc' | 'time-asc' | 'time-desc' | 'distance-asc' | 'distance-desc';
21
+ /**
22
+ * Aggregates, filters, deduplicates, and sorts alerts from multiple sources.
23
+ */
24
+ export declare class AlertAggregator {
25
+ /**
26
+ * Aggregate alerts from multiple sources.
27
+ *
28
+ * Combines alerts, removes duplicates, filters by criteria, and sorts.
29
+ *
30
+ * @param alertSets - Arrays of alerts from different plugins
31
+ * @param options - Aggregation options
32
+ * @returns Aggregated and filtered alerts
33
+ */
34
+ aggregate(alertSets: Alert[][], options?: AggregateOptions): Alert[];
35
+ /**
36
+ * Remove duplicate alerts based on ID and source.
37
+ *
38
+ * If two alerts have the same external ID from the same source,
39
+ * keep the one with the most recent issued timestamp.
40
+ */
41
+ deduplicate(alerts: Alert[]): Alert[];
42
+ /**
43
+ * Filter alerts by minimum risk level.
44
+ */
45
+ filterByRiskLevel(alerts: Alert[], minLevel: RiskLevel): Alert[];
46
+ /**
47
+ * Filter alerts by time range.
48
+ *
49
+ * Includes alerts where:
50
+ * - The issued timestamp falls within the range, OR
51
+ * - The event start/end times overlap with the range
52
+ */
53
+ filterByTimeRange(alerts: Alert[], range: TimeRange): Alert[];
54
+ /**
55
+ * Filter alerts by distance from a center point.
56
+ */
57
+ filterByRadius(alerts: Alert[], center: GeoPoint, radiusMeters: number): Alert[];
58
+ /**
59
+ * Sort alerts by one or more criteria.
60
+ *
61
+ * Later criteria are used as tiebreakers.
62
+ */
63
+ sort(alerts: Alert[], orders: AlertSortOrder[]): Alert[];
64
+ /**
65
+ * Compare two alerts based on a sort order.
66
+ */
67
+ private compare;
68
+ /**
69
+ * Sort alerts by distance from a center point.
70
+ */
71
+ sortByDistance(alerts: Alert[], center: GeoPoint, ascending?: boolean): Alert[];
72
+ /**
73
+ * Group alerts by category.
74
+ */
75
+ groupByCategory(alerts: Alert[]): Map<string, Alert[]>;
76
+ /**
77
+ * Group alerts by source plugin.
78
+ */
79
+ groupBySource(alerts: Alert[]): Map<string, Alert[]>;
80
+ }
81
+ //# sourceMappingURL=alert-aggregator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-aggregator.d.ts","sourceRoot":"","sources":["../../../src/core/alert-aggregator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAItE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,eAAe,GACf,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,cAAc,GACd,eAAe,CAAC;AAEpB;;GAEG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,KAAK,EAAE;IAiCxE;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;IAwCrC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAG,KAAK,EAAE;IAKhE;;;;;;OAMG;IACH,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE;IAiC7D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,KAAK,EAAE;IAOhF;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,EAAE;IAUxD;;OAEG;IACH,OAAO,CAAC,OAAO;IAqBf;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,UAAO,GAAG,KAAK,EAAE;IAQ5E;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAYtD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;CAWrD"}
@@ -0,0 +1,80 @@
1
+ import type { AlertFeedConfig, AlertQuery, AlertQueryResponse, PluginRegistration } from '../types';
2
+ /**
3
+ * Main AlertFeed class that coordinates plugin fetching and alert aggregation.
4
+ */
5
+ export declare class AlertFeed {
6
+ private registry;
7
+ private resolver;
8
+ private aggregator;
9
+ private config;
10
+ constructor(config?: AlertFeedConfig);
11
+ /**
12
+ * Register plugins synchronously (for constructor use).
13
+ * Initialization happens lazily on first query.
14
+ */
15
+ private registerPluginsSync;
16
+ /**
17
+ * Register plugins with the feed.
18
+ *
19
+ * @param registrations - Array of plugin registrations
20
+ */
21
+ registerPlugins(registrations: PluginRegistration[]): Promise<void>;
22
+ /**
23
+ * Register a single plugin.
24
+ *
25
+ * @param registration - Plugin registration
26
+ */
27
+ registerPlugin(registration: PluginRegistration): Promise<void>;
28
+ /**
29
+ * Unregister a plugin by ID.
30
+ *
31
+ * @param pluginId - The plugin ID to unregister
32
+ */
33
+ unregisterPlugin(pluginId: string): Promise<void>;
34
+ /**
35
+ * Query for alerts based on location and filters.
36
+ *
37
+ * @param query - Query parameters
38
+ * @returns Query response with alerts and metadata
39
+ */
40
+ query(query: AlertQuery): Promise<AlertQueryResponse>;
41
+ /**
42
+ * Fetch alerts from multiple plugins with concurrency control.
43
+ */
44
+ private fetchFromPlugins;
45
+ /**
46
+ * Fetch alerts from a single plugin with timeout handling.
47
+ */
48
+ private fetchFromPlugin;
49
+ /**
50
+ * Get total count of alerts across all sets.
51
+ */
52
+ private getTotalAlertCount;
53
+ /**
54
+ * Split an array into chunks.
55
+ */
56
+ private chunkArray;
57
+ /**
58
+ * Get registered plugin metadata.
59
+ *
60
+ * @param enabledOnly - Only return enabled plugins (default: true)
61
+ */
62
+ getPluginMetadata(enabledOnly?: boolean): import("../types").PluginMetadata[];
63
+ /**
64
+ * Check if a plugin is registered.
65
+ */
66
+ hasPlugin(pluginId: string): boolean;
67
+ /**
68
+ * Enable a plugin.
69
+ */
70
+ enablePlugin(pluginId: string): Promise<void>;
71
+ /**
72
+ * Disable a plugin.
73
+ */
74
+ disablePlugin(pluginId: string): void;
75
+ /**
76
+ * Dispose of the feed and all plugins.
77
+ */
78
+ dispose(): Promise<void>;
79
+ }
80
+ //# sourceMappingURL=alert-feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-feed.d.ts","sourceRoot":"","sources":["../../../src/core/alert-feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAInB,MAAM,UAAU,CAAC;AASlB;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAKZ;gBAEU,MAAM,CAAC,EAAE,eAAe;IAkBpC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;OAIG;IACG,eAAe,CAAC,aAAa,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE;;;;OAIG;IACG,cAAc,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE;;;;OAIG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;;;;OAKG;IACG,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6D3D;;OAEG;YACW,gBAAgB;IA8B9B;;OAEG;YACW,eAAe;IAuD7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,UAAO;IAIpC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -0,0 +1,8 @@
1
+ export { AlertFeed } from './alert-feed';
2
+ export { PluginRegistry } from './plugin-registry';
3
+ export { PluginResolver } from './plugin-resolver';
4
+ export type { PluginResolveOptions, ResolvedPlugin } from './plugin-resolver';
5
+ export { AlertAggregator } from './alert-aggregator';
6
+ export type { AggregateOptions, AlertSortOrder } from './alert-aggregator';
7
+ export { resolveTimeRange, resolveTimeRangePreset, getDefaultTimeRange, getDefaultTimeRangePreset, normalizeTimeRange, getTimeRangeDuration, isTimeRangeInPast, isTimeRangeInFuture, isTimeRangeCurrent, } from './time-range';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,91 @@
1
+ import type { AlertPlugin, PluginRegistration, PluginMetadata } from '../types';
2
+ /**
3
+ * Registry for managing alert plugins.
4
+ *
5
+ * Handles registration, initialization, and lifecycle of plugins.
6
+ */
7
+ export declare class PluginRegistry {
8
+ private plugins;
9
+ /**
10
+ * Register a single plugin.
11
+ *
12
+ * @param registration - Plugin registration details
13
+ * @throws DuplicatePluginError if a plugin with the same ID is already registered
14
+ */
15
+ register(registration: PluginRegistration): Promise<void>;
16
+ /**
17
+ * Register multiple plugins at once.
18
+ *
19
+ * @param registrations - Array of plugin registrations
20
+ */
21
+ registerAll(registrations: PluginRegistration[]): Promise<void>;
22
+ /**
23
+ * Unregister a plugin by ID.
24
+ *
25
+ * @param pluginId - The plugin ID to unregister
26
+ * @throws PluginNotFoundError if the plugin is not registered
27
+ */
28
+ unregister(pluginId: string): Promise<void>;
29
+ /**
30
+ * Get a plugin by ID.
31
+ *
32
+ * @param pluginId - The plugin ID to retrieve
33
+ * @returns The plugin instance or undefined if not found
34
+ */
35
+ get(pluginId: string): AlertPlugin | undefined;
36
+ /**
37
+ * Get all registered plugins.
38
+ *
39
+ * @param enabledOnly - If true, only return enabled plugins (default: true)
40
+ * @returns Array of plugin instances
41
+ */
42
+ getAll(enabledOnly?: boolean): AlertPlugin[];
43
+ /**
44
+ * Get metadata for all registered plugins.
45
+ *
46
+ * @param enabledOnly - If true, only return enabled plugins
47
+ * @returns Array of plugin metadata
48
+ */
49
+ getMetadata(enabledOnly?: boolean): PluginMetadata[];
50
+ /**
51
+ * Check if a plugin is registered.
52
+ *
53
+ * @param pluginId - The plugin ID to check
54
+ * @returns true if the plugin is registered
55
+ */
56
+ has(pluginId: string): boolean;
57
+ /**
58
+ * Enable a registered plugin.
59
+ *
60
+ * @param pluginId - The plugin ID to enable
61
+ */
62
+ enable(pluginId: string): Promise<void>;
63
+ /**
64
+ * Disable a registered plugin.
65
+ *
66
+ * @param pluginId - The plugin ID to disable
67
+ */
68
+ disable(pluginId: string): void;
69
+ /**
70
+ * Check if a plugin is enabled.
71
+ *
72
+ * @param pluginId - The plugin ID to check
73
+ * @returns true if the plugin is enabled
74
+ */
75
+ isEnabled(pluginId: string): boolean;
76
+ /**
77
+ * Get the number of registered plugins.
78
+ *
79
+ * @param enabledOnly - If true, only count enabled plugins
80
+ */
81
+ size(enabledOnly?: boolean): number;
82
+ /**
83
+ * Dispose all plugins and clear the registry.
84
+ */
85
+ dispose(): Promise<void>;
86
+ /**
87
+ * Initialize a plugin.
88
+ */
89
+ private initializePlugin;
90
+ }
91
+ //# sourceMappingURL=plugin-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../../src/core/plugin-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAiBhF;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAkC;IAEjD;;;;;OAKG;IACG,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/D;;;;OAIG;IACG,WAAW,CAAC,aAAa,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejD;;;;;OAKG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI9C;;;;;OAKG;IACH,MAAM,CAAC,WAAW,UAAO,GAAG,WAAW,EAAE;IAYzC;;;;;OAKG;IACH,WAAW,CAAC,WAAW,UAAO,GAAG,cAAc,EAAE;IAIjD;;;;;OAKG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9B;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAU/B;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;OAIG;IACH,IAAI,CAAC,WAAW,UAAQ,GAAG,MAAM;IAYjC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B;;OAEG;YACW,gBAAgB;CAmB/B"}
@@ -0,0 +1,78 @@
1
+ import type { AlertPlugin, GeoPoint, AlertCategory, AlertTemporalType } from '../types';
2
+ /**
3
+ * Options for resolving plugins.
4
+ */
5
+ export interface PluginResolveOptions {
6
+ /** The location to check coverage for */
7
+ location: GeoPoint;
8
+ /** Filter by categories the plugin must support */
9
+ categories?: AlertCategory[];
10
+ /** Filter by temporal types the plugin must support */
11
+ temporalTypes?: AlertTemporalType[];
12
+ }
13
+ /**
14
+ * Result of plugin resolution with coverage information.
15
+ */
16
+ export interface ResolvedPlugin {
17
+ plugin: AlertPlugin;
18
+ coversLocation: boolean;
19
+ supportsCategories: boolean;
20
+ supportsTemporalTypes: boolean;
21
+ }
22
+ /**
23
+ * Resolves which plugins are applicable for a given query.
24
+ *
25
+ * Determines plugin coverage based on:
26
+ * - Geographic coverage (global or regional with center + radius)
27
+ * - Supported alert categories
28
+ * - Supported temporal types
29
+ */
30
+ export declare class PluginResolver {
31
+ /**
32
+ * Resolve which plugins cover the given location and match the filters.
33
+ *
34
+ * @param plugins - Available plugins to check
35
+ * @param options - Resolution options including location and filters
36
+ * @returns Array of plugins that match all criteria
37
+ */
38
+ resolve(plugins: AlertPlugin[], options: PluginResolveOptions): AlertPlugin[];
39
+ /**
40
+ * Resolve plugins with detailed coverage information.
41
+ *
42
+ * @param plugins - Available plugins to check
43
+ * @param options - Resolution options
44
+ * @returns Array of resolved plugins with coverage details
45
+ */
46
+ resolveWithDetails(plugins: AlertPlugin[], options: PluginResolveOptions): ResolvedPlugin[];
47
+ /**
48
+ * Get plugins that cover a specific location (regardless of category/temporal filters).
49
+ *
50
+ * @param plugins - Available plugins
51
+ * @param location - The location to check
52
+ * @returns Plugins that cover the location
53
+ */
54
+ getPluginsForLocation(plugins: AlertPlugin[], location: GeoPoint): AlertPlugin[];
55
+ /**
56
+ * Get plugins that support specific categories.
57
+ *
58
+ * @param plugins - Available plugins
59
+ * @param categories - Categories to filter by
60
+ * @returns Plugins that support at least one of the specified categories
61
+ */
62
+ getPluginsForCategories(plugins: AlertPlugin[], categories: AlertCategory[]): AlertPlugin[];
63
+ /**
64
+ * Get global plugins (plugins that cover all locations).
65
+ *
66
+ * @param plugins - Available plugins
67
+ * @returns Plugins with global coverage
68
+ */
69
+ getGlobalPlugins(plugins: AlertPlugin[]): AlertPlugin[];
70
+ /**
71
+ * Get regional plugins (plugins that cover specific geographic areas).
72
+ *
73
+ * @param plugins - Available plugins
74
+ * @returns Plugins with regional coverage
75
+ */
76
+ getRegionalPlugins(plugins: AlertPlugin[]): AlertPlugin[];
77
+ }
78
+ //# sourceMappingURL=plugin-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/plugin-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB,mDAAmD;IACnD,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,uDAAuD;IACvD,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,oBAAoB,GAAG,WAAW,EAAE;IA+B7E;;;;;;OAMG;IACH,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,oBAAoB,GAAG,cAAc,EAAE;IA2B3F;;;;;;OAMG;IACH,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE;IAIhF;;;;;;OAMG;IACH,uBAAuB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE;IAW3F;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IAIvD;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;CAG1D"}
@@ -0,0 +1,40 @@
1
+ import type { TimeRange, TimeRangeInput, TimeRangePreset } from '../types';
2
+ import { resolveTimeRange as resolveTimeRangeUtil, resolveTimeRangePreset } from '../utils';
3
+ /**
4
+ * Re-export time range utilities for use in core module.
5
+ */
6
+ export declare const resolveTimeRange: typeof resolveTimeRangeUtil;
7
+ export { resolveTimeRangePreset };
8
+ /**
9
+ * Get the default time range preset.
10
+ */
11
+ export declare function getDefaultTimeRangePreset(): TimeRangePreset;
12
+ /**
13
+ * Get the default resolved time range.
14
+ */
15
+ export declare function getDefaultTimeRange(): TimeRange;
16
+ /**
17
+ * Normalize a time range input to an explicit TimeRange.
18
+ *
19
+ * @param input - Time range input (preset or explicit)
20
+ * @param defaultPreset - Default preset to use if input is undefined
21
+ * @returns Normalized TimeRange
22
+ */
23
+ export declare function normalizeTimeRange(input?: TimeRangeInput, defaultPreset?: TimeRangePreset): TimeRange;
24
+ /**
25
+ * Get the duration of a time range in milliseconds.
26
+ */
27
+ export declare function getTimeRangeDuration(range: TimeRange): number;
28
+ /**
29
+ * Check if a time range is in the past.
30
+ */
31
+ export declare function isTimeRangeInPast(range: TimeRange): boolean;
32
+ /**
33
+ * Check if a time range is in the future.
34
+ */
35
+ export declare function isTimeRangeInFuture(range: TimeRange): boolean;
36
+ /**
37
+ * Check if a time range spans the current time.
38
+ */
39
+ export declare function isTimeRangeCurrent(range: TimeRange): boolean;
40
+ //# sourceMappingURL=time-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-range.d.ts","sourceRoot":"","sources":["../../../src/core/time-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAE5F;;GAEG;AACH,eAAO,MAAM,gBAAgB,6BAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,CAE3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,EAAE,cAAc,EACtB,aAAa,GAAE,eAA4B,GAC1C,SAAS,CAMX;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAG5D"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Error thrown when an HTTP fetch operation fails.
3
+ */
4
+ export declare class FetchError extends Error {
5
+ readonly code = "FETCH_ERROR";
6
+ readonly url: string;
7
+ readonly statusCode?: number;
8
+ readonly statusText?: string;
9
+ readonly cause?: Error;
10
+ constructor(message: string, url: string, options?: {
11
+ statusCode?: number;
12
+ statusText?: string;
13
+ cause?: Error;
14
+ });
15
+ /**
16
+ * Create a FetchError from a failed Response object.
17
+ */
18
+ static fromResponse(url: string, response: Response): FetchError;
19
+ /**
20
+ * Create a FetchError from a network error.
21
+ */
22
+ static fromNetworkError(url: string, error: Error): FetchError;
23
+ /**
24
+ * Check if this is a client error (4xx status code).
25
+ */
26
+ isClientError(): boolean;
27
+ /**
28
+ * Check if this is a server error (5xx status code).
29
+ */
30
+ isServerError(): boolean;
31
+ /**
32
+ * Check if this error is retryable (network error or 5xx status).
33
+ */
34
+ isRetryable(): boolean;
35
+ /**
36
+ * Convert to a plain object for serialization.
37
+ */
38
+ toJSON(): {
39
+ code: string;
40
+ message: string;
41
+ url: string;
42
+ statusCode?: number;
43
+ statusText?: string;
44
+ };
45
+ }
46
+ //# sourceMappingURL=fetch-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-error.d.ts","sourceRoot":"","sources":["../../../src/errors/fetch-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC;KACf;IAWH;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,UAAU;IAOhE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU;IAM9D;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,MAAM,IAAI;QACR,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;CASF"}
@@ -0,0 +1,5 @@
1
+ export { PluginError, PluginInitializationError, PluginFetchError, PluginTimeoutError, DuplicatePluginError, PluginNotFoundError, } from './plugin-error';
2
+ export { ValidationError } from './validation-error';
3
+ export type { ValidationIssue } from './validation-error';
4
+ export { FetchError } from './fetch-error';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Base error class for plugin-related errors.
3
+ */
4
+ export declare class PluginError extends Error {
5
+ readonly pluginId: string;
6
+ readonly code: string;
7
+ constructor(message: string, pluginId: string, code?: string);
8
+ }
9
+ /**
10
+ * Error thrown when a plugin fails to initialize.
11
+ */
12
+ export declare class PluginInitializationError extends PluginError {
13
+ readonly cause?: Error;
14
+ constructor(pluginId: string, message: string, cause?: Error);
15
+ }
16
+ /**
17
+ * Error thrown when a plugin fetch operation fails.
18
+ */
19
+ export declare class PluginFetchError extends PluginError {
20
+ readonly cause?: Error;
21
+ constructor(pluginId: string, message: string, cause?: Error);
22
+ }
23
+ /**
24
+ * Error thrown when a plugin operation times out.
25
+ */
26
+ export declare class PluginTimeoutError extends PluginError {
27
+ readonly timeoutMs: number;
28
+ constructor(pluginId: string, timeoutMs: number);
29
+ }
30
+ /**
31
+ * Error thrown when trying to register a plugin with a duplicate ID.
32
+ */
33
+ export declare class DuplicatePluginError extends PluginError {
34
+ constructor(pluginId: string);
35
+ }
36
+ /**
37
+ * Error thrown when a referenced plugin is not found.
38
+ */
39
+ export declare class PluginNotFoundError extends PluginError {
40
+ constructor(pluginId: string);
41
+ }
42
+ //# sourceMappingURL=plugin-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-error.d.ts","sourceRoot":"","sources":["../../../src/errors/plugin-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,SAAiB;CAOrE;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,WAAW;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEX,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM7D;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEX,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM7D;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAUhD;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,QAAQ,EAAE,MAAM;CAK7B;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,QAAQ,EAAE,MAAM;CAK7B"}
@@ -0,0 +1,34 @@
1
+ import type { ZodError } from 'zod';
2
+ /**
3
+ * Represents a single validation issue.
4
+ */
5
+ export interface ValidationIssue {
6
+ path: string;
7
+ message: string;
8
+ code: string;
9
+ }
10
+ /**
11
+ * Error thrown when input validation fails.
12
+ */
13
+ export declare class ValidationError extends Error {
14
+ readonly code = "VALIDATION_ERROR";
15
+ readonly issues: ValidationIssue[];
16
+ constructor(message: string, issues: ValidationIssue[]);
17
+ /**
18
+ * Create a ValidationError from a Zod error.
19
+ */
20
+ static fromZodError(error: ZodError): ValidationError;
21
+ /**
22
+ * Get a formatted string representation of all issues.
23
+ */
24
+ getFormattedIssues(): string;
25
+ /**
26
+ * Convert to a plain object for serialization.
27
+ */
28
+ toJSON(): {
29
+ code: string;
30
+ message: string;
31
+ issues: ValidationIssue[];
32
+ };
33
+ }
34
+ //# sourceMappingURL=validation-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.d.ts","sourceRoot":"","sources":["../../../src/errors/validation-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,KAAK,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE;IAOtD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,eAAe;IAarD;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAM5B;;OAEG;IACH,MAAM,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,EAAE,CAAA;KAAE;CAOvE"}