openplanter 0.2.3 → 0.2.4

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.
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * asx-calendar-fetcher.ts — ASX Appendix 4C Reporting Calendar Fetcher
3
3
  *
4
- * Scrapes scheduled ASX Appendix 4C (quarterly cashflow) due dates from
5
- * Listcorp and outputs structured data for downstream analysis.
4
+ * Fetches recent ASX quarterly activity / Appendix 4C announcements from
5
+ * the ASX Markit Digital API and outputs structured data for downstream analysis.
6
6
  */
7
7
  declare const OUTPUT_COLUMNS: readonly ["ticker", "company_name", "quarter_end", "due_date", "lodged_date", "status"];
8
8
  export interface CalendarEntry {
@@ -17,22 +17,8 @@ export interface PeriodRange {
17
17
  start: Date;
18
18
  end: Date;
19
19
  }
20
- /**
21
- * Parse a period string into a date range for filtering.
22
- *
23
- * Supported formats:
24
- * - next_30d, next_90d, next_NNd — from today through NN days ahead
25
- * - Q1_2026, Q2_2026, etc. — quarter due date window
26
- */
27
20
  export declare function parsePeriod(period: string): PeriodRange;
28
21
  export declare function fetchCalendarLive(): Promise<CalendarEntry[]>;
29
- /**
30
- * Fetch and filter ASX 4C calendar entries.
31
- *
32
- * @param options.tickers - Comma-separated tickers or "all"
33
- * @param options.period - Period string (next_30d, Q1_2026, etc.)
34
- * @param options.records - Pre-fetched records (for testing / offline use)
35
- */
36
22
  export declare function fetchCalendar(options?: {
37
23
  tickers?: string;
38
24
  period?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"asx-calendar-fetcher.d.ts","sourceRoot":"","sources":["../../src/investigation-tools/asx-calendar-fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,QAAA,MAAM,cAAc,yFAOV,CAAC;AAkDX,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;CACX;AAID;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAwCvD;AAwJD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CASlE;AAID;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAgC3B;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"asx-calendar-fetcher.d.ts","sourceRoot":"","sources":["../../src/investigation-tools/asx-calendar-fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,QAAA,MAAM,cAAc,yFAOV,CAAC;AAiCX,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;CACX;AAwBD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAsCvD;AA6HD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAGlE;AAID,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA0C3B;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * asx-calendar-fetcher.ts — ASX Appendix 4C Reporting Calendar Fetcher
3
3
  *
4
- * Scrapes scheduled ASX Appendix 4C (quarterly cashflow) due dates from
5
- * Listcorp and outputs structured data for downstream analysis.
4
+ * Fetches recent ASX quarterly activity / Appendix 4C announcements from
5
+ * the ASX Markit Digital API and outputs structured data for downstream analysis.
6
6
  */
7
- import { fetchHtml, normalizeTicker } from "./shared.js";
7
+ import { fetchJson, normalizeTicker, isValidTicker, DEFAULT_USER_AGENT } from "./shared.js";
8
8
  // ── Constants ────────────────────────────────────────────────────
9
- const LISTCORP_UPCOMING_URL = "https://www.listcorp.com/asx/upcoming-reports";
9
+ const ASX_MARKIT_API = "https://asx.api.markitdigital.com/asx-research/1.0/companies/{ticker}/announcements";
10
10
  const OUTPUT_COLUMNS = [
11
11
  "ticker",
12
12
  "company_name",
@@ -15,7 +15,6 @@ const OUTPUT_COLUMNS = [
15
15
  "lodged_date",
16
16
  "status",
17
17
  ];
18
- /** Quarter-end month mappings (calendar quarters) */
19
18
  const QUARTER_END_MONTHS = {
20
19
  Q1: 3,
21
20
  Q2: 6,
@@ -28,44 +27,23 @@ const QUARTER_END_DAYS = {
28
27
  Q3: 30,
29
28
  Q4: 31,
30
29
  };
31
- /** 4C reports are due within ~1 month after quarter end */
32
30
  const REPORT_DUE_OFFSET_DAYS = 31;
33
- /** Date formats for parsing cell text */
34
- const DATE_FORMATS = [
35
- {
36
- // DD/MM/YYYY
37
- regex: /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,
38
- parse: (m) => new Date(+m[3], +m[2] - 1, +m[1]),
39
- },
40
- {
41
- // YYYY-MM-DD
42
- regex: /^(\d{4})-(\d{2})-(\d{2})$/,
43
- parse: (m) => new Date(+m[1], +m[2] - 1, +m[3]),
44
- },
45
- {
46
- // DD-MM-YYYY
47
- regex: /^(\d{1,2})-(\d{1,2})-(\d{4})$/,
48
- parse: (m) => new Date(+m[3], +m[2] - 1, +m[1]),
49
- },
50
- {
51
- // DD Mon YYYY (e.g. "15 Feb 2026")
52
- regex: /^(\d{1,2})\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d{4})$/i,
53
- parse: (m) => new Date(`${m[2]} ${m[1]}, ${m[3]}`),
54
- },
31
+ const QUARTERLY_ANNOUNCEMENT_TYPES = [
32
+ "QUARTERLY ACTIVITIES REPORT",
33
+ "QUARTERLY CASHFLOW REPORT",
34
+ ];
35
+ const QUARTERLY_HEADLINE_KEYWORDS = [
36
+ "appendix 4c",
37
+ "quarterly cash flow",
38
+ "quarterly cashflow",
39
+ "quarterly activities",
40
+ "quarterly report",
55
41
  ];
56
42
  // ── Period Parsing ───────────────────────────────────────────────
57
- /**
58
- * Parse a period string into a date range for filtering.
59
- *
60
- * Supported formats:
61
- * - next_30d, next_90d, next_NNd — from today through NN days ahead
62
- * - Q1_2026, Q2_2026, etc. — quarter due date window
63
- */
64
43
  export function parsePeriod(period) {
65
44
  const trimmed = period.trim();
66
45
  const today = new Date();
67
46
  today.setHours(0, 0, 0, 0);
68
- // Handle next_Nd pattern
69
47
  if (trimmed.startsWith("next_") && trimmed.endsWith("d")) {
70
48
  const daysStr = trimmed.slice(5, -1);
71
49
  const days = parseInt(daysStr, 10);
@@ -76,7 +54,6 @@ export function parsePeriod(period) {
76
54
  end.setDate(end.getDate() + days);
77
55
  return { start: today, end };
78
56
  }
79
- // Handle QN_YYYY pattern
80
57
  if (trimmed.includes("_")) {
81
58
  const parts = trimmed.split("_", 2);
82
59
  const quarterKey = parts[0].toUpperCase();
@@ -96,10 +73,10 @@ export function parsePeriod(period) {
96
73
  throw new Error(`Unrecognised period '${period}'. Use next_30d, next_90d, Q1_2026, Q2_2026, etc.`);
97
74
  }
98
75
  // ── Helpers ──────────────────────────────────────────────────────
99
- function inferQuarterEnd(dueDate) {
100
- const approxQtrEnd = new Date(dueDate);
76
+ function inferQuarterEnd(lodgedDate) {
77
+ const approxQtrEnd = new Date(lodgedDate);
101
78
  approxQtrEnd.setDate(approxQtrEnd.getDate() - REPORT_DUE_OFFSET_DAYS);
102
- const month = approxQtrEnd.getMonth() + 1; // 1-based
79
+ const month = approxQtrEnd.getMonth() + 1;
103
80
  if (month <= 3) {
104
81
  return `${approxQtrEnd.getFullYear()}-03-31`;
105
82
  }
@@ -113,24 +90,17 @@ function inferQuarterEnd(dueDate) {
113
90
  return `${approxQtrEnd.getFullYear()}-12-31`;
114
91
  }
115
92
  }
116
- function tryParseDate(text) {
117
- const trimmed = text.trim();
118
- for (const fmt of DATE_FORMATS) {
119
- const m = trimmed.match(fmt.regex);
120
- if (m) {
121
- const d = fmt.parse(m);
122
- if (!isNaN(d.getTime()))
123
- return d;
124
- }
125
- }
126
- return null;
127
- }
128
93
  function formatDateIso(d) {
129
94
  const year = d.getFullYear();
130
95
  const month = String(d.getMonth() + 1).padStart(2, "0");
131
96
  const day = String(d.getDate()).padStart(2, "0");
132
97
  return `${year}-${month}-${day}`;
133
98
  }
99
+ function computeDueDate(quarterEnd) {
100
+ const qe = new Date(quarterEnd);
101
+ qe.setDate(qe.getDate() + REPORT_DUE_OFFSET_DAYS);
102
+ return formatDateIso(qe);
103
+ }
134
104
  function determineStatus(dueDateStr, lodgedDateStr) {
135
105
  if (lodgedDateStr)
136
106
  return "lodged";
@@ -141,6 +111,13 @@ function determineStatus(dueDateStr, lodgedDateStr) {
141
111
  today.setHours(0, 0, 0, 0);
142
112
  return dueDt < today ? "overdue" : "upcoming";
143
113
  }
114
+ function is4CRelated(item) {
115
+ const annType = (item.announcementType ?? "").toUpperCase();
116
+ if (QUARTERLY_ANNOUNCEMENT_TYPES.some((t) => annType.includes(t)))
117
+ return true;
118
+ const headline = (item.headline ?? "").toLowerCase();
119
+ return QUARTERLY_HEADLINE_KEYWORDS.some((kw) => headline.includes(kw));
120
+ }
144
121
  function filterByTickers(records, tickers) {
145
122
  const tickerSet = new Set(tickers.map((t) => normalizeTicker(t)));
146
123
  return records.filter((r) => tickerSet.has(r.ticker));
@@ -156,95 +133,56 @@ function filterByPeriod(records, startDate, endDate) {
156
133
  });
157
134
  }
158
135
  // ── Live data fetching ───────────────────────────────────────────
159
- function parseCalendarTable(ch) {
160
- const records = [];
161
- const table = ch("table").first();
162
- if (!table.length)
163
- return records;
164
- const rows = table.find("tr").toArray();
165
- for (const row of rows) {
166
- const allCells = ch(row).find("td, th");
167
- if (allCells.length < 3)
168
- continue;
169
- // Skip header rows
170
- if (ch(row).find("th").length > 0)
171
- continue;
172
- const cellTexts = allCells
173
- .toArray()
174
- .map((cell) => ch(cell).text().trim());
175
- // Heuristic: find a cell that looks like an ASX code (2-4 uppercase letters)
176
- let ticker = "";
177
- let companyName = "";
178
- for (let i = 0; i < cellTexts.length; i++) {
179
- const stripped = cellTexts[i].trim().toUpperCase();
180
- if (stripped.length >= 2 &&
181
- stripped.length <= 4 &&
182
- /^[A-Z]+$/.test(stripped) &&
183
- !ticker) {
184
- ticker = stripped;
185
- // Next cell is usually the company name
186
- if (i + 1 < cellTexts.length) {
187
- companyName = cellTexts[i + 1];
188
- }
189
- break;
190
- }
191
- }
192
- if (!ticker)
193
- continue;
194
- // Look for date-like cells
195
- let dueDateStr = "";
196
- let lodgedDateStr = null;
197
- for (const text of cellTexts) {
198
- const parsed = tryParseDate(text);
199
- if (parsed) {
200
- const dateIso = formatDateIso(parsed);
201
- if (!dueDateStr) {
202
- dueDateStr = dateIso;
203
- }
204
- else if (!lodgedDateStr) {
205
- lodgedDateStr = dateIso;
206
- }
207
- }
208
- }
209
- if (!dueDateStr)
210
- continue;
211
- const quarterEnd = inferQuarterEnd(new Date(dueDateStr));
212
- const status = determineStatus(dueDateStr, lodgedDateStr);
213
- records.push({
214
- ticker,
215
- company_name: companyName,
216
- quarter_end: quarterEnd,
217
- due_date: dueDateStr,
218
- lodged_date: lodgedDateStr,
219
- status,
220
- });
221
- }
222
- return records;
223
- }
224
- export async function fetchCalendarLive() {
136
+ async function fetchTickerCalendar(ticker) {
137
+ const clean = normalizeTicker(ticker);
138
+ if (!isValidTicker(clean))
139
+ return [];
140
+ const url = ASX_MARKIT_API.replace("{ticker}", clean) + "?count=50";
225
141
  try {
226
- const ch = await fetchHtml(LISTCORP_UPCOMING_URL);
227
- return parseCalendarTable(ch);
142
+ const resp = await fetchJson(url, {
143
+ delay: 0.5,
144
+ userAgent: DEFAULT_USER_AGENT,
145
+ });
146
+ const companyName = resp.data?.displayName ?? clean;
147
+ const items = resp.data?.items ?? [];
148
+ const records = [];
149
+ for (const item of items) {
150
+ if (!is4CRelated(item))
151
+ continue;
152
+ const dateStr = item.date ?? "";
153
+ const lodgedDate = dateStr ? new Date(dateStr) : null;
154
+ if (!lodgedDate || isNaN(lodgedDate.getTime()))
155
+ continue;
156
+ const lodgedDateIso = formatDateIso(lodgedDate);
157
+ const quarterEnd = inferQuarterEnd(lodgedDate);
158
+ const dueDate = computeDueDate(quarterEnd);
159
+ const status = determineStatus(dueDate, lodgedDateIso);
160
+ records.push({
161
+ ticker: clean,
162
+ company_name: companyName,
163
+ quarter_end: quarterEnd,
164
+ due_date: dueDate,
165
+ lodged_date: lodgedDateIso,
166
+ status,
167
+ });
168
+ }
169
+ return records;
228
170
  }
229
171
  catch (err) {
230
172
  const msg = err instanceof Error ? err.message : String(err);
231
- console.error(`[error] Failed to fetch calendar page: ${msg}`);
173
+ console.error(`[error] Failed to fetch calendar for ${clean}: ${msg}`);
232
174
  return [];
233
175
  }
234
176
  }
177
+ export async function fetchCalendarLive() {
178
+ console.warn("[warn] fetchCalendarLive() requires explicit tickers with the Markit Digital API. Use fetchCalendar({ tickers }) instead.");
179
+ return [];
180
+ }
235
181
  // ── Main entry point ─────────────────────────────────────────────
236
- /**
237
- * Fetch and filter ASX 4C calendar entries.
238
- *
239
- * @param options.tickers - Comma-separated tickers or "all"
240
- * @param options.period - Period string (next_30d, Q1_2026, etc.)
241
- * @param options.records - Pre-fetched records (for testing / offline use)
242
- */
243
182
  export async function fetchCalendar(options) {
244
183
  const tickersInput = options?.tickers ?? "all";
245
184
  const periodStr = options?.period ?? "next_30d";
246
185
  const { start: startDate, end: endDate } = parsePeriod(periodStr);
247
- // Parse ticker filter
248
186
  let filterTickers = null;
249
187
  if (tickersInput.trim().toLowerCase() !== "all") {
250
188
  filterTickers = tickersInput
@@ -254,16 +192,27 @@ export async function fetchCalendar(options) {
254
192
  if (!filterTickers.length)
255
193
  filterTickers = null;
256
194
  }
257
- // Fetch data
258
- let records = options?.records ?? (await fetchCalendarLive());
195
+ let records = options?.records ?? [];
196
+ if (!options?.records) {
197
+ if (filterTickers) {
198
+ const allRecords = [];
199
+ for (const ticker of filterTickers) {
200
+ const tickerRecords = await fetchTickerCalendar(ticker);
201
+ allRecords.push(...tickerRecords);
202
+ }
203
+ records = allRecords;
204
+ }
205
+ else {
206
+ console.warn("[warn] asx_calendar_fetcher requires specific tickers. Pass tickers='BHP,RIO,...' instead of 'all'.");
207
+ return [];
208
+ }
209
+ }
259
210
  if (!records.length)
260
211
  return [];
261
- // Apply filters
262
212
  records = filterByPeriod(records, startDate, endDate);
263
213
  if (filterTickers) {
264
214
  records = filterByTickers(records, filterTickers);
265
215
  }
266
- // Sort by due_date ascending
267
216
  records.sort((a, b) => a.due_date.localeCompare(b.due_date));
268
217
  return records;
269
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"asx-calendar-fetcher.js","sourceRoot":"","sources":["../../src/investigation-tools/asx-calendar-fetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asx-calendar-fetcher.js","sourceRoot":"","sources":["../../src/investigation-tools/asx-calendar-fetcher.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,11 @@
2
2
  * bulk-asx-announcements.ts — Bulk ASX Announcement Fetcher
3
3
  *
4
4
  * Fetches recent ASX announcements (Appendix 3Y director trades, 4C cashflow
5
- * reports, 3B issue of securities) for multiple tickers. Returns structured
6
- * announcement records with URLs for PDF downloads.
5
+ * reports, 3B issue of securities) for multiple tickers via the ASX Markit
6
+ * Digital API. Returns structured announcement records.
7
7
  */
8
- /** Recognised ASX announcement type codes for bulk filtering. */
9
8
  export type AsxAnnouncementTypeCode = "3Y" | "4C" | "3B";
10
- /** All supported type codes. */
11
9
  export declare const ALL_TYPE_CODES: readonly AsxAnnouncementTypeCode[];
12
- /** A single ASX announcement record. */
13
10
  export interface AsxAnnouncementRecord {
14
11
  ticker: string;
15
12
  announcement_type: AsxAnnouncementTypeCode;
@@ -18,36 +15,15 @@ export interface AsxAnnouncementRecord {
18
15
  url: string;
19
16
  file_size: string | null;
20
17
  }
21
- /** Options for fetching announcements for a single ticker. */
22
18
  export interface FetchAnnouncementsOptions {
23
- /** Announcement types to match (default: all). */
24
19
  types?: AsxAnnouncementTypeCode[];
25
- /** How many days back to search (default: 90). */
26
20
  daysBack?: number;
27
- /** Delay in ms between API requests (default: 1000). */
28
21
  delayMs?: number;
29
22
  }
30
- /** Options for bulk-fetching across multiple tickers. */
31
23
  export interface BulkFetchOptions extends FetchAnnouncementsOptions {
32
- /** Callback invoked with progress info after each ticker. */
33
24
  onProgress?: (ticker: string, found: number, total: number) => void;
34
25
  }
35
- /**
36
- * Fetch announcements for a single ticker from the ASX API.
37
- *
38
- * Paginates up to {@link MAX_PAGES_PER_TICKER} pages and returns records
39
- * whose titles match the requested types within the date window.
40
- */
41
26
  export declare function fetchAnnouncementsForTicker(ticker: string, opts?: FetchAnnouncementsOptions): Promise<AsxAnnouncementRecord[]>;
42
- /**
43
- * Bulk-fetch announcements for multiple tickers.
44
- *
45
- * Fetches sequentially with rate-limiting between tickers to respect
46
- * ASX API fair-use expectations.
47
- */
48
27
  export declare function fetchBulkAnnouncements(tickers: string[], opts?: BulkFetchOptions): Promise<AsxAnnouncementRecord[]>;
49
- /**
50
- * Parse a comma-separated ticker string into an array of normalised tickers.
51
- */
52
28
  export declare function parseTickers(raw: string): string[];
53
29
  //# sourceMappingURL=bulk-asx-announcements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bulk-asx-announcements.d.ts","sourceRoot":"","sources":["../../src/investigation-tools/bulk-asx-announcements.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,iEAAiE;AACjE,MAAM,MAAM,uBAAuB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD,gCAAgC;AAChC,eAAO,MAAM,cAAc,EAAE,SAAS,uBAAuB,EAInD,CAAC;AAgBX,wCAAwC;AACxC,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,8DAA8D;AAC9D,MAAM,WAAW,yBAAyB;IACxC,kDAAkD;IAClD,KAAK,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAClC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,yDAAyD;AACzD,MAAM,WAAW,gBAAiB,SAAQ,yBAAyB;IACjE,6DAA6D;IAC7D,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAkFD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA8ElC;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA2BlC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlD"}
1
+ {"version":3,"file":"bulk-asx-announcements.d.ts","sourceRoot":"","sources":["../../src/investigation-tools/bulk-asx-announcements.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,MAAM,MAAM,uBAAuB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAE,SAAS,uBAAuB,EAInD,CAAC;AAqBX,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,yBAAyB;IACjE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AA8DD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAyElC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA0BlC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlD"}