athena-query-result-pager 0.3.6 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -25
- package/lib/index.d.ts +60 -13
- package/lib/index.js +54 -17
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,16 +3,22 @@
|
|
|
3
3
|

|
|
4
4
|

|
|
5
5
|
|
|
6
|
-
Paginate [AWS Athena](https://docs.aws.amazon.com/athena/latest/ug/v3-sdk.html) **`GetQueryResults`** calls with AWS SDK v3. This library walks **`NextToken`**, parses tabular rows with [athena-query-result-parser](https://www.npmjs.com/package/athena-query-result-parser), and forwards **`MaxResults
|
|
6
|
+
Paginate [AWS Athena](https://docs.aws.amazon.com/athena/latest/ug/v3-sdk.html) **`GetQueryResults`** calls with AWS SDK v3. This library walks **`NextToken`**, parses tabular rows with [athena-query-result-parser](https://www.npmjs.com/package/athena-query-result-parser) (0.4+), and forwards **`MaxResults`**, **`QueryResultType`**, and optional **`ParseResultSetOptions`** from **[PagerOptions](#options)** on every page fetch.
|
|
7
|
+
|
|
8
|
+
Page-level and row-level APIs are symmetric: use the base method for raw **`ParsedRow`** values, or the `*With` / `rowParser` variant for custom types.
|
|
7
9
|
|
|
8
10
|
## Features
|
|
9
11
|
|
|
10
12
|
- Sends paginated Athena **`GetQueryResults`** requests (`NextToken` / **`MaxResults`**).
|
|
11
|
-
- Forwards **`QueryResultType`** from the pager constructor (
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
13
|
+
- Forwards **`QueryResultType`** from the pager constructor on each request — accepts the full AWS SDK enum (**`QueryResultType.DATA_ROWS`**, **`QueryResultType.DATA_MANIFEST`**, …). Use **`QueryResultType.DATA_MANIFEST`** for CTAS / UNLOAD / INSERT manifest workflows when Athena allows it.
|
|
14
|
+
- Forwards **`parseResultSetOptions`** to every parser invocation — **`columnCountMismatchBehavior`**, **`skipHeaderRow`**, **`headerRowDetectionStrategy`**, and other [parser 0.4+ options](https://www.npmjs.com/package/athena-query-result-parser).
|
|
15
|
+
- **Paired APIs** for raw **`ParsedRow`** dictionaries versus typed rows via **`RowParser<T>`**:
|
|
16
|
+
- Page level: **`fetchPage`** / **`fetchPageWith`**, **`iteratePages`** / **`iteratePagesWith`**
|
|
17
|
+
- Row level: **`iterateRows`** (no parser) / **`iterateRows`** (with **`rowParser`**)
|
|
18
|
+
- Async generators iterate **page-by-page** or **row-by-row** without holding full result sets in memory (only one page of rows is buffered at a time for row iterators).
|
|
19
|
+
- Fail-fast validation: **`maxResults`** must be an integer in **`1..1000`**; **`queryExecutionId`** must be non-empty (**`fetchPage`**, **`fetchPageWith`**).
|
|
20
|
+
- Re-exports **`QueryResultType`**, parser types (**`ParseResultSetOptions`**, **`ParsedRow`**, **`RowParser<T>`**, …), and parser utilities (**`rowToTypedObject`**, **`EXTRA_COLUMNS_KEY`**, …) from the package entry point.
|
|
21
|
+
- Helpers: **`AthenaQueryResultPager.hasNextPage`**, **`getLastHeaderRowDecision()`**, **`reset()`** when reusing one pager across different executions.
|
|
16
22
|
|
|
17
23
|
## Installation
|
|
18
24
|
|
|
@@ -28,17 +34,17 @@ yarn add athena-query-result-pager
|
|
|
28
34
|
pnpm add athena-query-result-pager
|
|
29
35
|
```
|
|
30
36
|
|
|
31
|
-
Runtime dependencies
|
|
37
|
+
Runtime dependencies: `@aws-sdk/client-athena`, `athena-query-result-parser` **`^0.4.0`**. Your application typically already instantiates **`AthenaClient`** with credentials and Region.
|
|
32
38
|
|
|
33
39
|
## Usage
|
|
34
40
|
|
|
35
41
|
### Create a pager instance
|
|
36
42
|
|
|
37
|
-
**`AthenaQueryResultPager`** options
|
|
43
|
+
**`AthenaQueryResultPager`** normalizes options at construction time (**defaults**: **`maxResults`** `1000`, **`queryResultType`** `QueryResultType.DATA_ROWS`). **`maxResults`** and **`queryResultType`** are sent on every **`GetQueryResults`** call; **`parseResultSetOptions`** (when set) is applied on every page parse.
|
|
38
44
|
|
|
39
45
|
```ts
|
|
40
|
-
import { AthenaClient
|
|
41
|
-
import { AthenaQueryResultPager } from 'athena-query-result-pager';
|
|
46
|
+
import { AthenaClient } from '@aws-sdk/client-athena';
|
|
47
|
+
import { AthenaQueryResultPager, QueryResultType } from 'athena-query-result-pager';
|
|
42
48
|
|
|
43
49
|
const client = new AthenaClient({ region: 'us-east-1' });
|
|
44
50
|
const pager = new AthenaQueryResultPager(client, {
|
|
@@ -47,7 +53,17 @@ const pager = new AthenaQueryResultPager(client, {
|
|
|
47
53
|
});
|
|
48
54
|
|
|
49
55
|
// Manifest-style outputs (only for supported Athena query types):
|
|
50
|
-
|
|
56
|
+
const manifestPager = new AthenaQueryResultPager(client, {
|
|
57
|
+
queryResultType: QueryResultType.DATA_MANIFEST,
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Parser options (athena-query-result-parser 0.4+), applied on every page parse:
|
|
61
|
+
const strictPager = new AthenaQueryResultPager(client, {
|
|
62
|
+
parseResultSetOptions: {
|
|
63
|
+
columnCountMismatchBehavior: 'throw',
|
|
64
|
+
headerRowDetectionStrategy: 'safe',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
51
67
|
```
|
|
52
68
|
|
|
53
69
|
### Fetch one page (raw rows)
|
|
@@ -71,13 +87,13 @@ interface MyRow {
|
|
|
71
87
|
id: string;
|
|
72
88
|
name: string;
|
|
73
89
|
}
|
|
74
|
-
const rowParser: RowParser<MyRow> = (row) =>
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
90
|
+
const rowParser: RowParser<MyRow> = (row) => {
|
|
91
|
+
if (row.name == null || row.name === '') return null;
|
|
92
|
+
return { id: row['id'] ?? '', name: row.name };
|
|
93
|
+
};
|
|
78
94
|
|
|
79
95
|
const page = await pager.fetchPageWith('query-execution-id', rowParser);
|
|
80
|
-
// page.rows is MyRow[]
|
|
96
|
+
// page.rows is MyRow[] (rows where rowParser returned null are omitted)
|
|
81
97
|
```
|
|
82
98
|
|
|
83
99
|
### Iterate pages (async generator)
|
|
@@ -96,17 +112,31 @@ for await (const page of pager.iteratePagesWith('query-execution-id', rowParser)
|
|
|
96
112
|
|
|
97
113
|
### Iterate row by row (memory-efficient)
|
|
98
114
|
|
|
99
|
-
Requires a **`RowParser`** mapping **`ParsedRow`** to your row type (**`iterateRows`** wraps **`iteratePagesWith`**).
|
|
100
|
-
|
|
101
115
|
```ts
|
|
116
|
+
// Raw ParsedRow rows (delegates to iteratePages)
|
|
117
|
+
for await (const row of pager.iterateRows('query-execution-id')) {
|
|
118
|
+
console.log(row);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// With custom row parser (delegates to iteratePagesWith)
|
|
102
122
|
for await (const row of pager.iterateRows('query-execution-id', rowParser)) {
|
|
103
123
|
console.log(row);
|
|
104
124
|
}
|
|
105
125
|
```
|
|
106
126
|
|
|
127
|
+
### Inspect header-row skipping
|
|
128
|
+
|
|
129
|
+
When **`parseResultSetOptions.skipHeaderRow`** is **`'auto'`**, check whether the first row was skipped:
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
await pager.fetchPage('query-execution-id');
|
|
133
|
+
const decision = pager.getLastHeaderRowDecision();
|
|
134
|
+
console.log(decision?.skipped, decision?.reason);
|
|
135
|
+
```
|
|
136
|
+
|
|
107
137
|
### Reset before another execution
|
|
108
138
|
|
|
109
|
-
Reuse the same pager for a **new** **`queryExecutionId`** after
|
|
139
|
+
Reuse the same pager for a **new** **`queryExecutionId`** after clearing the bundled parser state:
|
|
110
140
|
|
|
111
141
|
```ts
|
|
112
142
|
pager.reset();
|
|
@@ -121,9 +151,15 @@ pager.reset();
|
|
|
121
151
|
- Valid range: integer **`1..1000`** (Athena **`GetQueryResults`** limit).
|
|
122
152
|
- Throws **`RangeError`** when invalid (**constructor**).
|
|
123
153
|
- **`queryResultType?: QueryResultType`**
|
|
124
|
-
-
|
|
154
|
+
- Type is the AWS SDK **`QueryResultType`** enum (**`QueryResultType.DATA_ROWS`**, **`QueryResultType.DATA_MANIFEST`**, …) — not restricted to a single literal.
|
|
155
|
+
- Import **`QueryResultType`** from **`athena-query-result-pager`** (re-exported from **`@aws-sdk/client-athena`**).
|
|
125
156
|
- Default **`QueryResultType.DATA_ROWS`**.
|
|
126
157
|
- When set (**including default**), the value appears on **`fetchPage`**, **`fetchPageWith`**, and iterator-driven calls alongside **`MaxResults`**.
|
|
158
|
+
- **`parseResultSetOptions?: ParseResultSetOptions`**
|
|
159
|
+
- Forwarded to every **`AthenaQueryResultParser.parseResultSet`** / **`parseResultSetWith`** call on this pager.
|
|
160
|
+
- Use for **`columnCountMismatchBehavior`** (`'silent' | 'throw' | 'warn' | 'extra'`), **`skipHeaderRow`**, **`headerRowDetectionStrategy`**, **`duplicateColumnNames`**, and other options documented in **`athena-query-result-parser`**.
|
|
161
|
+
- Import **`ParseResultSetOptions`** from **`athena-query-result-pager`** (re-exported).
|
|
162
|
+
- Inspect header skipping via **`pager.getLastHeaderRowDecision()`** after a fetch.
|
|
127
163
|
|
|
128
164
|
### Method input validation
|
|
129
165
|
|
|
@@ -141,20 +177,25 @@ Both throw if **`queryExecutionId`** is empty or whitespace-only (before invokin
|
|
|
141
177
|
- **`fetchPageWith<T>(queryExecutionId, rowParser, nextToken?)`** → **`Promise<PageResult<T>>`**
|
|
142
178
|
- **`iteratePages(queryExecutionId)`** → **`AsyncGenerator<PageResult<ParsedRow>>`**
|
|
143
179
|
- **`iteratePagesWith<T>(queryExecutionId, rowParser)`** → **`AsyncGenerator<PageResult<T>>`**
|
|
180
|
+
- **`iterateRows(queryExecutionId)`** → **`AsyncGenerator<ParsedRow>`**
|
|
144
181
|
- **`iterateRows<T>(queryExecutionId, rowParser)`** → **`AsyncGenerator<T>`**
|
|
145
|
-
- **`
|
|
182
|
+
- **`getLastHeaderRowDecision()`** → **`HeaderRowDecision | null`**
|
|
183
|
+
- **`reset()`** — clears bundled parser state (**header row bookkeeping** resets).
|
|
146
184
|
- **`static hasNextPage<T>(pageResult: PageResult<T>)`** → **`boolean`**
|
|
147
185
|
|
|
148
|
-
### Types
|
|
186
|
+
### Types and re-exports
|
|
149
187
|
|
|
150
188
|
- **`PageResult<T>`** — **`{ rows: T[]; nextToken?: string; rowCount: number }`**
|
|
151
|
-
- **`PagerOptions`** — **`{ maxResults?: number; queryResultType?: QueryResultType
|
|
152
|
-
- **`
|
|
189
|
+
- **`PagerOptions`** — **`{ maxResults?: number; queryResultType?: QueryResultType; parseResultSetOptions?: ParseResultSetOptions }`**
|
|
190
|
+
- **`QueryResultType`** — enum re-exported from **`@aws-sdk/client-athena`** (**`DATA_ROWS`**, **`DATA_MANIFEST`**, …)
|
|
191
|
+
- **`ParseResultSetOptions`**, **`ColumnCountMismatchBehavior`**, **`HeaderRowDecision`**, **`ParsedRow`**, **`RowParser<T>`**, **`TypedParsedRow`**, **`AthenaTypedValue`** — re-exported from **`athena-query-result-parser`**
|
|
192
|
+
- **`EXTRA_COLUMNS_KEY`**, **`toNumber`**, **`toBoolean`**, **`toDate`**, **`headersFromMeta`**, **`rowToObject`**, **`rowToTypedObject`**, **`isHeaderRow`** — re-exported parser utilities
|
|
153
193
|
|
|
154
194
|
## Requirements
|
|
155
195
|
|
|
156
196
|
- Node.js **`>= 20.0.0`**
|
|
157
|
-
-
|
|
197
|
+
- **`@aws-sdk/client-athena`** — provide **`AthenaClient`**; **`QueryResultType`** is also re-exported by this package
|
|
198
|
+
- **`athena-query-result-parser`** **`^0.4.0`**
|
|
158
199
|
|
|
159
200
|
## License
|
|
160
201
|
|
package/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AthenaClient, QueryResultType } from '@aws-sdk/client-athena';
|
|
2
|
-
import { type ParsedRow, type RowParser } from 'athena-query-result-parser';
|
|
2
|
+
import { type HeaderRowDecision, type ParseResultSetOptions, type ParsedRow, type RowParser } from 'athena-query-result-parser';
|
|
3
3
|
/**
|
|
4
|
-
* One page of Athena query
|
|
4
|
+
* One page of Athena query results returned by {@link AthenaQueryResultPager} after a fetch or generator step.
|
|
5
5
|
*
|
|
6
6
|
* @typeParam T - Row representation; use {@link ParsedRow} or a type produced by {@link RowParser}.
|
|
7
7
|
*/
|
|
@@ -23,39 +23,63 @@ export interface PagerOptions {
|
|
|
23
23
|
*/
|
|
24
24
|
maxResults?: number;
|
|
25
25
|
/**
|
|
26
|
-
* `
|
|
27
|
-
* @
|
|
26
|
+
* Athena `GetQueryResults` {@link QueryResultType} — any member of the AWS SDK enum
|
|
27
|
+
* (for example {@link QueryResultType.DATA_ROWS} for tabular rows or {@link QueryResultType.DATA_MANIFEST}
|
|
28
|
+
* for CTAS / UNLOAD / INSERT manifest outputs when Athena supports them).
|
|
29
|
+
* @defaultValue {@link QueryResultType.DATA_ROWS}
|
|
28
30
|
*/
|
|
29
31
|
queryResultType?: QueryResultType;
|
|
32
|
+
/**
|
|
33
|
+
* Options forwarded to every {@link AthenaQueryResultParser.parseResultSet} /
|
|
34
|
+
* {@link AthenaQueryResultParser.parseResultSetWith} call (for example
|
|
35
|
+
* `columnCountMismatchBehavior`, `skipHeaderRow`, `headerRowDetectionStrategy`).
|
|
36
|
+
*
|
|
37
|
+
* @see ParseResultSetOptions
|
|
38
|
+
*/
|
|
39
|
+
parseResultSetOptions?: ParseResultSetOptions;
|
|
30
40
|
}
|
|
31
41
|
/**
|
|
32
42
|
* Paginates Athena `GetQueryResults` (AWS SDK for JavaScript v3): walks `NextToken` and parses tabular rows with
|
|
33
43
|
* `athena-query-result-parser` when needed.
|
|
34
44
|
*
|
|
35
|
-
*
|
|
45
|
+
* Provides paired APIs for raw {@link ParsedRow} access versus custom {@link RowParser} mapping at the page level
|
|
46
|
+
* (`fetchPage` / `fetchPageWith`, `iteratePages` / `iteratePagesWith`) and at the row level
|
|
47
|
+
* (`iterateRows` with or without `rowParser`).
|
|
48
|
+
*
|
|
49
|
+
* Constructor `maxResults`, `queryResultType`, and optional `parseResultSetOptions` are applied on every
|
|
50
|
+
* `GetQueryResults` request and {@link AthenaQueryResultParser} invocation respectively.
|
|
36
51
|
*
|
|
37
52
|
* @see {@link https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/athena/command/GetQueryResultsCommand/ | GetQueryResultsCommand (AWS SDK)}
|
|
38
53
|
*/
|
|
39
54
|
export declare class AthenaQueryResultPager {
|
|
40
55
|
/**
|
|
56
|
+
* Reports whether another results page is available for the same query execution.
|
|
57
|
+
*
|
|
41
58
|
* @typeParam T - Row type held in {@link PageResult.rows}.
|
|
42
59
|
* @param pageResult - The most recently retrieved page from `fetchPage`, `fetchPageWith`, or a page iterator.
|
|
43
60
|
* @returns `true` when {@link PageResult.nextToken} is defined and another page should be fetched.
|
|
44
61
|
*/
|
|
45
62
|
static hasNextPage<T>(pageResult: PageResult<T>): boolean;
|
|
63
|
+
/** SDK v3 client used for every `GetQueryResults` call. */
|
|
46
64
|
private readonly client;
|
|
47
65
|
/** Normalized pager settings (every field set after merging defaults). */
|
|
48
66
|
private readonly options;
|
|
67
|
+
/** Parser options applied on every page parse (undefined uses parser defaults). */
|
|
68
|
+
private readonly parseResultSetOptions?;
|
|
49
69
|
/** Stateful parser reused across calls; recreated by {@link AthenaQueryResultPager.reset}. */
|
|
50
70
|
private parser;
|
|
51
71
|
/**
|
|
72
|
+
* Creates a pager bound to `client` with optional per-request defaults.
|
|
73
|
+
*
|
|
52
74
|
* @param client - SDK v3 `AthenaClient` used to call `GetQueryResults`.
|
|
53
|
-
* @param options - Optional `MaxResults` and `
|
|
75
|
+
* @param options - Optional `MaxResults`, `QueryResultType`, and `ParseResultSetOptions`; defaults apply when omitted.
|
|
54
76
|
* @throws {RangeError} When `maxResults` is not an integer in `1..1000` inclusive.
|
|
55
77
|
*/
|
|
56
78
|
constructor(client: AthenaClient, options?: PagerOptions);
|
|
57
79
|
/**
|
|
58
|
-
* Retrieves a single results page
|
|
80
|
+
* Retrieves a single results page as dictionary-shaped {@link ParsedRow} values.
|
|
81
|
+
*
|
|
82
|
+
* Uses {@link AthenaQueryResultParser.parseResultSet} on the AWS response.
|
|
59
83
|
*
|
|
60
84
|
* @param queryExecutionId - Athena query execution identifier.
|
|
61
85
|
* @param nextToken - Pass `undefined` first; subsequent calls use {@link PageResult.nextToken}.
|
|
@@ -66,6 +90,8 @@ export declare class AthenaQueryResultPager {
|
|
|
66
90
|
/**
|
|
67
91
|
* Retrieves one page and maps each {@link ParsedRow} through `rowParser`.
|
|
68
92
|
*
|
|
93
|
+
* Uses {@link AthenaQueryResultParser.parseResultSetWith} on the AWS response.
|
|
94
|
+
*
|
|
69
95
|
* @typeParam T - Output type produced by `rowParser`.
|
|
70
96
|
* @param queryExecutionId - Athena query execution identifier.
|
|
71
97
|
* @param rowParser - Converts each dictionary row into `T`.
|
|
@@ -75,14 +101,14 @@ export declare class AthenaQueryResultPager {
|
|
|
75
101
|
*/
|
|
76
102
|
fetchPageWith<T>(queryExecutionId: string, rowParser: RowParser<T>, nextToken?: string): Promise<PageResult<T>>;
|
|
77
103
|
/**
|
|
78
|
-
* Lazily walks all pages for an execution, yielding {@link PageResult} of {@link ParsedRow}
|
|
104
|
+
* Lazily walks all pages for an execution, yielding one {@link PageResult} of {@link ParsedRow} per step.
|
|
79
105
|
*
|
|
80
106
|
* @param queryExecutionId - Athena query execution identifier.
|
|
81
107
|
* @yields One page at a time until AWS returns no `NextToken`.
|
|
82
108
|
*/
|
|
83
109
|
iteratePages(queryExecutionId: string): AsyncGenerator<PageResult<ParsedRow>>;
|
|
84
110
|
/**
|
|
85
|
-
* Same as {@link AthenaQueryResultPager.iteratePages} but
|
|
111
|
+
* Same as {@link AthenaQueryResultPager.iteratePages} but maps each row through `rowParser` on every page.
|
|
86
112
|
*
|
|
87
113
|
* @typeParam T - Output type emitted in {@link PageResult.rows}.
|
|
88
114
|
* @param queryExecutionId - Athena query execution identifier.
|
|
@@ -90,21 +116,42 @@ export declare class AthenaQueryResultPager {
|
|
|
90
116
|
* @yields Successive {@link PageResult} values whose `rows` are typed as `T`.
|
|
91
117
|
*/
|
|
92
118
|
iteratePagesWith<T>(queryExecutionId: string, rowParser: RowParser<T>): AsyncGenerator<PageResult<T>>;
|
|
119
|
+
/**
|
|
120
|
+
* Flattens {@link AthenaQueryResultPager.iteratePages} into individual {@link ParsedRow} values (one row per `next()`).
|
|
121
|
+
*
|
|
122
|
+
* Only one page of rows is held in memory at a time.
|
|
123
|
+
*
|
|
124
|
+
* @param queryExecutionId - Athena query execution identifier.
|
|
125
|
+
* @yields Each dictionary-shaped row in execution order.
|
|
126
|
+
*/
|
|
127
|
+
iterateRows(queryExecutionId: string): AsyncGenerator<ParsedRow>;
|
|
93
128
|
/**
|
|
94
129
|
* Flattens {@link AthenaQueryResultPager.iteratePagesWith} into individual `T` values (one row per `next()`).
|
|
95
130
|
*
|
|
131
|
+
* Only one page of rows is held in memory at a time.
|
|
132
|
+
*
|
|
96
133
|
* @typeParam T - Output type produced by `rowParser`.
|
|
97
134
|
* @param queryExecutionId - Athena query execution identifier.
|
|
98
135
|
* @param rowParser - Converts each parsed row into `T`.
|
|
99
|
-
* @yields Each
|
|
136
|
+
* @yields Each transformed row in execution order.
|
|
100
137
|
*/
|
|
101
138
|
iterateRows<T>(queryExecutionId: string, rowParser: RowParser<T>): AsyncGenerator<T>;
|
|
102
139
|
/**
|
|
103
|
-
*
|
|
140
|
+
* Returns the bundled parser's most recent header-row decision.
|
|
141
|
+
*
|
|
142
|
+
* Useful when {@link PagerOptions.parseResultSetOptions} uses `skipHeaderRow: 'auto'`.
|
|
143
|
+
*
|
|
144
|
+
* @returns The last {@link HeaderRowDecision}, or `null` before any parse on this pager.
|
|
145
|
+
*/
|
|
146
|
+
getLastHeaderRowDecision(): HeaderRowDecision | null;
|
|
147
|
+
/**
|
|
148
|
+
* Clears the bundled {@link AthenaQueryResultParser} state so header-row handling does not leak between queries.
|
|
104
149
|
*
|
|
105
150
|
* Call when reusing this pager for a different `queryExecutionId` than the previous parse sequence.
|
|
106
151
|
*/
|
|
107
152
|
reset(): void;
|
|
108
153
|
}
|
|
109
|
-
/** Re-exports
|
|
110
|
-
export
|
|
154
|
+
/** Re-exports {@link QueryResultType} from `@aws-sdk/client-athena`. */
|
|
155
|
+
export { QueryResultType } from '@aws-sdk/client-athena';
|
|
156
|
+
export { EXTRA_COLUMNS_KEY, headersFromMeta, isHeaderRow, rowToObject, rowToTypedObject, toBoolean, toDate, toNumber, } from 'athena-query-result-parser';
|
|
157
|
+
export type { AthenaTypedValue, ColumnCountMismatchBehavior, HeaderRowDecision, ParseResultSetOptions, ParsedRow, RowParser, TypedParsedRow, } from 'athena-query-result-parser';
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AthenaQueryResultPager = void 0;
|
|
3
|
+
exports.toNumber = exports.toDate = exports.toBoolean = exports.rowToTypedObject = exports.rowToObject = exports.isHeaderRow = exports.headersFromMeta = exports.EXTRA_COLUMNS_KEY = exports.QueryResultType = exports.AthenaQueryResultPager = void 0;
|
|
4
4
|
const client_athena_1 = require("@aws-sdk/client-athena");
|
|
5
5
|
const athena_query_result_parser_1 = require("athena-query-result-parser");
|
|
6
6
|
/** Default maximum number of result rows requested per {@link AthenaQueryResultPager} API call (`MaxResults`). */
|
|
@@ -15,12 +15,19 @@ const DEFAULT_QUERY_RESULT_TYPE = client_athena_1.QueryResultType.DATA_ROWS;
|
|
|
15
15
|
* Paginates Athena `GetQueryResults` (AWS SDK for JavaScript v3): walks `NextToken` and parses tabular rows with
|
|
16
16
|
* `athena-query-result-parser` when needed.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* Provides paired APIs for raw {@link ParsedRow} access versus custom {@link RowParser} mapping at the page level
|
|
19
|
+
* (`fetchPage` / `fetchPageWith`, `iteratePages` / `iteratePagesWith`) and at the row level
|
|
20
|
+
* (`iterateRows` with or without `rowParser`).
|
|
21
|
+
*
|
|
22
|
+
* Constructor `maxResults`, `queryResultType`, and optional `parseResultSetOptions` are applied on every
|
|
23
|
+
* `GetQueryResults` request and {@link AthenaQueryResultParser} invocation respectively.
|
|
19
24
|
*
|
|
20
25
|
* @see {@link https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/athena/command/GetQueryResultsCommand/ | GetQueryResultsCommand (AWS SDK)}
|
|
21
26
|
*/
|
|
22
27
|
class AthenaQueryResultPager {
|
|
23
28
|
/**
|
|
29
|
+
* Reports whether another results page is available for the same query execution.
|
|
30
|
+
*
|
|
24
31
|
* @typeParam T - Row type held in {@link PageResult.rows}.
|
|
25
32
|
* @param pageResult - The most recently retrieved page from `fetchPage`, `fetchPageWith`, or a page iterator.
|
|
26
33
|
* @returns `true` when {@link PageResult.nextToken} is defined and another page should be fetched.
|
|
@@ -29,8 +36,10 @@ class AthenaQueryResultPager {
|
|
|
29
36
|
return pageResult.nextToken !== undefined;
|
|
30
37
|
}
|
|
31
38
|
/**
|
|
39
|
+
* Creates a pager bound to `client` with optional per-request defaults.
|
|
40
|
+
*
|
|
32
41
|
* @param client - SDK v3 `AthenaClient` used to call `GetQueryResults`.
|
|
33
|
-
* @param options - Optional `MaxResults` and `
|
|
42
|
+
* @param options - Optional `MaxResults`, `QueryResultType`, and `ParseResultSetOptions`; defaults apply when omitted.
|
|
34
43
|
* @throws {RangeError} When `maxResults` is not an integer in `1..1000` inclusive.
|
|
35
44
|
*/
|
|
36
45
|
constructor(client, options = {}) {
|
|
@@ -43,10 +52,13 @@ class AthenaQueryResultPager {
|
|
|
43
52
|
maxResults,
|
|
44
53
|
queryResultType: options.queryResultType ?? DEFAULT_QUERY_RESULT_TYPE,
|
|
45
54
|
};
|
|
55
|
+
this.parseResultSetOptions = options.parseResultSetOptions;
|
|
46
56
|
this.parser = new athena_query_result_parser_1.AthenaQueryResultParser();
|
|
47
57
|
}
|
|
48
58
|
/**
|
|
49
|
-
* Retrieves a single results page
|
|
59
|
+
* Retrieves a single results page as dictionary-shaped {@link ParsedRow} values.
|
|
60
|
+
*
|
|
61
|
+
* Uses {@link AthenaQueryResultParser.parseResultSet} on the AWS response.
|
|
50
62
|
*
|
|
51
63
|
* @param queryExecutionId - Athena query execution identifier.
|
|
52
64
|
* @param nextToken - Pass `undefined` first; subsequent calls use {@link PageResult.nextToken}.
|
|
@@ -64,7 +76,7 @@ class AthenaQueryResultPager {
|
|
|
64
76
|
QueryResultType: this.options.queryResultType,
|
|
65
77
|
};
|
|
66
78
|
const response = await this.client.send(new client_athena_1.GetQueryResultsCommand(input));
|
|
67
|
-
const rows = this.parser.parseResultSet(response.ResultSet);
|
|
79
|
+
const rows = this.parser.parseResultSet(response.ResultSet, this.parseResultSetOptions);
|
|
68
80
|
return {
|
|
69
81
|
rows,
|
|
70
82
|
nextToken: response.NextToken,
|
|
@@ -74,6 +86,8 @@ class AthenaQueryResultPager {
|
|
|
74
86
|
/**
|
|
75
87
|
* Retrieves one page and maps each {@link ParsedRow} through `rowParser`.
|
|
76
88
|
*
|
|
89
|
+
* Uses {@link AthenaQueryResultParser.parseResultSetWith} on the AWS response.
|
|
90
|
+
*
|
|
77
91
|
* @typeParam T - Output type produced by `rowParser`.
|
|
78
92
|
* @param queryExecutionId - Athena query execution identifier.
|
|
79
93
|
* @param rowParser - Converts each dictionary row into `T`.
|
|
@@ -92,7 +106,7 @@ class AthenaQueryResultPager {
|
|
|
92
106
|
QueryResultType: this.options.queryResultType,
|
|
93
107
|
};
|
|
94
108
|
const response = await this.client.send(new client_athena_1.GetQueryResultsCommand(input));
|
|
95
|
-
const rows = this.parser.parseResultSetWith(response.ResultSet, rowParser);
|
|
109
|
+
const rows = this.parser.parseResultSetWith(response.ResultSet, rowParser, this.parseResultSetOptions);
|
|
96
110
|
return {
|
|
97
111
|
rows,
|
|
98
112
|
nextToken: response.NextToken,
|
|
@@ -100,7 +114,7 @@ class AthenaQueryResultPager {
|
|
|
100
114
|
};
|
|
101
115
|
}
|
|
102
116
|
/**
|
|
103
|
-
* Lazily walks all pages for an execution, yielding {@link PageResult} of {@link ParsedRow}
|
|
117
|
+
* Lazily walks all pages for an execution, yielding one {@link PageResult} of {@link ParsedRow} per step.
|
|
104
118
|
*
|
|
105
119
|
* @param queryExecutionId - Athena query execution identifier.
|
|
106
120
|
* @yields One page at a time until AWS returns no `NextToken`.
|
|
@@ -114,7 +128,7 @@ class AthenaQueryResultPager {
|
|
|
114
128
|
} while (nextToken);
|
|
115
129
|
}
|
|
116
130
|
/**
|
|
117
|
-
* Same as {@link AthenaQueryResultPager.iteratePages} but
|
|
131
|
+
* Same as {@link AthenaQueryResultPager.iteratePages} but maps each row through `rowParser` on every page.
|
|
118
132
|
*
|
|
119
133
|
* @typeParam T - Output type emitted in {@link PageResult.rows}.
|
|
120
134
|
* @param queryExecutionId - Athena query execution identifier.
|
|
@@ -130,28 +144,51 @@ class AthenaQueryResultPager {
|
|
|
130
144
|
} while (nextToken);
|
|
131
145
|
}
|
|
132
146
|
/**
|
|
133
|
-
*
|
|
147
|
+
* Shared implementation for {@link AthenaQueryResultPager.iterateRows} overloads.
|
|
134
148
|
*
|
|
135
|
-
* @
|
|
136
|
-
* @
|
|
137
|
-
* @param rowParser - Converts each parsed row into `T`.
|
|
138
|
-
* @yields Each data row in execution order without buffering the full result set in memory.
|
|
149
|
+
* Delegates to {@link AthenaQueryResultPager.iteratePages} when `rowParser` is omitted; otherwise to
|
|
150
|
+
* {@link AthenaQueryResultPager.iteratePagesWith}.
|
|
139
151
|
*/
|
|
140
152
|
async *iterateRows(queryExecutionId, rowParser) {
|
|
141
|
-
|
|
153
|
+
const pages = rowParser
|
|
154
|
+
? this.iteratePagesWith(queryExecutionId, rowParser)
|
|
155
|
+
: this.iteratePages(queryExecutionId);
|
|
156
|
+
for await (const page of pages) {
|
|
142
157
|
for (const row of page.rows) {
|
|
143
158
|
yield row;
|
|
144
159
|
}
|
|
145
160
|
}
|
|
146
161
|
}
|
|
147
162
|
/**
|
|
148
|
-
*
|
|
163
|
+
* Returns the bundled parser's most recent header-row decision.
|
|
164
|
+
*
|
|
165
|
+
* Useful when {@link PagerOptions.parseResultSetOptions} uses `skipHeaderRow: 'auto'`.
|
|
166
|
+
*
|
|
167
|
+
* @returns The last {@link HeaderRowDecision}, or `null` before any parse on this pager.
|
|
168
|
+
*/
|
|
169
|
+
getLastHeaderRowDecision() {
|
|
170
|
+
return this.parser.getLastHeaderRowDecision();
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Clears the bundled {@link AthenaQueryResultParser} state so header-row handling does not leak between queries.
|
|
149
174
|
*
|
|
150
175
|
* Call when reusing this pager for a different `queryExecutionId` than the previous parse sequence.
|
|
151
176
|
*/
|
|
152
177
|
reset() {
|
|
153
|
-
this.parser
|
|
178
|
+
this.parser.reset();
|
|
154
179
|
}
|
|
155
180
|
}
|
|
156
181
|
exports.AthenaQueryResultPager = AthenaQueryResultPager;
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQWlJO0FBQ2pJLDJFQUFxRztBQUVyRyxrSEFBa0g7QUFDbEgsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFDakMsc0VBQXNFO0FBQ3RFLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUMxQixzRUFBc0U7QUFDdEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBRTdCLHVFQUF1RTtBQUN2RSxNQUFNLHlCQUF5QixHQUFHLCtCQUFlLENBQUMsU0FBUyxDQUFDO0FBZ0M1RDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxzQkFBc0I7SUFFakM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUksVUFBeUI7UUFDN0MsT0FBTyxVQUFVLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0lBUUQ7Ozs7T0FJRztJQUNILFlBQVksTUFBb0IsRUFBRSxVQUF3QixFQUFFO1FBQzFELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksbUJBQW1CLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxHQUFHLGVBQWUsSUFBSSxVQUFVLEdBQUcsZUFBZSxFQUFFLENBQUM7WUFDbEcsTUFBTSxJQUFJLFVBQVUsQ0FDbEIsaURBQWlELGVBQWUsUUFBUSxlQUFlLFNBQVMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQ3JILENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVU7WUFDVixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsSUFBSSx5QkFBeUI7U0FDdEUsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxv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RztJQUNILEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FDaEIsZ0JBQXdCLEVBQ3hCLFNBQXVCO1FBRXZCLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzVFLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM1QixNQUFNLEdBQUcsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLG9EQUF1QixFQUFFLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBL0tELHdEQStLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0aGVuYUNsaWVudCwgR2V0UXVlcnlSZXN1bHRzQ29tbWFuZCwgUXVlcnlSZXN1bHRUeXBlLCB0eXBlIEdldFF1ZXJ5UmVzdWx0c0NvbW1hbmRJbnB1dCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1hdGhlbmEnO1xuaW1wb3J0IHsgQXRoZW5hUXVlcnlSZXN1bHRQYXJzZXIsIHR5cGUgUGFyc2VkUm93LCB0eXBlIFJvd1BhcnNlciB9IGZyb20gJ2F0aGVuYS1xdWVyeS1yZXN1bHQtcGFyc2VyJztcblxuLyoqIERlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgcmVzdWx0IHJvd3MgcmVxdWVzdGVkIHBlciB7QGxpbmsgQXRoZW5hUXVlcnlSZXN1bHRQYWdlcn0gQVBJIGNhbGwgKGBNYXhSZXN1bHRzYCkuICovXG5jb25zdCBERUZBVUxUX01BWF9SRVNVTFRTID0gMTAwMDtcbi8qKiBNaW5pbXVtIGBNYXhSZXN1bHRzYCB2YWx1ZSBhbGxvd2VkIGJ5IEF0aGVuYSBgR2V0UXVlcnlSZXN1bHRzYC4gKi9cbmNvbnN0IE1JTl9NQVhfUkVTVUxUUyA9IDE7XG4vKiogTWF4aW11bSBgTWF4UmVzdWx0c2AgdmFsdWUgYWxsb3dlZCBieSBBdGhlbmEgYEdldFF1ZXJ5UmVzdWx0c2AuICovXG5jb25zdCBNQVhfTUFYX1JFU1VMVFMgPSAxMDAwO1xuXG4vKiogRGVmYXVsdCBgUXVlcnlSZXN1bHRUeXBlYCBmb3J3YXJkZWQgdG8gQXRoZW5hIGBHZXRRdWVyeVJlc3VsdHNgLiAqL1xuY29uc3QgREVGQVVMVF9RVUVSWV9SRVNVTFRfVFlQRSA9IFF1ZXJ5UmVzdWx0VHlwZS5EQVRBX1JPV1M7XG5cbi8qKlxuICogT25lIHBhZ2Ugb2YgQXRoZW5hIHF1ZXJ5IHJvd3MgYWZ0ZXIgYSB7QGxpbmsgQXRoZW5hUXVlcnlSZXN1bHRQYWdlcn0gZmV0Y2ggb3IgZ2VuZXJhdG9yIHN0ZXAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gUm93IHJlcHJlc2VudGF0aW9uOyB1c2Uge0BsaW5rIFBhcnNlZFJvd30gb3IgYSB0eXBlIHByb2R1Y2VkIGJ5IHtAbGluayBSb3dQYXJzZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VSZXN1bHQ8VD4ge1xuICAvKiogUGFyc2VkIHJvd3MgZm9yIHRoaXMgcGFnZSBvbmx5LiAqL1xuICByb3dzOiBUW107XG4gIC8qKiBDb250aW51YXRpb24gdG9rZW4gZm9yIHRoZSBmb2xsb3dpbmcgcGFnZSAoYHVuZGVmaW5lZGAgd2hlbiB0aGlzIGlzIHRoZSBsYXN0IHBhZ2UpLiAqL1xuICBuZXh0VG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBTYW1lIGFzIGByb3dzLmxlbmd0aGAgZm9yIGNvbnZlbmllbmNlLiAqL1xuICByb3dDb3VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNldHRpbmdzIGFwcGxpZWQgdG8gZXZlcnkgYEdldFF1ZXJ5UmVzdWx0c2AgaW52b2NhdGlvbiBtYWRlIGJ5IHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlck9wdGlvbnMge1xuICAvKipcbiAgICogYE1heFJlc3VsdHNgIHBlciByZXF1ZXN0IOKAlCBtdXN0IGJlIGFuIGludGVnZXIgZnJvbSAxIHRocm91Z2ggMTAwMCAoQXRoZW5hIGxpbWl0cykuXG4gICAqIEBkZWZhdWx0VmFsdWUgMTAwMFxuICAgKi9cbiAgbWF4UmVzdWx0cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIGBRdWVyeVJlc3VsdFR5cGVgIGZvcndhcmRlZCB0byBBdGhlbmEgKGZvciBleGFtcGxlIHJhdyBkYXRhIHJvd3MgdmVyc3VzIG1hbmlmZXN0IHJvd3MgZm9yIENUQVMvVU5MT0FEL0lOU0VSVCBvdXRwdXRzKS5cbiAgICogQGRlZmF1bHRWYWx1ZSBgUXVlcnlSZXN1bHRUeXBlLkRBVEFfUk9XU2BcbiAgICovXG4gIHF1ZXJ5UmVzdWx0VHlwZT86IFF1ZXJ5UmVzdWx0VHlwZTtcbn1cblxuLyoqXG4gKiBQYWdpbmF0ZXMgQXRoZW5hIGBHZXRRdWVyeVJlc3VsdHNgIChBV1MgU0RLIGZvciBKYXZhU2NyaXB0IHYzKTogd2Fsa3MgYE5leHRUb2tlbmAgYW5kIHBhcnNlcyB0YWJ1bGFyIHJvd3Mgd2l0aFxuICogYGF0aGVuYS1xdWVyeS1yZXN1bHQtcGFyc2VyYCB3aGVuIG5lZWRlZC5cbiAqXG4gKiBgbWF4UmVzdWx0c2AgYW5kIGBxdWVyeVJlc3VsdFR5cGVgIGZyb20gdGhlIGNvbnN0cnVjdG9yIGFyZSBpbmNsdWRlZCBvbiBldmVyeSBgR2V0UXVlcnlSZXN1bHRzYCByZXF1ZXN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL3YzL2xhdGVzdC9jbGllbnQvYXRoZW5hL2NvbW1hbmQvR2V0UXVlcnlSZXN1bHRzQ29tbWFuZC8gfCBHZXRRdWVyeVJlc3VsdHNDb21tYW5kIChBV1MgU0RLKX1cbiAqL1xuZXhwb3J0IGNsYXNzIEF0aGVuYVF1ZXJ5UmVzdWx0UGFnZXIge1xuXG4gIC8qKlxuICAgKiBAdHlwZVBhcmFtIFQgLSBSb3cgdHlwZSBoZWxkIGluIHtAbGluayBQYWdlUmVzdWx0LnJvd3N9LlxuICAgKiBAcGFyYW0gcGFnZVJlc3VsdCAtIFRoZSBtb3N0IHJlY2VudGx5IHJldHJpZXZlZCBwYWdlIGZyb20gYGZldGNoUGFnZWAsIGBmZXRjaFBhZ2VXaXRoYCwgb3IgYSBwYWdlIGl0ZXJhdG9yLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB7QGxpbmsgUGFnZVJlc3VsdC5uZXh0VG9rZW59IGlzIGRlZmluZWQgYW5kIGFub3RoZXIgcGFnZSBzaG91bGQgYmUgZmV0Y2hlZC5cbiAgICovXG4gIHN0YXRpYyBoYXNOZXh0UGFnZTxUPihwYWdlUmVzdWx0OiBQYWdlUmVzdWx0PFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhZ2VSZXN1bHQubmV4dFRva2VuICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudDogQXRoZW5hQ2xpZW50O1xuICAvKiogTm9ybWFsaXplZCBwYWdlciBzZXR0aW5ncyAoZXZlcnkgZmllbGQgc2V0IGFmdGVyIG1lcmdpbmcgZGVmYXVsdHMpLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFJlcXVpcmVkPFBhZ2VyT3B0aW9ucz47XG4gIC8qKiBTdGF0ZWZ1bCBwYXJzZXIgcmV1c2VkIGFjcm9zcyBjYWxsczsgcmVjcmVhdGVkIGJ5IHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyLnJlc2V0fS4gKi9cbiAgcHJpdmF0ZSBwYXJzZXI6IEF0aGVuYVF1ZXJ5UmVzdWx0UGFyc2VyO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gY2xpZW50IC0gU0RLIHYzIGBBdGhlbmFDbGllbnRgIHVzZWQgdG8gY2FsbCBgR2V0UXVlcnlSZXN1bHRzYC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBgTWF4UmVzdWx0c2AgYW5kIGBRdWVyeVJlc3VsdFR5cGVgOyBkZWZhdWx0cyBhcHBseSB3aGVuIG9taXR0ZWQuXG4gICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFdoZW4gYG1heFJlc3VsdHNgIGlzIG5vdCBhbiBpbnRlZ2VyIGluIGAxLi4xMDAwYCBpbmNsdXNpdmUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjbGllbnQ6IEF0aGVuYUNsaWVudCwgb3B0aW9uczogUGFnZXJPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBtYXhSZXN1bHRzID0gb3B0aW9ucy5tYXhSZXN1bHRzID8/IERFRkFVTFRfTUFYX1JFU1VMVFM7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heFJlc3VsdHMpIHx8IG1heFJlc3VsdHMgPCBNSU5fTUFYX1JFU1VMVFMgfHwgbWF4UmVzdWx0cyA+IE1BWF9NQVhfUkVTVUxUUykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICAgIGBvcHRpb25zLm1heFJlc3VsdHMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gJHtNSU5fTUFYX1JFU1VMVFN9IGFuZCAke01BWF9NQVhfUkVTVUxUU30sIGdvdCAke1N0cmluZyhtYXhSZXN1bHRzKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBtYXhSZXN1bHRzLFxuICAgICAgcXVlcnlSZXN1bHRUeXBlOiBvcHRpb25zLnF1ZXJ5UmVzdWx0VHlwZSA/PyBERUZBVUxUX1FVRVJZX1JFU1VMVF9UWVBFLFxuICAgIH07XG4gICAgdGhpcy5wYXJzZXIgPSBuZXcgQXRoZW5hUXVlcnlSZXN1bHRQYXJzZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBzaW5nbGUgcmVzdWx0cyBwYWdlIHVzaW5nIHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhcnNlci5wYXJzZVJlc3VsdFNldH0gKGRpY3Rpb25hcnktc2hhcGVkIHJvd3MpLlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnlFeGVjdXRpb25JZCAtIEF0aGVuYSBxdWVyeSBleGVjdXRpb24gaWRlbnRpZmllci5cbiAgICogQHBhcmFtIG5leHRUb2tlbiAtIFBhc3MgYHVuZGVmaW5lZGAgZmlyc3Q7IHN1YnNlcXVlbnQgY2FsbHMgdXNlIHtAbGluayBQYWdlUmVzdWx0Lm5leHRUb2tlbn0uXG4gICAqIEByZXR1cm5zIFBhcnNlZCByb3dzIHBsdXMgcGFnaW5hdGlvbiBtZXRhZGF0YSBmcm9tIHRoaXMgcmVzcG9uc2Ugb25seS5cbiAgICogQHRocm93cyB7RXJyb3J9IFdoZW4gYHF1ZXJ5RXhlY3V0aW9uSWRgIGlzIGVtcHR5IG9yIHdoaXRlc3BhY2Ugb25seS5cbiAgICovXG4gIGFzeW5jIGZldGNoUGFnZShcbiAgICBxdWVyeUV4ZWN1dGlvbklkOiBzdHJpbmcsXG4gICAgbmV4dFRva2VuPzogc3RyaW5nLFxuICApOiBQcm9taXNlPFBhZ2VSZXN1bHQ8UGFyc2VkUm93Pj4ge1xuICAgIGlmIChxdWVyeUV4ZWN1dGlvbklkLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncXVlcnlFeGVjdXRpb25JZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0OiBHZXRRdWVyeVJlc3VsdHNDb21tYW5kSW5wdXQgPSB7XG4gICAgICBRdWVyeUV4ZWN1dGlvbklkOiBxdWVyeUV4ZWN1dGlvbklkLFxuICAgICAgTmV4dFRva2VuOiBuZXh0VG9rZW4sXG4gICAgICBNYXhSZXN1bHRzOiB0aGlzLm9wdGlvbnMubWF4UmVzdWx0cyxcbiAgICAgIFF1ZXJ5UmVzdWx0VHlwZTogdGhpcy5vcHRpb25zLnF1ZXJ5UmVzdWx0VHlwZSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5zZW5kKG5ldyBHZXRRdWVyeVJlc3VsdHNDb21tYW5kKGlucHV0KSk7XG5cbiAgICBjb25zdCByb3dzID0gdGhpcy5wYXJzZXIucGFyc2VSZXN1bHRTZXQocmVzcG9uc2UuUmVzdWx0U2V0KTtcblxuICAgIHJldHVybiB7XG4gICAgICByb3dzLFxuICAgICAgbmV4dFRva2VuOiByZXNwb25zZS5OZXh0VG9rZW4sXG4gICAgICByb3dDb3VudDogcm93cy5sZW5ndGgsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgb25lIHBhZ2UgYW5kIG1hcHMgZWFjaCB7QGxpbmsgUGFyc2VkUm93fSB0aHJvdWdoIGByb3dQYXJzZXJgLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFQgLSBPdXRwdXQgdHlwZSBwcm9kdWNlZCBieSBgcm93UGFyc2VyYC5cbiAgICogQHBhcmFtIHF1ZXJ5RXhlY3V0aW9uSWQgLSBBdGhlbmEgcXVlcnkgZXhlY3V0aW9uIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSByb3dQYXJzZXIgLSBDb252ZXJ0cyBlYWNoIGRpY3Rpb25hcnkgcm93IGludG8gYFRgLlxuICAgKiBAcGFyYW0gbmV4dFRva2VuIC0gUGFzcyBgdW5kZWZpbmVkYCBmaXJzdDsgc3Vic2VxdWVudCBjYWxscyB1c2Uge0BsaW5rIFBhZ2VSZXN1bHQubmV4dFRva2VufS5cbiAgICogQHJldHVybnMgVHJhbnNmb3JtZWQgcm93cyBwbHVzIHBhZ2luYXRpb24gbWV0YWRhdGEgZnJvbSB0aGlzIHJlc3BvbnNlIG9ubHkuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIGBxdWVyeUV4ZWN1dGlvbklkYCBpcyBlbXB0eSBvciB3aGl0ZXNwYWNlIG9ubHkuXG4gICAqL1xuICBhc3luYyBmZXRjaFBhZ2VXaXRoPFQ+KFxuICAgIHF1ZXJ5RXhlY3V0aW9uSWQ6IHN0cmluZyxcbiAgICByb3dQYXJzZXI6IFJvd1BhcnNlcjxUPixcbiAgICBuZXh0VG9rZW4/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8UGFnZVJlc3VsdDxUPj4ge1xuICAgIGlmIChxdWVyeUV4ZWN1dGlvbklkLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncXVlcnlFeGVjdXRpb25JZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0OiBHZXRRdWVyeVJlc3VsdHNDb21tYW5kSW5wdXQgPSB7XG4gICAgICBRdWVyeUV4ZWN1dGlvbklkOiBxdWVyeUV4ZWN1dGlvbklkLFxuICAgICAgTmV4dFRva2VuOiBuZXh0VG9rZW4sXG4gICAgICBNYXhSZXN1bHRzOiB0aGlzLm9wdGlvbnMubWF4UmVzdWx0cyxcbiAgICAgIFF1ZXJ5UmVzdWx0VHlwZTogdGhpcy5vcHRpb25zLnF1ZXJ5UmVzdWx0VHlwZSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5zZW5kKG5ldyBHZXRRdWVyeVJlc3VsdHNDb21tYW5kKGlucHV0KSk7XG5cbiAgICBjb25zdCByb3dzID0gdGhpcy5wYXJzZXIucGFyc2VSZXN1bHRTZXRXaXRoKHJlc3BvbnNlLlJlc3VsdFNldCwgcm93UGFyc2VyKTtcblxuICAgIHJldHVybiB7XG4gICAgICByb3dzLFxuICAgICAgbmV4dFRva2VuOiByZXNwb25zZS5OZXh0VG9rZW4sXG4gICAgICByb3dDb3VudDogcm93cy5sZW5ndGgsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgd2Fsa3MgYWxsIHBhZ2VzIGZvciBhbiBleGVjdXRpb24sIHlpZWxkaW5nIHtAbGluayBQYWdlUmVzdWx0fSBvZiB7QGxpbmsgUGFyc2VkUm93fSBlYWNoIHN0ZXAuXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeUV4ZWN1dGlvbklkIC0gQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiBpZGVudGlmaWVyLlxuICAgKiBAeWllbGRzIE9uZSBwYWdlIGF0IGEgdGltZSB1bnRpbCBBV1MgcmV0dXJucyBubyBgTmV4dFRva2VuYC5cbiAgICovXG4gIGFzeW5jICppdGVyYXRlUGFnZXMoXG4gICAgcXVlcnlFeGVjdXRpb25JZDogc3RyaW5nLFxuICApOiBBc3luY0dlbmVyYXRvcjxQYWdlUmVzdWx0PFBhcnNlZFJvdz4+IHtcbiAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBkbyB7XG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgdGhpcy5mZXRjaFBhZ2UocXVlcnlFeGVjdXRpb25JZCwgbmV4dFRva2VuKTtcbiAgICAgIHlpZWxkIHBhZ2U7XG4gICAgICBuZXh0VG9rZW4gPSBwYWdlLm5leHRUb2tlbjtcbiAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbWUgYXMge0BsaW5rIEF0aGVuYVF1ZXJ5UmVzdWx0UGFnZXIuaXRlcmF0ZVBhZ2VzfSBidXQgYXBwbGllcyBgcm93UGFyc2VyYCBwZXIgcm93IG9uIGV2ZXJ5IHBhZ2UuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIE91dHB1dCB0eXBlIGVtaXR0ZWQgaW4ge0BsaW5rIFBhZ2VSZXN1bHQucm93c30uXG4gICAqIEBwYXJhbSBxdWVyeUV4ZWN1dGlvbklkIC0gQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0gcm93UGFyc2VyIC0gQ29udmVydHMgZWFjaCBwYXJzZWQgcm93IGludG8gYFRgLlxuICAgKiBAeWllbGRzIFN1Y2Nlc3NpdmUge0BsaW5rIFBhZ2VSZXN1bHR9IHZhbHVlcyB3aG9zZSBgcm93c2AgYXJlIHR5cGVkIGFzIGBUYC5cbiAgICovXG4gIGFzeW5jICppdGVyYXRlUGFnZXNXaXRoPFQ+KFxuICAgIHF1ZXJ5RXhlY3V0aW9uSWQ6IHN0cmluZyxcbiAgICByb3dQYXJzZXI6IFJvd1BhcnNlcjxUPixcbiAgKTogQXN5bmNHZW5lcmF0b3I8UGFnZVJlc3VsdDxUPj4ge1xuICAgIGxldCBuZXh0VG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGRvIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCB0aGlzLmZldGNoUGFnZVdpdGgocXVlcnlFeGVjdXRpb25JZCwgcm93UGFyc2VyLCBuZXh0VG9rZW4pO1xuICAgICAgeWllbGQgcGFnZTtcbiAgICAgIG5leHRUb2tlbiA9IHBhZ2UubmV4dFRva2VuO1xuICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbnMge0BsaW5rIEF0aGVuYVF1ZXJ5UmVzdWx0UGFnZXIuaXRlcmF0ZVBhZ2VzV2l0aH0gaW50byBpbmRpdmlkdWFsIGBUYCB2YWx1ZXMgKG9uZSByb3cgcGVyIGBuZXh0KClgKS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gT3V0cHV0IHR5cGUgcHJvZHVjZWQgYnkgYHJvd1BhcnNlcmAuXG4gICAqIEBwYXJhbSBxdWVyeUV4ZWN1dGlvbklkIC0gQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0gcm93UGFyc2VyIC0gQ29udmVydHMgZWFjaCBwYXJzZWQgcm93IGludG8gYFRgLlxuICAgKiBAeWllbGRzIEVhY2ggZGF0YSByb3cgaW4gZXhlY3V0aW9uIG9yZGVyIHdpdGhvdXQgYnVmZmVyaW5nIHRoZSBmdWxsIHJlc3VsdCBzZXQgaW4gbWVtb3J5LlxuICAgKi9cbiAgYXN5bmMgKml0ZXJhdGVSb3dzPFQ+KFxuICAgIHF1ZXJ5RXhlY3V0aW9uSWQ6IHN0cmluZyxcbiAgICByb3dQYXJzZXI6IFJvd1BhcnNlcjxUPixcbiAgKTogQXN5bmNHZW5lcmF0b3I8VD4ge1xuICAgIGZvciBhd2FpdCAoY29uc3QgcGFnZSBvZiB0aGlzLml0ZXJhdGVQYWdlc1dpdGgocXVlcnlFeGVjdXRpb25JZCwgcm93UGFyc2VyKSkge1xuICAgICAgZm9yIChjb25zdCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICAgIHlpZWxkIHJvdztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFudGlhdGVzIGEgZnJlc2gge0BsaW5rIEF0aGVuYVF1ZXJ5UmVzdWx0UGFyc2VyfSBzbyBoZWFkZXItcm93IGhhbmRsaW5nIGRvZXMgbm90IGxlYWsgYmV0d2VlbiBxdWVyaWVzLlxuICAgKlxuICAgKiBDYWxsIHdoZW4gcmV1c2luZyB0aGlzIHBhZ2VyIGZvciBhIGRpZmZlcmVudCBgcXVlcnlFeGVjdXRpb25JZGAgdGhhbiB0aGUgcHJldmlvdXMgcGFyc2Ugc2VxdWVuY2UuXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnNlciA9IG5ldyBBdGhlbmFRdWVyeVJlc3VsdFBhcnNlcigpO1xuICB9XG59XG5cbi8qKiBSZS1leHBvcnRzIGBQYXJzZWRSb3dgIGFuZCBgUm93UGFyc2VyYCBmcm9tIHRoZSBgYXRoZW5hLXF1ZXJ5LXJlc3VsdC1wYXJzZXJgIHBhY2thZ2UuICovXG5leHBvcnQgdHlwZSB7IFBhcnNlZFJvdywgUm93UGFyc2VyIH07Il19
|
|
182
|
+
/** Re-exports {@link QueryResultType} from `@aws-sdk/client-athena`. */
|
|
183
|
+
var client_athena_2 = require("@aws-sdk/client-athena");
|
|
184
|
+
Object.defineProperty(exports, "QueryResultType", { enumerable: true, get: function () { return client_athena_2.QueryResultType; } });
|
|
185
|
+
var athena_query_result_parser_2 = require("athena-query-result-parser");
|
|
186
|
+
Object.defineProperty(exports, "EXTRA_COLUMNS_KEY", { enumerable: true, get: function () { return athena_query_result_parser_2.EXTRA_COLUMNS_KEY; } });
|
|
187
|
+
Object.defineProperty(exports, "headersFromMeta", { enumerable: true, get: function () { return athena_query_result_parser_2.headersFromMeta; } });
|
|
188
|
+
Object.defineProperty(exports, "isHeaderRow", { enumerable: true, get: function () { return athena_query_result_parser_2.isHeaderRow; } });
|
|
189
|
+
Object.defineProperty(exports, "rowToObject", { enumerable: true, get: function () { return athena_query_result_parser_2.rowToObject; } });
|
|
190
|
+
Object.defineProperty(exports, "rowToTypedObject", { enumerable: true, get: function () { return athena_query_result_parser_2.rowToTypedObject; } });
|
|
191
|
+
Object.defineProperty(exports, "toBoolean", { enumerable: true, get: function () { return athena_query_result_parser_2.toBoolean; } });
|
|
192
|
+
Object.defineProperty(exports, "toDate", { enumerable: true, get: function () { return athena_query_result_parser_2.toDate; } });
|
|
193
|
+
Object.defineProperty(exports, "toNumber", { enumerable: true, get: function () { return athena_query_result_parser_2.toNumber; } });
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQWlJO0FBQ2pJLDJFQU1vQztBQUVwQyxrSEFBa0g7QUFDbEgsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFDakMsc0VBQXNFO0FBQ3RFLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUMxQixzRUFBc0U7QUFDdEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBRTdCLHVFQUF1RTtBQUN2RSxNQUFNLHlCQUF5QixHQUFHLCtCQUFlLENBQUMsU0FBUyxDQUFDO0FBMEM1RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLHNCQUFzQjtJQUVqQzs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFJLFVBQXlCO1FBQzdDLE9BQU8sVUFBVSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7SUFDNUMsQ0FBQztJQVdEOzs7Ozs7T0FNRztJQUNILFlBQVksTUFBb0IsRUFBRSxVQUF3QixFQUFFO1FBQzFELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksbUJBQW1CLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxHQUFHLGVBQWUsSUFBSSxVQUFVLEdBQUcsZUFBZSxFQUFFLENBQUM7WUFDbEcsTUFBTSxJQUFJLFVBQVUsQ0FDbEIsaURBQWlELGVBQWUsUUFBUSxlQUFlLFNBQVMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQ3JILENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVU7WUFDVixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsSUFBSSx5QkFBeUI7U0FDdEUsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIs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YUNsaWVudCwgR2V0UXVlcnlSZXN1bHRzQ29tbWFuZCwgUXVlcnlSZXN1bHRUeXBlLCB0eXBlIEdldFF1ZXJ5UmVzdWx0c0NvbW1hbmRJbnB1dCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1hdGhlbmEnO1xuaW1wb3J0IHtcbiAgQXRoZW5hUXVlcnlSZXN1bHRQYXJzZXIsXG4gIHR5cGUgSGVhZGVyUm93RGVjaXNpb24sXG4gIHR5cGUgUGFyc2VSZXN1bHRTZXRPcHRpb25zLFxuICB0eXBlIFBhcnNlZFJvdyxcbiAgdHlwZSBSb3dQYXJzZXIsXG59IGZyb20gJ2F0aGVuYS1xdWVyeS1yZXN1bHQtcGFyc2VyJztcblxuLyoqIERlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgcmVzdWx0IHJvd3MgcmVxdWVzdGVkIHBlciB7QGxpbmsgQXRoZW5hUXVlcnlSZXN1bHRQYWdlcn0gQVBJIGNhbGwgKGBNYXhSZXN1bHRzYCkuICovXG5jb25zdCBERUZBVUxUX01BWF9SRVNVTFRTID0gMTAwMDtcbi8qKiBNaW5pbXVtIGBNYXhSZXN1bHRzYCB2YWx1ZSBhbGxvd2VkIGJ5IEF0aGVuYSBgR2V0UXVlcnlSZXN1bHRzYC4gKi9cbmNvbnN0IE1JTl9NQVhfUkVTVUxUUyA9IDE7XG4vKiogTWF4aW11bSBgTWF4UmVzdWx0c2AgdmFsdWUgYWxsb3dlZCBieSBBdGhlbmEgYEdldFF1ZXJ5UmVzdWx0c2AuICovXG5jb25zdCBNQVhfTUFYX1JFU1VMVFMgPSAxMDAwO1xuXG4vKiogRGVmYXVsdCBgUXVlcnlSZXN1bHRUeXBlYCBmb3J3YXJkZWQgdG8gQXRoZW5hIGBHZXRRdWVyeVJlc3VsdHNgLiAqL1xuY29uc3QgREVGQVVMVF9RVUVSWV9SRVNVTFRfVFlQRSA9IFF1ZXJ5UmVzdWx0VHlwZS5EQVRBX1JPV1M7XG5cbi8qKlxuICogT25lIHBhZ2Ugb2YgQXRoZW5hIHF1ZXJ5IHJlc3VsdHMgcmV0dXJuZWQgYnkge0BsaW5rIEF0aGVuYVF1ZXJ5UmVzdWx0UGFnZXJ9IGFmdGVyIGEgZmV0Y2ggb3IgZ2VuZXJhdG9yIHN0ZXAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gUm93IHJlcHJlc2VudGF0aW9uOyB1c2Uge0BsaW5rIFBhcnNlZFJvd30gb3IgYSB0eXBlIHByb2R1Y2VkIGJ5IHtAbGluayBSb3dQYXJzZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VSZXN1bHQ8VD4ge1xuICAvKiogUGFyc2VkIHJvd3MgZm9yIHRoaXMgcGFnZSBvbmx5LiAqL1xuICByb3dzOiBUW107XG4gIC8qKiBDb250aW51YXRpb24gdG9rZW4gZm9yIHRoZSBmb2xsb3dpbmcgcGFnZSAoYHVuZGVmaW5lZGAgd2hlbiB0aGlzIGlzIHRoZSBsYXN0IHBhZ2UpLiAqL1xuICBuZXh0VG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBTYW1lIGFzIGByb3dzLmxlbmd0aGAgZm9yIGNvbnZlbmllbmNlLiAqL1xuICByb3dDb3VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNldHRpbmdzIGFwcGxpZWQgdG8gZXZlcnkgYEdldFF1ZXJ5UmVzdWx0c2AgaW52b2NhdGlvbiBtYWRlIGJ5IHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlck9wdGlvbnMge1xuICAvKipcbiAgICogYE1heFJlc3VsdHNgIHBlciByZXF1ZXN0IOKAlCBtdXN0IGJlIGFuIGludGVnZXIgZnJvbSAxIHRocm91Z2ggMTAwMCAoQXRoZW5hIGxpbWl0cykuXG4gICAqIEBkZWZhdWx0VmFsdWUgMTAwMFxuICAgKi9cbiAgbWF4UmVzdWx0cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEF0aGVuYSBgR2V0UXVlcnlSZXN1bHRzYCB7QGxpbmsgUXVlcnlSZXN1bHRUeXBlfSDigJQgYW55IG1lbWJlciBvZiB0aGUgQVdTIFNESyBlbnVtXG4gICAqIChmb3IgZXhhbXBsZSB7QGxpbmsgUXVlcnlSZXN1bHRUeXBlLkRBVEFfUk9XU30gZm9yIHRhYnVsYXIgcm93cyBvciB7QGxpbmsgUXVlcnlSZXN1bHRUeXBlLkRBVEFfTUFOSUZFU1R9XG4gICAqIGZvciBDVEFTIC8gVU5MT0FEIC8gSU5TRVJUIG1hbmlmZXN0IG91dHB1dHMgd2hlbiBBdGhlbmEgc3VwcG9ydHMgdGhlbSkuXG4gICAqIEBkZWZhdWx0VmFsdWUge0BsaW5rIFF1ZXJ5UmVzdWx0VHlwZS5EQVRBX1JPV1N9XG4gICAqL1xuICBxdWVyeVJlc3VsdFR5cGU/OiBRdWVyeVJlc3VsdFR5cGU7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvcndhcmRlZCB0byBldmVyeSB7QGxpbmsgQXRoZW5hUXVlcnlSZXN1bHRQYXJzZXIucGFyc2VSZXN1bHRTZXR9IC9cbiAgICoge0BsaW5rIEF0aGVuYVF1ZXJ5UmVzdWx0UGFyc2VyLnBhcnNlUmVzdWx0U2V0V2l0aH0gY2FsbCAoZm9yIGV4YW1wbGVcbiAgICogYGNvbHVtbkNvdW50TWlzbWF0Y2hCZWhhdmlvcmAsIGBza2lwSGVhZGVyUm93YCwgYGhlYWRlclJvd0RldGVjdGlvblN0cmF0ZWd5YCkuXG4gICAqXG4gICAqIEBzZWUgUGFyc2VSZXN1bHRTZXRPcHRpb25zXG4gICAqL1xuICBwYXJzZVJlc3VsdFNldE9wdGlvbnM/OiBQYXJzZVJlc3VsdFNldE9wdGlvbnM7XG59XG5cbi8qKlxuICogUGFnaW5hdGVzIEF0aGVuYSBgR2V0UXVlcnlSZXN1bHRzYCAoQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB2Myk6IHdhbGtzIGBOZXh0VG9rZW5gIGFuZCBwYXJzZXMgdGFidWxhciByb3dzIHdpdGhcbiAqIGBhdGhlbmEtcXVlcnktcmVzdWx0LXBhcnNlcmAgd2hlbiBuZWVkZWQuXG4gKlxuICogUHJvdmlkZXMgcGFpcmVkIEFQSXMgZm9yIHJhdyB7QGxpbmsgUGFyc2VkUm93fSBhY2Nlc3MgdmVyc3VzIGN1c3RvbSB7QGxpbmsgUm93UGFyc2VyfSBtYXBwaW5nIGF0IHRoZSBwYWdlIGxldmVsXG4gKiAoYGZldGNoUGFnZWAgLyBgZmV0Y2hQYWdlV2l0aGAsIGBpdGVyYXRlUGFnZXNgIC8gYGl0ZXJhdGVQYWdlc1dpdGhgKSBhbmQgYXQgdGhlIHJvdyBsZXZlbFxuICogKGBpdGVyYXRlUm93c2Agd2l0aCBvciB3aXRob3V0IGByb3dQYXJzZXJgKS5cbiAqXG4gKiBDb25zdHJ1Y3RvciBgbWF4UmVzdWx0c2AsIGBxdWVyeVJlc3VsdFR5cGVgLCBhbmQgb3B0aW9uYWwgYHBhcnNlUmVzdWx0U2V0T3B0aW9uc2AgYXJlIGFwcGxpZWQgb24gZXZlcnlcbiAqIGBHZXRRdWVyeVJlc3VsdHNgIHJlcXVlc3QgYW5kIHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhcnNlcn0gaW52b2NhdGlvbiByZXNwZWN0aXZlbHkuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvdjMvbGF0ZXN0L2NsaWVudC9hdGhlbmEvY29tbWFuZC9HZXRRdWVyeVJlc3VsdHNDb21tYW5kLyB8IEdldFF1ZXJ5UmVzdWx0c0NvbW1hbmQgKEFXUyBTREspfVxuICovXG5leHBvcnQgY2xhc3MgQXRoZW5hUXVlcnlSZXN1bHRQYWdlciB7XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgd2hldGhlciBhbm90aGVyIHJlc3VsdHMgcGFnZSBpcyBhdmFpbGFibGUgZm9yIHRoZSBzYW1lIHF1ZXJ5IGV4ZWN1dGlvbi5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gUm93IHR5cGUgaGVsZCBpbiB7QGxpbmsgUGFnZVJlc3VsdC5yb3dzfS5cbiAgICogQHBhcmFtIHBhZ2VSZXN1bHQgLSBUaGUgbW9zdCByZWNlbnRseSByZXRyaWV2ZWQgcGFnZSBmcm9tIGBmZXRjaFBhZ2VgLCBgZmV0Y2hQYWdlV2l0aGAsIG9yIGEgcGFnZSBpdGVyYXRvci5cbiAgICogQHJldHVybnMgYHRydWVgIHdoZW4ge0BsaW5rIFBhZ2VSZXN1bHQubmV4dFRva2VufSBpcyBkZWZpbmVkIGFuZCBhbm90aGVyIHBhZ2Ugc2hvdWxkIGJlIGZldGNoZWQuXG4gICAqL1xuICBzdGF0aWMgaGFzTmV4dFBhZ2U8VD4ocGFnZVJlc3VsdDogUGFnZVJlc3VsdDxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwYWdlUmVzdWx0Lm5leHRUb2tlbiAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIFNESyB2MyBjbGllbnQgdXNlZCBmb3IgZXZlcnkgYEdldFF1ZXJ5UmVzdWx0c2AgY2FsbC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IEF0aGVuYUNsaWVudDtcbiAgLyoqIE5vcm1hbGl6ZWQgcGFnZXIgc2V0dGluZ3MgKGV2ZXJ5IGZpZWxkIHNldCBhZnRlciBtZXJnaW5nIGRlZmF1bHRzKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBSZXF1aXJlZDxQaWNrPFBhZ2VyT3B0aW9ucywgJ21heFJlc3VsdHMnIHwgJ3F1ZXJ5UmVzdWx0VHlwZSc+PjtcbiAgLyoqIFBhcnNlciBvcHRpb25zIGFwcGxpZWQgb24gZXZlcnkgcGFnZSBwYXJzZSAodW5kZWZpbmVkIHVzZXMgcGFyc2VyIGRlZmF1bHRzKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwYXJzZVJlc3VsdFNldE9wdGlvbnM/OiBQYXJzZVJlc3VsdFNldE9wdGlvbnM7XG4gIC8qKiBTdGF0ZWZ1bCBwYXJzZXIgcmV1c2VkIGFjcm9zcyBjYWxsczsgcmVjcmVhdGVkIGJ5IHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyLnJlc2V0fS4gKi9cbiAgcHJpdmF0ZSBwYXJzZXI6IEF0aGVuYVF1ZXJ5UmVzdWx0UGFyc2VyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFnZXIgYm91bmQgdG8gYGNsaWVudGAgd2l0aCBvcHRpb25hbCBwZXItcmVxdWVzdCBkZWZhdWx0cy5cbiAgICpcbiAgICogQHBhcmFtIGNsaWVudCAtIFNESyB2MyBgQXRoZW5hQ2xpZW50YCB1c2VkIHRvIGNhbGwgYEdldFF1ZXJ5UmVzdWx0c2AuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgYE1heFJlc3VsdHNgLCBgUXVlcnlSZXN1bHRUeXBlYCwgYW5kIGBQYXJzZVJlc3VsdFNldE9wdGlvbnNgOyBkZWZhdWx0cyBhcHBseSB3aGVuIG9taXR0ZWQuXG4gICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFdoZW4gYG1heFJlc3VsdHNgIGlzIG5vdCBhbiBpbnRlZ2VyIGluIGAxLi4xMDAwYCBpbmNsdXNpdmUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjbGllbnQ6IEF0aGVuYUNsaWVudCwgb3B0aW9uczogUGFnZXJPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBtYXhSZXN1bHRzID0gb3B0aW9ucy5tYXhSZXN1bHRzID8/IERFRkFVTFRfTUFYX1JFU1VMVFM7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heFJlc3VsdHMpIHx8IG1heFJlc3VsdHMgPCBNSU5fTUFYX1JFU1VMVFMgfHwgbWF4UmVzdWx0cyA+IE1BWF9NQVhfUkVTVUxUUykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICAgIGBvcHRpb25zLm1heFJlc3VsdHMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gJHtNSU5fTUFYX1JFU1VMVFN9IGFuZCAke01BWF9NQVhfUkVTVUxUU30sIGdvdCAke1N0cmluZyhtYXhSZXN1bHRzKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBtYXhSZXN1bHRzLFxuICAgICAgcXVlcnlSZXN1bHRUeXBlOiBvcHRpb25zLnF1ZXJ5UmVzdWx0VHlwZSA/PyBERUZBVUxUX1FVRVJZX1JFU1VMVF9UWVBFLFxuICAgIH07XG4gICAgdGhpcy5wYXJzZVJlc3VsdFNldE9wdGlvbnMgPSBvcHRpb25zLnBhcnNlUmVzdWx0U2V0T3B0aW9ucztcbiAgICB0aGlzLnBhcnNlciA9IG5ldyBBdGhlbmFRdWVyeVJlc3VsdFBhcnNlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIHNpbmdsZSByZXN1bHRzIHBhZ2UgYXMgZGljdGlvbmFyeS1zaGFwZWQge0BsaW5rIFBhcnNlZFJvd30gdmFsdWVzLlxuICAgKlxuICAgKiBVc2VzIHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhcnNlci5wYXJzZVJlc3VsdFNldH0gb24gdGhlIEFXUyByZXNwb25zZS5cbiAgICpcbiAgICogQHBhcmFtIHF1ZXJ5RXhlY3V0aW9uSWQgLSBBdGhlbmEgcXVlcnkgZXhlY3V0aW9uIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSBuZXh0VG9rZW4gLSBQYXNzIGB1bmRlZmluZWRgIGZpcnN0OyBzdWJzZXF1ZW50IGNhbGxzIHVzZSB7QGxpbmsgUGFnZVJlc3VsdC5uZXh0VG9rZW59LlxuICAgKiBAcmV0dXJucyBQYXJzZWQgcm93cyBwbHVzIHBhZ2luYXRpb24gbWV0YWRhdGEgZnJvbSB0aGlzIHJlc3BvbnNlIG9ubHkuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIGBxdWVyeUV4ZWN1dGlvbklkYCBpcyBlbXB0eSBvciB3aGl0ZXNwYWNlIG9ubHkuXG4gICAqL1xuICBhc3luYyBmZXRjaFBhZ2UoXG4gICAgcXVlcnlFeGVjdXRpb25JZDogc3RyaW5nLFxuICAgIG5leHRUb2tlbj86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxQYWdlUmVzdWx0PFBhcnNlZFJvdz4+IHtcbiAgICBpZiAocXVlcnlFeGVjdXRpb25JZC50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1ZXJ5RXhlY3V0aW9uSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dDogR2V0UXVlcnlSZXN1bHRzQ29tbWFuZElucHV0ID0ge1xuICAgICAgUXVlcnlFeGVjdXRpb25JZDogcXVlcnlFeGVjdXRpb25JZCxcbiAgICAgIE5leHRUb2tlbjogbmV4dFRva2VuLFxuICAgICAgTWF4UmVzdWx0czogdGhpcy5vcHRpb25zLm1heFJlc3VsdHMsXG4gICAgICBRdWVyeVJlc3VsdFR5cGU6IHRoaXMub3B0aW9ucy5xdWVyeVJlc3VsdFR5cGUsXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQuc2VuZChuZXcgR2V0UXVlcnlSZXN1bHRzQ29tbWFuZChpbnB1dCkpO1xuXG4gICAgY29uc3Qgcm93cyA9IHRoaXMucGFyc2VyLnBhcnNlUmVzdWx0U2V0KHJlc3BvbnNlLlJlc3VsdFNldCwgdGhpcy5wYXJzZVJlc3VsdFNldE9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJvd3MsXG4gICAgICBuZXh0VG9rZW46IHJlc3BvbnNlLk5leHRUb2tlbixcbiAgICAgIHJvd0NvdW50OiByb3dzLmxlbmd0aCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBvbmUgcGFnZSBhbmQgbWFwcyBlYWNoIHtAbGluayBQYXJzZWRSb3d9IHRocm91Z2ggYHJvd1BhcnNlcmAuXG4gICAqXG4gICAqIFVzZXMge0BsaW5rIEF0aGVuYVF1ZXJ5UmVzdWx0UGFyc2VyLnBhcnNlUmVzdWx0U2V0V2l0aH0gb24gdGhlIEFXUyByZXNwb25zZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gT3V0cHV0IHR5cGUgcHJvZHVjZWQgYnkgYHJvd1BhcnNlcmAuXG4gICAqIEBwYXJhbSBxdWVyeUV4ZWN1dGlvbklkIC0gQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0gcm93UGFyc2VyIC0gQ29udmVydHMgZWFjaCBkaWN0aW9uYXJ5IHJvdyBpbnRvIGBUYC5cbiAgICogQHBhcmFtIG5leHRUb2tlbiAtIFBhc3MgYHVuZGVmaW5lZGAgZmlyc3Q7IHN1YnNlcXVlbnQgY2FsbHMgdXNlIHtAbGluayBQYWdlUmVzdWx0Lm5leHRUb2tlbn0uXG4gICAqIEByZXR1cm5zIFRyYW5zZm9ybWVkIHJvd3MgcGx1cyBwYWdpbmF0aW9uIG1ldGFkYXRhIGZyb20gdGhpcyByZXNwb25zZSBvbmx5LlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gV2hlbiBgcXVlcnlFeGVjdXRpb25JZGAgaXMgZW1wdHkgb3Igd2hpdGVzcGFjZSBvbmx5LlxuICAgKi9cbiAgYXN5bmMgZmV0Y2hQYWdlV2l0aDxUPihcbiAgICBxdWVyeUV4ZWN1dGlvbklkOiBzdHJpbmcsXG4gICAgcm93UGFyc2VyOiBSb3dQYXJzZXI8VD4sXG4gICAgbmV4dFRva2VuPzogc3RyaW5nLFxuICApOiBQcm9taXNlPFBhZ2VSZXN1bHQ8VD4+IHtcbiAgICBpZiAocXVlcnlFeGVjdXRpb25JZC50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1ZXJ5RXhlY3V0aW9uSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dDogR2V0UXVlcnlSZXN1bHRzQ29tbWFuZElucHV0ID0ge1xuICAgICAgUXVlcnlFeGVjdXRpb25JZDogcXVlcnlFeGVjdXRpb25JZCxcbiAgICAgIE5leHRUb2tlbjogbmV4dFRva2VuLFxuICAgICAgTWF4UmVzdWx0czogdGhpcy5vcHRpb25zLm1heFJlc3VsdHMsXG4gICAgICBRdWVyeVJlc3VsdFR5cGU6IHRoaXMub3B0aW9ucy5xdWVyeVJlc3VsdFR5cGUsXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQuc2VuZChuZXcgR2V0UXVlcnlSZXN1bHRzQ29tbWFuZChpbnB1dCkpO1xuXG4gICAgY29uc3Qgcm93cyA9IHRoaXMucGFyc2VyLnBhcnNlUmVzdWx0U2V0V2l0aChcbiAgICAgIHJlc3BvbnNlLlJlc3VsdFNldCxcbiAgICAgIHJvd1BhcnNlcixcbiAgICAgIHRoaXMucGFyc2VSZXN1bHRTZXRPcHRpb25zLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcm93cyxcbiAgICAgIG5leHRUb2tlbjogcmVzcG9uc2UuTmV4dFRva2VuLFxuICAgICAgcm93Q291bnQ6IHJvd3MubGVuZ3RoLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTGF6aWx5IHdhbGtzIGFsbCBwYWdlcyBmb3IgYW4gZXhlY3V0aW9uLCB5aWVsZGluZyBvbmUge0BsaW5rIFBhZ2VSZXN1bHR9IG9mIHtAbGluayBQYXJzZWRSb3d9IHBlciBzdGVwLlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnlFeGVjdXRpb25JZCAtIEF0aGVuYSBxdWVyeSBleGVjdXRpb24gaWRlbnRpZmllci5cbiAgICogQHlpZWxkcyBPbmUgcGFnZSBhdCBhIHRpbWUgdW50aWwgQVdTIHJldHVybnMgbm8gYE5leHRUb2tlbmAuXG4gICAqL1xuICBhc3luYyAqaXRlcmF0ZVBhZ2VzKFxuICAgIHF1ZXJ5RXhlY3V0aW9uSWQ6IHN0cmluZyxcbiAgKTogQXN5bmNHZW5lcmF0b3I8UGFnZVJlc3VsdDxQYXJzZWRSb3c+PiB7XG4gICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgZG8ge1xuICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuZmV0Y2hQYWdlKHF1ZXJ5RXhlY3V0aW9uSWQsIG5leHRUb2tlbik7XG4gICAgICB5aWVsZCBwYWdlO1xuICAgICAgbmV4dFRva2VuID0gcGFnZS5uZXh0VG9rZW47XG4gICAgfSB3aGlsZSAobmV4dFRva2VuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW1lIGFzIHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyLml0ZXJhdGVQYWdlc30gYnV0IG1hcHMgZWFjaCByb3cgdGhyb3VnaCBgcm93UGFyc2VyYCBvbiBldmVyeSBwYWdlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFQgLSBPdXRwdXQgdHlwZSBlbWl0dGVkIGluIHtAbGluayBQYWdlUmVzdWx0LnJvd3N9LlxuICAgKiBAcGFyYW0gcXVlcnlFeGVjdXRpb25JZCAtIEF0aGVuYSBxdWVyeSBleGVjdXRpb24gaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHJvd1BhcnNlciAtIENvbnZlcnRzIGVhY2ggcGFyc2VkIHJvdyBpbnRvIGBUYC5cbiAgICogQHlpZWxkcyBTdWNjZXNzaXZlIHtAbGluayBQYWdlUmVzdWx0fSB2YWx1ZXMgd2hvc2UgYHJvd3NgIGFyZSB0eXBlZCBhcyBgVGAuXG4gICAqL1xuICBhc3luYyAqaXRlcmF0ZVBhZ2VzV2l0aDxUPihcbiAgICBxdWVyeUV4ZWN1dGlvbklkOiBzdHJpbmcsXG4gICAgcm93UGFyc2VyOiBSb3dQYXJzZXI8VD4sXG4gICk6IEFzeW5jR2VuZXJhdG9yPFBhZ2VSZXN1bHQ8VD4+IHtcbiAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBkbyB7XG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgdGhpcy5mZXRjaFBhZ2VXaXRoKHF1ZXJ5RXhlY3V0aW9uSWQsIHJvd1BhcnNlciwgbmV4dFRva2VuKTtcbiAgICAgIHlpZWxkIHBhZ2U7XG4gICAgICBuZXh0VG9rZW4gPSBwYWdlLm5leHRUb2tlbjtcbiAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYXR0ZW5zIHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyLml0ZXJhdGVQYWdlc30gaW50byBpbmRpdmlkdWFsIHtAbGluayBQYXJzZWRSb3d9IHZhbHVlcyAob25lIHJvdyBwZXIgYG5leHQoKWApLlxuICAgKlxuICAgKiBPbmx5IG9uZSBwYWdlIG9mIHJvd3MgaXMgaGVsZCBpbiBtZW1vcnkgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnlFeGVjdXRpb25JZCAtIEF0aGVuYSBxdWVyeSBleGVjdXRpb24gaWRlbnRpZmllci5cbiAgICogQHlpZWxkcyBFYWNoIGRpY3Rpb25hcnktc2hhcGVkIHJvdyBpbiBleGVjdXRpb24gb3JkZXIuXG4gICAqL1xuICBpdGVyYXRlUm93cyhcbiAgICBxdWVyeUV4ZWN1dGlvbklkOiBzdHJpbmcsXG4gICk6IEFzeW5jR2VuZXJhdG9yPFBhcnNlZFJvdz47XG5cbiAgLyoqXG4gICAqIEZsYXR0ZW5zIHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyLml0ZXJhdGVQYWdlc1dpdGh9IGludG8gaW5kaXZpZHVhbCBgVGAgdmFsdWVzIChvbmUgcm93IHBlciBgbmV4dCgpYCkuXG4gICAqXG4gICAqIE9ubHkgb25lIHBhZ2Ugb2Ygcm93cyBpcyBoZWxkIGluIG1lbW9yeSBhdCBhIHRpbWUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIE91dHB1dCB0eXBlIHByb2R1Y2VkIGJ5IGByb3dQYXJzZXJgLlxuICAgKiBAcGFyYW0gcXVlcnlFeGVjdXRpb25JZCAtIEF0aGVuYSBxdWVyeSBleGVjdXRpb24gaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHJvd1BhcnNlciAtIENvbnZlcnRzIGVhY2ggcGFyc2VkIHJvdyBpbnRvIGBUYC5cbiAgICogQHlpZWxkcyBFYWNoIHRyYW5zZm9ybWVkIHJvdyBpbiBleGVjdXRpb24gb3JkZXIuXG4gICAqL1xuICBpdGVyYXRlUm93czxUPihcbiAgICBxdWVyeUV4ZWN1dGlvbklkOiBzdHJpbmcsXG4gICAgcm93UGFyc2VyOiBSb3dQYXJzZXI8VD4sXG4gICk6IEFzeW5jR2VuZXJhdG9yPFQ+O1xuXG4gIC8qKlxuICAgKiBTaGFyZWQgaW1wbGVtZW50YXRpb24gZm9yIHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyLml0ZXJhdGVSb3dzfSBvdmVybG9hZHMuXG4gICAqXG4gICAqIERlbGVnYXRlcyB0byB7QGxpbmsgQXRoZW5hUXVlcnlSZXN1bHRQYWdlci5pdGVyYXRlUGFnZXN9IHdoZW4gYHJvd1BhcnNlcmAgaXMgb21pdHRlZDsgb3RoZXJ3aXNlIHRvXG4gICAqIHtAbGluayBBdGhlbmFRdWVyeVJlc3VsdFBhZ2VyLml0ZXJhdGVQYWdlc1dpdGh9LlxuICAgKi9cbiAgYXN5bmMgKml0ZXJhdGVSb3dzPFQ+KFxuICAgIHF1ZXJ5RXhlY3V0aW9uSWQ6IHN0cmluZyxcbiAgICByb3dQYXJzZXI/OiBSb3dQYXJzZXI8VD4sXG4gICk6IEFzeW5jR2VuZXJhdG9yPFBhcnNlZFJvdyB8IFQ+IHtcbiAgICBjb25zdCBwYWdlcyA9IHJvd1BhcnNlclxuICAgICAgPyB0aGlzLml0ZXJhdGVQYWdlc1dpdGgocXVlcnlFeGVjdXRpb25JZCwgcm93UGFyc2VyKVxuICAgICAgOiB0aGlzLml0ZXJhdGVQYWdlcyhxdWVyeUV4ZWN1dGlvbklkKTtcblxuICAgIGZvciBhd2FpdCAoY29uc3QgcGFnZSBvZiBwYWdlcykge1xuICAgICAgZm9yIChjb25zdCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICAgIHlpZWxkIHJvdztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVuZGxlZCBwYXJzZXIncyBtb3N0IHJlY2VudCBoZWFkZXItcm93IGRlY2lzaW9uLlxuICAgKlxuICAgKiBVc2VmdWwgd2hlbiB7QGxpbmsgUGFnZXJPcHRpb25zLnBhcnNlUmVzdWx0U2V0T3B0aW9uc30gdXNlcyBgc2tpcEhlYWRlclJvdzogJ2F1dG8nYC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGxhc3Qge0BsaW5rIEhlYWRlclJvd0RlY2lzaW9ufSwgb3IgYG51bGxgIGJlZm9yZSBhbnkgcGFyc2Ugb24gdGhpcyBwYWdlci5cbiAgICovXG4gIGdldExhc3RIZWFkZXJSb3dEZWNpc2lvbigpOiBIZWFkZXJSb3dEZWNpc2lvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5nZXRMYXN0SGVhZGVyUm93RGVjaXNpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGJ1bmRsZWQge0BsaW5rIEF0aGVuYVF1ZXJ5UmVzdWx0UGFyc2VyfSBzdGF0ZSBzbyBoZWFkZXItcm93IGhhbmRsaW5nIGRvZXMgbm90IGxlYWsgYmV0d2VlbiBxdWVyaWVzLlxuICAgKlxuICAgKiBDYWxsIHdoZW4gcmV1c2luZyB0aGlzIHBhZ2VyIGZvciBhIGRpZmZlcmVudCBgcXVlcnlFeGVjdXRpb25JZGAgdGhhbiB0aGUgcHJldmlvdXMgcGFyc2Ugc2VxdWVuY2UuXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnNlci5yZXNldCgpO1xuICB9XG59XG5cbi8qKiBSZS1leHBvcnRzIHtAbGluayBRdWVyeVJlc3VsdFR5cGV9IGZyb20gYEBhd3Mtc2RrL2NsaWVudC1hdGhlbmFgLiAqL1xuZXhwb3J0IHsgUXVlcnlSZXN1bHRUeXBlIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWF0aGVuYSc7XG5leHBvcnQge1xuICBFWFRSQV9DT0xVTU5TX0tFWSxcbiAgaGVhZGVyc0Zyb21NZXRhLFxuICBpc0hlYWRlclJvdyxcbiAgcm93VG9PYmplY3QsXG4gIHJvd1RvVHlwZWRPYmplY3QsXG4gIHRvQm9vbGVhbixcbiAgdG9EYXRlLFxuICB0b051bWJlcixcbn0gZnJvbSAnYXRoZW5hLXF1ZXJ5LXJlc3VsdC1wYXJzZXInO1xuZXhwb3J0IHR5cGUge1xuICBBdGhlbmFUeXBlZFZhbHVlLFxuICBDb2x1bW5Db3VudE1pc21hdGNoQmVoYXZpb3IsXG4gIEhlYWRlclJvd0RlY2lzaW9uLFxuICBQYXJzZVJlc3VsdFNldE9wdGlvbnMsXG4gIFBhcnNlZFJvdyxcbiAgUm93UGFyc2VyLFxuICBUeXBlZFBhcnNlZFJvdyxcbn0gZnJvbSAnYXRoZW5hLXF1ZXJ5LXJlc3VsdC1wYXJzZXInOyJdfQ==
|
package/package.json
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@aws-sdk/client-athena": "^3.983.0",
|
|
53
|
-
"athena-query-result-parser": "^0.
|
|
53
|
+
"athena-query-result-parser": "^0.4.0"
|
|
54
54
|
},
|
|
55
55
|
"keywords": [
|
|
56
56
|
"athena",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"publishConfig": {
|
|
76
76
|
"access": "public"
|
|
77
77
|
},
|
|
78
|
-
"version": "0.
|
|
78
|
+
"version": "0.4.0",
|
|
79
79
|
"jest": {
|
|
80
80
|
"coverageProvider": "v8",
|
|
81
81
|
"testMatch": [
|