athena-query-execution-waiter 0.4.7 → 0.5.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 CHANGED
@@ -9,7 +9,7 @@ A small library that waits for an AWS Athena query execution to complete. It pol
9
9
 
10
10
  - Polls `GetQueryExecution` until the run finishes or an **overall wall-clock timeout** is exceeded (separate from **polling interval**).
11
11
  - Configurable **overall timeout** and **poll spacing** via `wait()` options; default overall cap is **`DEFAULT_TIMEOUT_MS`** (2 minutes).
12
- - Typed errors: **`AthenaQueryExecutionWaiterTimeoutError`**, **`AthenaQueryExecutionWaiterStateError`** (failed or cancelled runs).
12
+ - Typed errors: **`AthenaQueryExecutionWaiterTimeoutError`**, **`AthenaQueryExecutionWaiterStateError`** (failed or cancelled runs), **`AthenaQueryExecutionWaiterMissingStateError`**, **`AthenaQueryExecutionWaiterUnsupportedStateError`**.
13
13
  - Built for **AWS SDK for JavaScript v3** (`@aws-sdk/client-athena`).
14
14
 
15
15
  ## Installation
@@ -118,6 +118,8 @@ Passed to `wait(queryExecutionId, waitOptions?)`.
118
118
  - **Returns** `SUCCEEDED` on success.
119
119
  - **Throws** `AthenaQueryExecutionWaiterTimeoutError` if overall wait exceeds the effective timeout.
120
120
  - **Throws** `AthenaQueryExecutionWaiterStateError` when the state is `FAILED` or `CANCELLED`.
121
+ - **Throws** `AthenaQueryExecutionWaiterMissingStateError` when `QueryExecution`, `Status`, or `State` is missing from the API response (fail-fast; no polling until timeout).
122
+ - **Throws** `AthenaQueryExecutionWaiterUnsupportedStateError` when `State` is present but not a known `QueryExecutionState` (e.g. a future Athena enum value).
121
123
 
122
124
  ### Constants
123
125
 
@@ -128,6 +130,8 @@ Passed to `wait(queryExecutionId, waitOptions?)`.
128
130
  - **`AthenaQueryExecutionWaiterError`** — Base class for waiter errors.
129
131
  - **`AthenaQueryExecutionWaiterTimeoutError`** — Overall elapsed time since `wait()` started exceeded `waitOptions.timeoutMs` or `DEFAULT_TIMEOUT_MS`. Constructor: `(elapsedTime: number)`.
130
132
  - **`AthenaQueryExecutionWaiterStateError`** — Query ended in `FAILED` or `CANCELLED`. Properties: `state`, `reason`. Constructor: `(state: QueryExecutionState, reason?: string)`.
133
+ - **`AthenaQueryExecutionWaiterMissingStateError`** — `GetQueryExecution` response is missing `QueryExecution`, `Status`, or `State`. Property: `detail`. Fails on the first poll.
134
+ - **`AthenaQueryExecutionWaiterUnsupportedStateError`** — `State` is not one of the known values (`QUEUED`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELLED`). Property: `state`. Fails on the first poll.
131
135
 
132
136
  ## License
133
137
 
package/lib/index.d.ts CHANGED
@@ -57,6 +57,8 @@ export declare class AthenaQueryExecutionWaiter {
57
57
  * @returns Execution state on success (SUCCEEDED)
58
58
  * @throws AthenaQueryExecutionWaiterTimeoutError On timeout
59
59
  * @throws AthenaQueryExecutionWaiterStateError When state is FAILED or CANCELLED
60
+ * @throws AthenaQueryExecutionWaiterMissingStateError When QueryExecution or Status.State is missing
61
+ * @throws AthenaQueryExecutionWaiterUnsupportedStateError When state is not a known QueryExecutionState
60
62
  */
61
63
  wait(queryExecutionId: string, waitOptions?: AthenaQueryExecutionWaitOptions): Promise<QueryExecutionState>;
62
64
  }
@@ -90,3 +92,23 @@ export declare class AthenaQueryExecutionWaiterStateError extends AthenaQueryExe
90
92
  */
91
93
  constructor(state: QueryExecutionState, reason?: string);
92
94
  }
95
+ /**
96
+ * Thrown when GetQueryExecution response lacks QueryExecution, Status, or State.
97
+ */
98
+ export declare class AthenaQueryExecutionWaiterMissingStateError extends AthenaQueryExecutionWaiterError {
99
+ readonly detail: string;
100
+ /**
101
+ * @param detail Which part of the response was missing
102
+ */
103
+ constructor(detail: string);
104
+ }
105
+ /**
106
+ * Thrown when State is present but not a known {@link QueryExecutionState} value.
107
+ */
108
+ export declare class AthenaQueryExecutionWaiterUnsupportedStateError extends AthenaQueryExecutionWaiterError {
109
+ readonly state: string;
110
+ /**
111
+ * @param state Unsupported state string returned by Athena
112
+ */
113
+ constructor(state: string);
114
+ }
package/lib/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AthenaQueryExecutionWaiterStateError = exports.AthenaQueryExecutionWaiterTimeoutError = exports.AthenaQueryExecutionWaiterError = exports.AthenaQueryExecutionWaiter = exports.DEFAULT_TIMEOUT_MS = void 0;
3
+ exports.AthenaQueryExecutionWaiterUnsupportedStateError = exports.AthenaQueryExecutionWaiterMissingStateError = exports.AthenaQueryExecutionWaiterStateError = exports.AthenaQueryExecutionWaiterTimeoutError = exports.AthenaQueryExecutionWaiterError = exports.AthenaQueryExecutionWaiter = exports.DEFAULT_TIMEOUT_MS = void 0;
4
4
  const client_athena_1 = require("@aws-sdk/client-athena");
5
+ const wait_predicates_1 = require("./wait-predicates");
5
6
  /** Default polling interval (milliseconds) for query execution status. */
6
7
  const DEFAULT_POLL_INTERVAL_MS = 1000;
7
8
  /**
@@ -40,6 +41,8 @@ class AthenaQueryExecutionWaiter {
40
41
  * @returns Execution state on success (SUCCEEDED)
41
42
  * @throws AthenaQueryExecutionWaiterTimeoutError On timeout
42
43
  * @throws AthenaQueryExecutionWaiterStateError When state is FAILED or CANCELLED
44
+ * @throws AthenaQueryExecutionWaiterMissingStateError When QueryExecution or Status.State is missing
45
+ * @throws AthenaQueryExecutionWaiterUnsupportedStateError When state is not a known QueryExecutionState
43
46
  */
44
47
  async wait(queryExecutionId, waitOptions) {
45
48
  const effectiveTimeoutMs = waitOptions?.timeoutMs ?? exports.DEFAULT_TIMEOUT_MS;
@@ -53,14 +56,18 @@ class AthenaQueryExecutionWaiter {
53
56
  const res = await this.client.send(new client_athena_1.GetQueryExecutionCommand({
54
57
  QueryExecutionId: queryExecutionId,
55
58
  }));
56
- const st = res.QueryExecution?.Status;
57
- const state = st?.State;
58
- const reason = st?.StateChangeReason;
59
- if (state === client_athena_1.QueryExecutionState.SUCCEEDED) {
60
- return state;
59
+ const outcome = (0, wait_predicates_1.classifyQueryExecutionPoll)(res);
60
+ if (outcome.kind === 'succeeded') {
61
+ return client_athena_1.QueryExecutionState.SUCCEEDED;
61
62
  }
62
- if (state === client_athena_1.QueryExecutionState.FAILED || state === client_athena_1.QueryExecutionState.CANCELLED) {
63
- throw new AthenaQueryExecutionWaiterStateError(state, reason ?? 'unknown');
63
+ if (outcome.kind === 'failed') {
64
+ throw new AthenaQueryExecutionWaiterStateError(outcome.state, outcome.reason);
65
+ }
66
+ if (outcome.kind === 'missing') {
67
+ throw new AthenaQueryExecutionWaiterMissingStateError(outcome.detail);
68
+ }
69
+ if (outcome.kind === 'unsupported') {
70
+ throw new AthenaQueryExecutionWaiterUnsupportedStateError(outcome.state);
64
71
  }
65
72
  await new Promise((r) => setTimeout(r, pollIntervalMs));
66
73
  } while (true);
@@ -109,4 +116,32 @@ class AthenaQueryExecutionWaiterStateError extends AthenaQueryExecutionWaiterErr
109
116
  }
110
117
  }
111
118
  exports.AthenaQueryExecutionWaiterStateError = AthenaQueryExecutionWaiterStateError;
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXFHO0FBRXJHLDBFQUEwRTtBQUMxRSxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUV0Qzs7Ozs7Ozs7Ozs7R0FXRztBQUNVLFFBQUEsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUEyQmhEOzs7OztHQUtHO0FBQ0gsTUFBYSwwQkFBMEI7SUFJckM7OztPQUdHO0lBQ0gsWUFDbUIsTUFBb0IsRUFDckMsT0FBMkM7UUFEMUIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUdyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxFQUFFLGNBQWMsSUFBSSx3QkFBd0IsQ0FBQztJQUNuRixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLGdCQUF3QixFQUN4QixXQUE2QztRQUU3QyxNQUFNLGtCQUFrQixHQUFHLFdBQVcsRUFBRSxTQUFTLElBQUksMEJBQWtCLENBQUM7UUFDeEUsTUFBTSxjQUFjLEdBQUcsV0FBVyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDakYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLEdBQUcsQ0FBQztZQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFDM0MsSUFBSSxXQUFXLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFJLHNDQUFzQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksd0NBQXdCLENBQUM7Z0JBQzlELGdCQUFnQixFQUFFLGdCQUFnQjthQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNKLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUF3QyxDQUFDO1lBQzNELE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQztZQUVyQyxJQUFJLEtBQUssS0FBSyxtQ0FBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFBSSxLQUFLLEtBQUssbUNBQW1CLENBQUMsTUFBTSxJQUFJLEtBQUssS0FBSyxtQ0FBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDcEYsTUFBTSxJQUFJLG9DQUFvQyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUM7WUFDN0UsQ0FBQztZQUNELE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLFFBQVEsSUFBSSxFQUFFO0lBQ2pCLENBQUM7Q0FDRjtBQXJERCxnRUFxREM7QUFFRDs7R0FFRztBQUNILE1BQWEsK0JBQWdDLFNBQVEsS0FBSztJQUV4RDs7T0FFRztJQUNILFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGlDQUFpQyxDQUFDO0lBQ2hELENBQUM7Q0FDRjtBQVRELDBFQVNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLHNDQUF1QyxTQUFRLCtCQUErQjtJQUV6Rjs7T0FFRztJQUNILFlBQVksV0FBbUI7UUFDN0IsS0FBSyxDQUFDLGdDQUFnQyxXQUFXLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLEdBQUcsd0NBQXdDLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBVEQsd0ZBU0M7QUFFRDs7R0FFRztBQUNILE1BQWEsb0NBQXFDLFNBQVEsK0JBQStCO0lBRXZGOzs7T0FHRztJQUNILFlBQTRCLEtBQTBCLEVBQWtCLFNBQWlCLFNBQVM7UUFDaEcsS0FBSyxDQUFDLDRDQUE0QyxLQUFLLEtBQUssTUFBTSxFQUFFLENBQUMsQ0FBQztRQUQ1QyxVQUFLLEdBQUwsS0FBSyxDQUFxQjtRQUFrQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUVoRyxJQUFJLENBQUMsSUFBSSxHQUFHLHNDQUFzQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQVZELG9GQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0UXVlcnlFeGVjdXRpb25Db21tYW5kLCBRdWVyeUV4ZWN1dGlvblN0YXRlLCBBdGhlbmFDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtYXRoZW5hJztcblxuLyoqIERlZmF1bHQgcG9sbGluZyBpbnRlcnZhbCAobWlsbGlzZWNvbmRzKSBmb3IgcXVlcnkgZXhlY3V0aW9uIHN0YXR1cy4gKi9cbmNvbnN0IERFRkFVTFRfUE9MTF9JTlRFUlZBTF9NUyA9IDEwMDA7XG5cbi8qKlxuICogRGVmYXVsdCBvdmVyYWxsIHdhaXQgdGltZW91dCAobWlsbGlzZWNvbmRzKSB3aGVuIGB3YWl0KClgIGlzIGNhbGxlZCB3aXRob3V0XG4gKiBgd2FpdE9wdGlvbnMudGltZW91dE1zYC5cbiAqIFRoaXMgY2FwcyB0b3RhbCB3YWxsLWNsb2NrIHRpbWUgZnJvbSB0aGUgc3RhcnQgb2YgYHdhaXQoKWAgdW50aWwgYSB0ZXJtaW5hbCBzdGF0ZVxuICogKG9yIGVycm9yKeKAlGl0IGlzIG5vdCB0aGUgZGVsYXkgYmV0d2VlbiBwb2xscyAoYHBvbGxJbnRlcnZhbE1zYCkuXG4gKlxuICogKipXaHkgMiBtaW51dGVzOioqIEF0aGVuYSBvZnRlbiBleGNlZWRzIGEgZmV3IHNlY29uZHMgKHF1ZXVlaW5nLCBjb2xkIHN0YXJ0LCBtb2RlcmF0ZVxuICogc2NhbnMpLiBUZW4gc2Vjb25kcyBmYWlscyB0b28gb2Z0ZW4gYXMgYSBsaWJyYXJ5IGRlZmF1bHQ7IHVuYm91bmRlZCBvciB2ZXJ5IGxhcmdlXG4gKiBkZWZhdWx0cyByaXNrIGhhbmdpbmcgY2FsbGVycy4gVHdvIG1pbnV0ZXMgaXMgYSBwcmFjdGljYWwgbWlkZGxlIGdyb3VuZOKAlHRpZ2h0IGVub3VnaFxuICogdG8gc3VyZmFjZSBzdHVjayB3b3JrLCBsb25nIGVub3VnaCBmb3IgbWFueSBpbnRlcmFjdGl2ZSB3b3JrbG9hZHMuIFVzZSBhIGxhcmdlclxuICogYHdhaXQoLi4uLCB7IHRpbWVvdXRNcyB9KWAgZm9yIGhlYXZ5IGFuYWx5dGljcyBvciBFVEwuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RJTUVPVVRfTVMgPSAyICogNjAgKiAxMDAwO1xuXG4vKiogT3B0aW9ucyBmb3IgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXIgY29uc3RydWN0b3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQb2xsaW5nIGludGVydmFsIGluIG1pbGxpc2Vjb25kcy5cbiAgICogSW5jcmVhc2UgZm9yIGxvbmctcnVubmluZyBxdWVyaWVzIHRvIHJlZHVjZSBBUEkgY2FsbHMuXG4gICAqIERlZmF1bHRzIHRvIERFRkFVTFRfUE9MTF9JTlRFUlZBTF9NUyAoMTAwMCkgd2hlbiBvbWl0dGVkLlxuICAgKi9cbiAgcG9sbEludGVydmFsTXM/OiBudW1iZXI7XG59XG5cbi8qKiBPcHRpb25zIGZvciB3YWl0KCkuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdE9wdGlvbnMge1xuICAvKipcbiAgICogT3ZlcmFsbCB3YWxsLWNsb2NrIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGlzIHdhaXQgKGZyb20gdGhlIHN0YXJ0IG9mIGB3YWl0KClgXG4gICAqIHVudGlsIGEgdGVybWluYWwgc3RhdGUpLiBOb3QgdGhlIGRlbGF5IGJldHdlZW4gcG9sbHMuXG4gICAqIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX1RJTUVPVVRfTVN9IHdoZW4gb21pdHRlZC5cbiAgICovXG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFBvbGxpbmcgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGlzIHdhaXQuXG4gICAqIE92ZXJyaWRlcyB0aGUgd2FpdGVyJ3MgZGVmYXVsdCBwb2xsIGludGVydmFsIHdoZW4gc3BlY2lmaWVkLlxuICAgKi9cbiAgcG9sbEludGVydmFsTXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogV2FpdHMgZm9yIEF0aGVuYSBxdWVyeSBleGVjdXRpb24gdG8gY29tcGxldGUuXG4gKiBQb2xscyBleGVjdXRpb24gc3RhdHVzIHVudGlsIGl0IGJlY29tZXMgU1VDQ0VFREVELCBGQUlMRUQsIG9yIENBTkNFTExFRC5cbiAqIE92ZXJhbGwgdGltZSBpcyBib3VuZGVkIGJ5IGB3YWl0T3B0aW9ucy50aW1lb3V0TXNgIChvciB7QGxpbmsgREVGQVVMVF9USU1FT1VUX01TfSk7XG4gKiBzcGFjaW5nIGJldHdlZW4gcG9sbHMgaXMgY29udHJvbGxlZCBzZXBhcmF0ZWx5IGJ5IGBwb2xsSW50ZXJ2YWxNc2AuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0UG9sbEludGVydmFsTXM6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGNsaWVudCBBdGhlbmEgQVBJIGNsaWVudFxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBzZXR0aW5ncyAoZS5nLiBwb2xsSW50ZXJ2YWxNcylcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50OiBBdGhlbmFDbGllbnQsXG4gICAgb3B0aW9ucz86IEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy5kZWZhdWx0UG9sbEludGVydmFsTXMgPSBvcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyBERUZBVUxUX1BPTExfSU5URVJWQUxfTVM7XG4gIH1cblxuICAvKipcbiAgICogV2FpdHMgdW50aWwgdGhlIGdpdmVuIHF1ZXJ5IGV4ZWN1dGlvbiBjb21wbGV0ZXMgKG9yIGZhaWxzL2NhbmNlbHMpLlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnlFeGVjdXRpb25JZCBRdWVyeSBleGVjdXRpb24gSUQgdG8gd2FpdCBmb3JcbiAgICogQHBhcmFtIHdhaXRPcHRpb25zIE9wdGlvbmFsIHBlci1jYWxsIHNldHRpbmdzIChgdGltZW91dE1zYCwgYHBvbGxJbnRlcnZhbE1zYClcbiAgICogQHJldHVybnMgRXhlY3V0aW9uIHN0YXRlIG9uIHN1Y2Nlc3MgKFNVQ0NFRURFRClcbiAgICogQHRocm93cyBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlclRpbWVvdXRFcnJvciBPbiB0aW1lb3V0XG4gICAqIEB0aHJvd3MgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJTdGF0ZUVycm9yIFdoZW4gc3RhdGUgaXMgRkFJTEVEIG9yIENBTkNFTExFRFxuICAgKi9cbiAgYXN5bmMgd2FpdChcbiAgICBxdWVyeUV4ZWN1dGlvbklkOiBzdHJpbmcsXG4gICAgd2FpdE9wdGlvbnM/OiBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRPcHRpb25zLFxuICApOiBQcm9taXNlPFF1ZXJ5RXhlY3V0aW9uU3RhdGU+IHtcbiAgICBjb25zdCBlZmZlY3RpdmVUaW1lb3V0TXMgPSB3YWl0T3B0aW9ucz8udGltZW91dE1zID8/IERFRkFVTFRfVElNRU9VVF9NUztcbiAgICBjb25zdCBwb2xsSW50ZXJ2YWxNcyA9IHdhaXRPcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyB0aGlzLmRlZmF1bHRQb2xsSW50ZXJ2YWxNcztcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIGRvIHtcbiAgICAgIGNvbnN0IGVsYXBzZWRUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgIGlmIChlbGFwc2VkVGltZSA+IGVmZmVjdGl2ZVRpbWVvdXRNcykge1xuICAgICAgICB0aHJvdyBuZXcgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJUaW1lb3V0RXJyb3IoZWxhcHNlZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNsaWVudC5zZW5kKG5ldyBHZXRRdWVyeUV4ZWN1dGlvbkNvbW1hbmQoe1xuICAgICAgICBRdWVyeUV4ZWN1dGlvbklkOiBxdWVyeUV4ZWN1dGlvbklkLFxuICAgICAgfSkpO1xuICAgICAgY29uc3Qgc3QgPSByZXMuUXVlcnlFeGVjdXRpb24/LlN0YXR1cztcbiAgICAgIGNvbnN0IHN0YXRlID0gc3Q/LlN0YXRlIGFzIFF1ZXJ5RXhlY3V0aW9uU3RhdGUgfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCByZWFzb24gPSBzdD8uU3RhdGVDaGFuZ2VSZWFzb247XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gUXVlcnlFeGVjdXRpb25TdGF0ZS5TVUNDRUVERUQpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlID09PSBRdWVyeUV4ZWN1dGlvblN0YXRlLkZBSUxFRCB8fCBzdGF0ZSA9PT0gUXVlcnlFeGVjdXRpb25TdGF0ZS5DQU5DRUxMRUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyU3RhdGVFcnJvcihzdGF0ZSwgcmVhc29uID8/ICd1bmtub3duJyk7XG4gICAgICB9XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCBwb2xsSW50ZXJ2YWxNcykpO1xuICAgIH0gd2hpbGUgKHRydWUpO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBlcnJvciBmb3IgQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiB3YWl0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gbWVzc2FnZSBFcnJvciBtZXNzYWdlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiB3YWl0aW5nIGZvciBxdWVyeSBleGVjdXRpb24gdGltZXMgb3V0LlxuICovXG5leHBvcnQgY2xhc3MgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJUaW1lb3V0RXJyb3IgZXh0ZW5kcyBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlckVycm9yIHtcblxuICAvKipcbiAgICogQHBhcmFtIGVsYXBzZWRUaW1lIEVsYXBzZWQgdGltZSBpbiBtaWxsaXNlY29uZHMgdW50aWwgdGltZW91dFxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxhcHNlZFRpbWU6IG51bWJlcikge1xuICAgIHN1cGVyKGBBdGhlbmEgcXVlcnkgdGltZWQgb3V0IGFmdGVyICR7ZWxhcHNlZFRpbWV9bXNgKTtcbiAgICB0aGlzLm5hbWUgPSAnQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJUaW1lb3V0RXJyb3InO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gdGhlIHF1ZXJ5IGVuZHMgaW4gRkFJTEVEIG9yIENBTkNFTExFRCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyU3RhdGVFcnJvciBleHRlbmRzIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gc3RhdGUgRmluYWwgZXhlY3V0aW9uIHN0YXRlIChGQUlMRUQgb3IgQ0FOQ0VMTEVEKVxuICAgKiBAcGFyYW0gcmVhc29uIFJlYXNvbiBmb3IgdGhlIHN0YXRlIGNoYW5nZSAoZS5nLiBlcnJvciBkZXRhaWxzKS4gRGVmYXVsdHMgdG8gJ3Vua25vd24nIHdoZW4gb21pdHRlZFxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHN0YXRlOiBRdWVyeUV4ZWN1dGlvblN0YXRlLCBwdWJsaWMgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmcgPSAndW5rbm93bicpIHtcbiAgICBzdXBlcihgQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiBmYWlsZWQgd2l0aCBzdGF0ZSAke3N0YXRlfTogJHtyZWFzb259YCk7XG4gICAgdGhpcy5uYW1lID0gJ0F0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyU3RhdGVFcnJvcic7XG4gIH1cbn1cbiJdfQ==
119
+ /**
120
+ * Thrown when GetQueryExecution response lacks QueryExecution, Status, or State.
121
+ */
122
+ class AthenaQueryExecutionWaiterMissingStateError extends AthenaQueryExecutionWaiterError {
123
+ /**
124
+ * @param detail Which part of the response was missing
125
+ */
126
+ constructor(detail) {
127
+ super(`Athena query execution status is missing or incomplete: ${detail}`);
128
+ this.detail = detail;
129
+ this.name = 'AthenaQueryExecutionWaiterMissingStateError';
130
+ }
131
+ }
132
+ exports.AthenaQueryExecutionWaiterMissingStateError = AthenaQueryExecutionWaiterMissingStateError;
133
+ /**
134
+ * Thrown when State is present but not a known {@link QueryExecutionState} value.
135
+ */
136
+ class AthenaQueryExecutionWaiterUnsupportedStateError extends AthenaQueryExecutionWaiterError {
137
+ /**
138
+ * @param state Unsupported state string returned by Athena
139
+ */
140
+ constructor(state) {
141
+ super(`Athena query execution returned unsupported state: ${state}`);
142
+ this.state = state;
143
+ this.name = 'AthenaQueryExecutionWaiterUnsupportedStateError';
144
+ }
145
+ }
146
+ exports.AthenaQueryExecutionWaiterUnsupportedStateError = AthenaQueryExecutionWaiterUnsupportedStateError;
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXFHO0FBQ3JHLHVEQUErRDtBQUUvRCwwRUFBMEU7QUFDMUUsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUM7QUFFdEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDVSxRQUFBLGtCQUFrQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBMkJoRDs7Ozs7R0FLRztBQUNILE1BQWEsMEJBQTBCO0lBSXJDOzs7T0FHRztJQUNILFlBQ21CLE1BQW9CLEVBQ3JDLE9BQTJDO1FBRDFCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFHckMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksd0JBQXdCLENBQUM7SUFDbkYsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLGdCQUF3QixFQUN4QixXQUE2QztRQUU3QyxNQUFNLGtCQUFrQixHQUFHLFdBQVcsRUFBRSxTQUFTLElBQUksMEJBQWtCLENBQUM7UUFDeEUsTUFBTSxjQUFjLEdBQUcsV0FBVyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDakYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLEdBQUcsQ0FBQztZQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFDM0MsSUFBSSxXQUFXLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFJLHNDQUFzQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksd0NBQXdCLENBQUM7Z0JBQzlELGdCQUFnQixFQUFFLGdCQUFnQjthQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNKLE1BQU0sT0FBTyxHQUFHLElBQUEsNENBQTBCLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFFaEQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLG1DQUFtQixDQUFDLFNBQVMsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5QixNQUFNLElBQUksb0NBQW9DLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEYsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxJQUFJLDJDQUEyQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksK0NBQStDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNFLENBQUM7WUFFRCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxRQUFRLElBQUksRUFBRTtJQUNqQixDQUFDO0NBQ0Y7QUE1REQsZ0VBNERDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLCtCQUFnQyxTQUFRLEtBQUs7SUFFeEQ7O09BRUc7SUFDSCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQ0FBaUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFURCwwRUFTQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxzQ0FBdUMsU0FBUSwrQkFBK0I7SUFFekY7O09BRUc7SUFDSCxZQUFZLFdBQW1CO1FBQzdCLEtBQUssQ0FBQyxnQ0FBZ0MsV0FBVyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxHQUFHLHdDQUF3QyxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQVRELHdGQVNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG9DQUFxQyxTQUFRLCtCQUErQjtJQUV2Rjs7O09BR0c7SUFDSCxZQUE0QixLQUEwQixFQUFrQixTQUFpQixTQUFTO1FBQ2hHLEtBQUssQ0FBQyw0Q0FBNEMsS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFENUMsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFBa0IsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFFaEcsSUFBSSxDQUFDLElBQUksR0FBRyxzQ0FBc0MsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUFWRCxvRkFVQztBQUVEOztHQUVHO0FBQ0gsTUFBYSwyQ0FBNEMsU0FBUSwrQkFBK0I7SUFFOUY7O09BRUc7SUFDSCxZQUE0QixNQUFjO1FBQ3hDLEtBQUssQ0FBQywyREFBMkQsTUFBTSxFQUFFLENBQUMsQ0FBQztRQURqRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRXhDLElBQUksQ0FBQyxJQUFJLEdBQUcsNkNBQTZDLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBVEQsa0dBU0M7QUFFRDs7R0FFRztBQUNILE1BQWEsK0NBQWdELFNBQVEsK0JBQStCO0lBRWxHOztPQUVHO0lBQ0gsWUFBNEIsS0FBYTtRQUN2QyxLQUFLLENBQUMsc0RBQXNELEtBQUssRUFBRSxDQUFDLENBQUM7UUFEM0MsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUV2QyxJQUFJLENBQUMsSUFBSSxHQUFHLGlEQUFpRCxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQVRELDBHQVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0UXVlcnlFeGVjdXRpb25Db21tYW5kLCBRdWVyeUV4ZWN1dGlvblN0YXRlLCBBdGhlbmFDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtYXRoZW5hJztcbmltcG9ydCB7IGNsYXNzaWZ5UXVlcnlFeGVjdXRpb25Qb2xsIH0gZnJvbSAnLi93YWl0LXByZWRpY2F0ZXMnO1xuXG4vKiogRGVmYXVsdCBwb2xsaW5nIGludGVydmFsIChtaWxsaXNlY29uZHMpIGZvciBxdWVyeSBleGVjdXRpb24gc3RhdHVzLiAqL1xuY29uc3QgREVGQVVMVF9QT0xMX0lOVEVSVkFMX01TID0gMTAwMDtcblxuLyoqXG4gKiBEZWZhdWx0IG92ZXJhbGwgd2FpdCB0aW1lb3V0IChtaWxsaXNlY29uZHMpIHdoZW4gYHdhaXQoKWAgaXMgY2FsbGVkIHdpdGhvdXRcbiAqIGB3YWl0T3B0aW9ucy50aW1lb3V0TXNgLlxuICogVGhpcyBjYXBzIHRvdGFsIHdhbGwtY2xvY2sgdGltZSBmcm9tIHRoZSBzdGFydCBvZiBgd2FpdCgpYCB1bnRpbCBhIHRlcm1pbmFsIHN0YXRlXG4gKiAob3IgZXJyb3Ip4oCUaXQgaXMgbm90IHRoZSBkZWxheSBiZXR3ZWVuIHBvbGxzIChgcG9sbEludGVydmFsTXNgKS5cbiAqXG4gKiAqKldoeSAyIG1pbnV0ZXM6KiogQXRoZW5hIG9mdGVuIGV4Y2VlZHMgYSBmZXcgc2Vjb25kcyAocXVldWVpbmcsIGNvbGQgc3RhcnQsIG1vZGVyYXRlXG4gKiBzY2FucykuIFRlbiBzZWNvbmRzIGZhaWxzIHRvbyBvZnRlbiBhcyBhIGxpYnJhcnkgZGVmYXVsdDsgdW5ib3VuZGVkIG9yIHZlcnkgbGFyZ2VcbiAqIGRlZmF1bHRzIHJpc2sgaGFuZ2luZyBjYWxsZXJzLiBUd28gbWludXRlcyBpcyBhIHByYWN0aWNhbCBtaWRkbGUgZ3JvdW5k4oCUdGlnaHQgZW5vdWdoXG4gKiB0byBzdXJmYWNlIHN0dWNrIHdvcmssIGxvbmcgZW5vdWdoIGZvciBtYW55IGludGVyYWN0aXZlIHdvcmtsb2Fkcy4gVXNlIGEgbGFyZ2VyXG4gKiBgd2FpdCguLi4sIHsgdGltZW91dE1zIH0pYCBmb3IgaGVhdnkgYW5hbHl0aWNzIG9yIEVUTC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRU9VVF9NUyA9IDIgKiA2MCAqIDEwMDA7XG5cbi8qKiBPcHRpb25zIGZvciBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlciBjb25zdHJ1Y3Rvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFBvbGxpbmcgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBJbmNyZWFzZSBmb3IgbG9uZy1ydW5uaW5nIHF1ZXJpZXMgdG8gcmVkdWNlIEFQSSBjYWxscy5cbiAgICogRGVmYXVsdHMgdG8gREVGQVVMVF9QT0xMX0lOVEVSVkFMX01TICgxMDAwKSB3aGVuIG9taXR0ZWQuXG4gICAqL1xuICBwb2xsSW50ZXJ2YWxNcz86IG51bWJlcjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHdhaXQoKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPdmVyYWxsIHdhbGwtY2xvY2sgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHRoaXMgd2FpdCAoZnJvbSB0aGUgc3RhcnQgb2YgYHdhaXQoKWBcbiAgICogdW50aWwgYSB0ZXJtaW5hbCBzdGF0ZSkuIE5vdCB0aGUgZGVsYXkgYmV0d2VlbiBwb2xscy5cbiAgICogRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfVElNRU9VVF9NU30gd2hlbiBvbWl0dGVkLlxuICAgKi9cbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogUG9sbGluZyBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgZm9yIHRoaXMgd2FpdC5cbiAgICogT3ZlcnJpZGVzIHRoZSB3YWl0ZXIncyBkZWZhdWx0IHBvbGwgaW50ZXJ2YWwgd2hlbiBzcGVjaWZpZWQuXG4gICAqL1xuICBwb2xsSW50ZXJ2YWxNcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBXYWl0cyBmb3IgQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiB0byBjb21wbGV0ZS5cbiAqIFBvbGxzIGV4ZWN1dGlvbiBzdGF0dXMgdW50aWwgaXQgYmVjb21lcyBTVUNDRUVERUQsIEZBSUxFRCwgb3IgQ0FOQ0VMTEVELlxuICogT3ZlcmFsbCB0aW1lIGlzIGJvdW5kZWQgYnkgYHdhaXRPcHRpb25zLnRpbWVvdXRNc2AgKG9yIHtAbGluayBERUZBVUxUX1RJTUVPVVRfTVN9KTtcbiAqIHNwYWNpbmcgYmV0d2VlbiBwb2xscyBpcyBjb250cm9sbGVkIHNlcGFyYXRlbHkgYnkgYHBvbGxJbnRlcnZhbE1zYC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRQb2xsSW50ZXJ2YWxNczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gY2xpZW50IEF0aGVuYSBBUEkgY2xpZW50XG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHNldHRpbmdzIChlLmcuIHBvbGxJbnRlcnZhbE1zKVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IEF0aGVuYUNsaWVudCxcbiAgICBvcHRpb25zPzogQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJPcHRpb25zLFxuICApIHtcbiAgICB0aGlzLmRlZmF1bHRQb2xsSW50ZXJ2YWxNcyA9IG9wdGlvbnM/LnBvbGxJbnRlcnZhbE1zID8/IERFRkFVTFRfUE9MTF9JTlRFUlZBTF9NUztcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyB1bnRpbCB0aGUgZ2l2ZW4gcXVlcnkgZXhlY3V0aW9uIGNvbXBsZXRlcyAob3IgZmFpbHMvY2FuY2VscykuXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeUV4ZWN1dGlvbklkIFF1ZXJ5IGV4ZWN1dGlvbiBJRCB0byB3YWl0IGZvclxuICAgKiBAcGFyYW0gd2FpdE9wdGlvbnMgT3B0aW9uYWwgcGVyLWNhbGwgc2V0dGluZ3MgKGB0aW1lb3V0TXNgLCBgcG9sbEludGVydmFsTXNgKVxuICAgKiBAcmV0dXJucyBFeGVjdXRpb24gc3RhdGUgb24gc3VjY2VzcyAoU1VDQ0VFREVEKVxuICAgKiBAdGhyb3dzIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyVGltZW91dEVycm9yIE9uIHRpbWVvdXRcbiAgICogQHRocm93cyBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlclN0YXRlRXJyb3IgV2hlbiBzdGF0ZSBpcyBGQUlMRUQgb3IgQ0FOQ0VMTEVEXG4gICAqIEB0aHJvd3MgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJNaXNzaW5nU3RhdGVFcnJvciBXaGVuIFF1ZXJ5RXhlY3V0aW9uIG9yIFN0YXR1cy5TdGF0ZSBpcyBtaXNzaW5nXG4gICAqIEB0aHJvd3MgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJVbnN1cHBvcnRlZFN0YXRlRXJyb3IgV2hlbiBzdGF0ZSBpcyBub3QgYSBrbm93biBRdWVyeUV4ZWN1dGlvblN0YXRlXG4gICAqL1xuICBhc3luYyB3YWl0KFxuICAgIHF1ZXJ5RXhlY3V0aW9uSWQ6IHN0cmluZyxcbiAgICB3YWl0T3B0aW9ucz86IEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdE9wdGlvbnMsXG4gICk6IFByb21pc2U8UXVlcnlFeGVjdXRpb25TdGF0ZT4ge1xuICAgIGNvbnN0IGVmZmVjdGl2ZVRpbWVvdXRNcyA9IHdhaXRPcHRpb25zPy50aW1lb3V0TXMgPz8gREVGQVVMVF9USU1FT1VUX01TO1xuICAgIGNvbnN0IHBvbGxJbnRlcnZhbE1zID0gd2FpdE9wdGlvbnM/LnBvbGxJbnRlcnZhbE1zID8/IHRoaXMuZGVmYXVsdFBvbGxJbnRlcnZhbE1zO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgZG8ge1xuICAgICAgY29uc3QgZWxhcHNlZFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgICAgaWYgKGVsYXBzZWRUaW1lID4gZWZmZWN0aXZlVGltZW91dE1zKSB7XG4gICAgICAgIHRocm93IG5ldyBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlclRpbWVvdXRFcnJvcihlbGFwc2VkVGltZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY2xpZW50LnNlbmQobmV3IEdldFF1ZXJ5RXhlY3V0aW9uQ29tbWFuZCh7XG4gICAgICAgIFF1ZXJ5RXhlY3V0aW9uSWQ6IHF1ZXJ5RXhlY3V0aW9uSWQsXG4gICAgICB9KSk7XG4gICAgICBjb25zdCBvdXRjb21lID0gY2xhc3NpZnlRdWVyeUV4ZWN1dGlvblBvbGwocmVzKTtcblxuICAgICAgaWYgKG91dGNvbWUua2luZCA9PT0gJ3N1Y2NlZWRlZCcpIHtcbiAgICAgICAgcmV0dXJuIFF1ZXJ5RXhlY3V0aW9uU3RhdGUuU1VDQ0VFREVEO1xuICAgICAgfVxuICAgICAgaWYgKG91dGNvbWUua2luZCA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyU3RhdGVFcnJvcihvdXRjb21lLnN0YXRlLCBvdXRjb21lLnJlYXNvbik7XG4gICAgICB9XG4gICAgICBpZiAob3V0Y29tZS5raW5kID09PSAnbWlzc2luZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyTWlzc2luZ1N0YXRlRXJyb3Iob3V0Y29tZS5kZXRhaWwpO1xuICAgICAgfVxuICAgICAgaWYgKG91dGNvbWUua2luZCA9PT0gJ3Vuc3VwcG9ydGVkJykge1xuICAgICAgICB0aHJvdyBuZXcgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJVbnN1cHBvcnRlZFN0YXRlRXJyb3Iob3V0Y29tZS5zdGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIHBvbGxJbnRlcnZhbE1zKSk7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGVycm9yIGZvciBBdGhlbmEgcXVlcnkgZXhlY3V0aW9uIHdhaXRlci5cbiAqL1xuZXhwb3J0IGNsYXNzIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBtZXNzYWdlIEVycm9yIG1lc3NhZ2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlckVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIHdhaXRpbmcgZm9yIHF1ZXJ5IGV4ZWN1dGlvbiB0aW1lcyBvdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlclRpbWVvdXRFcnJvciBleHRlbmRzIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gZWxhcHNlZFRpbWUgRWxhcHNlZCB0aW1lIGluIG1pbGxpc2Vjb25kcyB1bnRpbCB0aW1lb3V0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGFwc2VkVGltZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoYEF0aGVuYSBxdWVyeSB0aW1lZCBvdXQgYWZ0ZXIgJHtlbGFwc2VkVGltZX1tc2ApO1xuICAgIHRoaXMubmFtZSA9ICdBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlclRpbWVvdXRFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiB0aGUgcXVlcnkgZW5kcyBpbiBGQUlMRUQgb3IgQ0FOQ0VMTEVEIHN0YXRlLlxuICovXG5leHBvcnQgY2xhc3MgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJTdGF0ZUVycm9yIGV4dGVuZHMgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJFcnJvciB7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzdGF0ZSBGaW5hbCBleGVjdXRpb24gc3RhdGUgKEZBSUxFRCBvciBDQU5DRUxMRUQpXG4gICAqIEBwYXJhbSByZWFzb24gUmVhc29uIGZvciB0aGUgc3RhdGUgY2hhbmdlIChlLmcuIGVycm9yIGRldGFpbHMpLiBEZWZhdWx0cyB0byAndW5rbm93bicgd2hlbiBvbWl0dGVkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgc3RhdGU6IFF1ZXJ5RXhlY3V0aW9uU3RhdGUsIHB1YmxpYyByZWFkb25seSByZWFzb246IHN0cmluZyA9ICd1bmtub3duJykge1xuICAgIHN1cGVyKGBBdGhlbmEgcXVlcnkgZXhlY3V0aW9uIGZhaWxlZCB3aXRoIHN0YXRlICR7c3RhdGV9OiAke3JlYXNvbn1gKTtcbiAgICB0aGlzLm5hbWUgPSAnQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJTdGF0ZUVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIEdldFF1ZXJ5RXhlY3V0aW9uIHJlc3BvbnNlIGxhY2tzIFF1ZXJ5RXhlY3V0aW9uLCBTdGF0dXMsIG9yIFN0YXRlLlxuICovXG5leHBvcnQgY2xhc3MgQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJNaXNzaW5nU3RhdGVFcnJvciBleHRlbmRzIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gZGV0YWlsIFdoaWNoIHBhcnQgb2YgdGhlIHJlc3BvbnNlIHdhcyBtaXNzaW5nXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZGV0YWlsOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiBzdGF0dXMgaXMgbWlzc2luZyBvciBpbmNvbXBsZXRlOiAke2RldGFpbH1gKTtcbiAgICB0aGlzLm5hbWUgPSAnQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJNaXNzaW5nU3RhdGVFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBTdGF0ZSBpcyBwcmVzZW50IGJ1dCBub3QgYSBrbm93biB7QGxpbmsgUXVlcnlFeGVjdXRpb25TdGF0ZX0gdmFsdWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdGhlbmFRdWVyeUV4ZWN1dGlvbldhaXRlclVuc3VwcG9ydGVkU3RhdGVFcnJvciBleHRlbmRzIEF0aGVuYVF1ZXJ5RXhlY3V0aW9uV2FpdGVyRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gc3RhdGUgVW5zdXBwb3J0ZWQgc3RhdGUgc3RyaW5nIHJldHVybmVkIGJ5IEF0aGVuYVxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHN0YXRlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQXRoZW5hIHF1ZXJ5IGV4ZWN1dGlvbiByZXR1cm5lZCB1bnN1cHBvcnRlZCBzdGF0ZTogJHtzdGF0ZX1gKTtcbiAgICB0aGlzLm5hbWUgPSAnQXRoZW5hUXVlcnlFeGVjdXRpb25XYWl0ZXJVbnN1cHBvcnRlZFN0YXRlRXJyb3InO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { QueryExecutionState } from '@aws-sdk/client-athena';
2
+ /** Minimal GetQueryExecution shape used for polling (State may be unknown at runtime). */
3
+ export interface QueryExecutionPollResponse {
4
+ QueryExecution?: {
5
+ Status?: {
6
+ State?: string;
7
+ StateChangeReason?: string;
8
+ };
9
+ };
10
+ }
11
+ /** Result of classifying a single GetQueryExecution poll. */
12
+ export type QueryExecutionPollOutcome = {
13
+ readonly kind: 'succeeded';
14
+ } | {
15
+ readonly kind: 'failed';
16
+ readonly state: typeof QueryExecutionState.FAILED | typeof QueryExecutionState.CANCELLED;
17
+ readonly reason: string;
18
+ } | {
19
+ readonly kind: 'continue';
20
+ } | {
21
+ readonly kind: 'missing';
22
+ readonly detail: string;
23
+ } | {
24
+ readonly kind: 'unsupported';
25
+ readonly state: string;
26
+ };
27
+ /**
28
+ * Classifies GetQueryExecution response for the waiter poll loop.
29
+ *
30
+ * @param response GetQueryExecution API response (or subset)
31
+ * @returns How the waiter should proceed for this poll
32
+ */
33
+ export declare const classifyQueryExecutionPoll: (response: QueryExecutionPollResponse) => QueryExecutionPollOutcome;
34
+ /**
35
+ * @param outcome Outcome from {@link classifyQueryExecutionPoll}
36
+ * @returns Whether the waiter should poll again after the interval
37
+ */
38
+ export declare const shouldContinuePolling: (outcome: QueryExecutionPollOutcome) => boolean;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldContinuePolling = exports.classifyQueryExecutionPoll = void 0;
4
+ const client_athena_1 = require("@aws-sdk/client-athena");
5
+ const IN_PROGRESS_STATES = new Set([
6
+ client_athena_1.QueryExecutionState.QUEUED,
7
+ client_athena_1.QueryExecutionState.RUNNING,
8
+ ]);
9
+ /**
10
+ * Classifies GetQueryExecution response for the waiter poll loop.
11
+ *
12
+ * @param response GetQueryExecution API response (or subset)
13
+ * @returns How the waiter should proceed for this poll
14
+ */
15
+ const classifyQueryExecutionPoll = (response) => {
16
+ const queryExecution = response.QueryExecution;
17
+ if (queryExecution === undefined) {
18
+ return {
19
+ kind: 'missing',
20
+ detail: 'QueryExecution is missing from GetQueryExecution response',
21
+ };
22
+ }
23
+ const status = queryExecution.Status;
24
+ if (status === undefined) {
25
+ return {
26
+ kind: 'missing',
27
+ detail: 'QueryExecution.Status is missing',
28
+ };
29
+ }
30
+ const state = status.State;
31
+ if (state === undefined) {
32
+ return {
33
+ kind: 'missing',
34
+ detail: 'QueryExecution.Status.State is missing',
35
+ };
36
+ }
37
+ if (state === client_athena_1.QueryExecutionState.SUCCEEDED) {
38
+ return { kind: 'succeeded' };
39
+ }
40
+ if (state === client_athena_1.QueryExecutionState.FAILED) {
41
+ return {
42
+ kind: 'failed',
43
+ state: client_athena_1.QueryExecutionState.FAILED,
44
+ reason: status.StateChangeReason ?? 'unknown',
45
+ };
46
+ }
47
+ if (state === client_athena_1.QueryExecutionState.CANCELLED) {
48
+ return {
49
+ kind: 'failed',
50
+ state: client_athena_1.QueryExecutionState.CANCELLED,
51
+ reason: status.StateChangeReason ?? 'unknown',
52
+ };
53
+ }
54
+ if (IN_PROGRESS_STATES.has(state)) {
55
+ return { kind: 'continue' };
56
+ }
57
+ return { kind: 'unsupported', state };
58
+ };
59
+ exports.classifyQueryExecutionPoll = classifyQueryExecutionPoll;
60
+ /**
61
+ * @param outcome Outcome from {@link classifyQueryExecutionPoll}
62
+ * @returns Whether the waiter should poll again after the interval
63
+ */
64
+ const shouldContinuePolling = (outcome) => outcome.kind === 'continue';
65
+ exports.shouldContinuePolling = shouldContinuePolling;
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1wcmVkaWNhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dhaXQtcHJlZGljYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwREFBNkQ7QUF3QjdELE1BQU0sa0JBQWtCLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ3RELG1DQUFtQixDQUFDLE1BQU07SUFDMUIsbUNBQW1CLENBQUMsT0FBTztDQUM1QixDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNJLE1BQU0sMEJBQTBCLEdBQUcsQ0FDeEMsUUFBb0MsRUFDVCxFQUFFO0lBQzdCLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7SUFDL0MsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDakMsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLDJEQUEyRDtTQUNwRSxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDckMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDekIsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLGtDQUFrQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDeEIsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLHdDQUF3QztTQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksS0FBSyxLQUFLLG1DQUFtQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksS0FBSyxLQUFLLG1DQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pDLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxtQ0FBbUIsQ0FBQyxNQUFNO1lBQ2pDLE1BQU0sRUFBRSxNQUFNLENBQUMsaUJBQWlCLElBQUksU0FBUztTQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksS0FBSyxLQUFLLG1DQUFtQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzVDLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxtQ0FBbUIsQ0FBQyxTQUFTO1lBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsaUJBQWlCLElBQUksU0FBUztTQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBbkRXLFFBQUEsMEJBQTBCLDhCQW1EckM7QUFFRjs7O0dBR0c7QUFDSSxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBa0MsRUFBVyxFQUFFLENBQ25GLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBRGpCLFFBQUEscUJBQXFCLHlCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlFeGVjdXRpb25TdGF0ZSB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1hdGhlbmEnO1xuXG4vKiogTWluaW1hbCBHZXRRdWVyeUV4ZWN1dGlvbiBzaGFwZSB1c2VkIGZvciBwb2xsaW5nIChTdGF0ZSBtYXkgYmUgdW5rbm93biBhdCBydW50aW1lKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlFeGVjdXRpb25Qb2xsUmVzcG9uc2Uge1xuICBRdWVyeUV4ZWN1dGlvbj86IHtcbiAgICBTdGF0dXM/OiB7XG4gICAgICBTdGF0ZT86IHN0cmluZztcbiAgICAgIFN0YXRlQ2hhbmdlUmVhc29uPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG59XG5cbi8qKiBSZXN1bHQgb2YgY2xhc3NpZnlpbmcgYSBzaW5nbGUgR2V0UXVlcnlFeGVjdXRpb24gcG9sbC4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RXhlY3V0aW9uUG9sbE91dGNvbWUgPVxuICB8IHsgcmVhZG9ubHkga2luZDogJ3N1Y2NlZWRlZCcgfVxuICB8IHtcbiAgICByZWFkb25seSBraW5kOiAnZmFpbGVkJztcbiAgICByZWFkb25seSBzdGF0ZTogdHlwZW9mIFF1ZXJ5RXhlY3V0aW9uU3RhdGUuRkFJTEVEIHwgdHlwZW9mIFF1ZXJ5RXhlY3V0aW9uU3RhdGUuQ0FOQ0VMTEVEO1xuICAgIHJlYWRvbmx5IHJlYXNvbjogc3RyaW5nO1xuICB9XG4gIHwgeyByZWFkb25seSBraW5kOiAnY29udGludWUnIH1cbiAgfCB7IHJlYWRvbmx5IGtpbmQ6ICdtaXNzaW5nJzsgcmVhZG9ubHkgZGV0YWlsOiBzdHJpbmcgfVxuICB8IHsgcmVhZG9ubHkga2luZDogJ3Vuc3VwcG9ydGVkJzsgcmVhZG9ubHkgc3RhdGU6IHN0cmluZyB9O1xuXG5jb25zdCBJTl9QUk9HUkVTU19TVEFURVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgUXVlcnlFeGVjdXRpb25TdGF0ZS5RVUVVRUQsXG4gIFF1ZXJ5RXhlY3V0aW9uU3RhdGUuUlVOTklORyxcbl0pO1xuXG4vKipcbiAqIENsYXNzaWZpZXMgR2V0UXVlcnlFeGVjdXRpb24gcmVzcG9uc2UgZm9yIHRoZSB3YWl0ZXIgcG9sbCBsb29wLlxuICpcbiAqIEBwYXJhbSByZXNwb25zZSBHZXRRdWVyeUV4ZWN1dGlvbiBBUEkgcmVzcG9uc2UgKG9yIHN1YnNldClcbiAqIEByZXR1cm5zIEhvdyB0aGUgd2FpdGVyIHNob3VsZCBwcm9jZWVkIGZvciB0aGlzIHBvbGxcbiAqL1xuZXhwb3J0IGNvbnN0IGNsYXNzaWZ5UXVlcnlFeGVjdXRpb25Qb2xsID0gKFxuICByZXNwb25zZTogUXVlcnlFeGVjdXRpb25Qb2xsUmVzcG9uc2UsXG4pOiBRdWVyeUV4ZWN1dGlvblBvbGxPdXRjb21lID0+IHtcbiAgY29uc3QgcXVlcnlFeGVjdXRpb24gPSByZXNwb25zZS5RdWVyeUV4ZWN1dGlvbjtcbiAgaWYgKHF1ZXJ5RXhlY3V0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ21pc3NpbmcnLFxuICAgICAgZGV0YWlsOiAnUXVlcnlFeGVjdXRpb24gaXMgbWlzc2luZyBmcm9tIEdldFF1ZXJ5RXhlY3V0aW9uIHJlc3BvbnNlJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzID0gcXVlcnlFeGVjdXRpb24uU3RhdHVzO1xuICBpZiAoc3RhdHVzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ21pc3NpbmcnLFxuICAgICAgZGV0YWlsOiAnUXVlcnlFeGVjdXRpb24uU3RhdHVzIGlzIG1pc3NpbmcnLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHN0YXR1cy5TdGF0ZTtcbiAgaWYgKHN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ21pc3NpbmcnLFxuICAgICAgZGV0YWlsOiAnUXVlcnlFeGVjdXRpb24uU3RhdHVzLlN0YXRlIGlzIG1pc3NpbmcnLFxuICAgIH07XG4gIH1cblxuICBpZiAoc3RhdGUgPT09IFF1ZXJ5RXhlY3V0aW9uU3RhdGUuU1VDQ0VFREVEKSB7XG4gICAgcmV0dXJuIHsga2luZDogJ3N1Y2NlZWRlZCcgfTtcbiAgfVxuXG4gIGlmIChzdGF0ZSA9PT0gUXVlcnlFeGVjdXRpb25TdGF0ZS5GQUlMRUQpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ2ZhaWxlZCcsXG4gICAgICBzdGF0ZTogUXVlcnlFeGVjdXRpb25TdGF0ZS5GQUlMRUQsXG4gICAgICByZWFzb246IHN0YXR1cy5TdGF0ZUNoYW5nZVJlYXNvbiA/PyAndW5rbm93bicsXG4gICAgfTtcbiAgfVxuICBpZiAoc3RhdGUgPT09IFF1ZXJ5RXhlY3V0aW9uU3RhdGUuQ0FOQ0VMTEVEKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6ICdmYWlsZWQnLFxuICAgICAgc3RhdGU6IFF1ZXJ5RXhlY3V0aW9uU3RhdGUuQ0FOQ0VMTEVELFxuICAgICAgcmVhc29uOiBzdGF0dXMuU3RhdGVDaGFuZ2VSZWFzb24gPz8gJ3Vua25vd24nLFxuICAgIH07XG4gIH1cblxuICBpZiAoSU5fUFJPR1JFU1NfU1RBVEVTLmhhcyhzdGF0ZSkpIHtcbiAgICByZXR1cm4geyBraW5kOiAnY29udGludWUnIH07XG4gIH1cblxuICByZXR1cm4geyBraW5kOiAndW5zdXBwb3J0ZWQnLCBzdGF0ZSB9O1xufTtcblxuLyoqXG4gKiBAcGFyYW0gb3V0Y29tZSBPdXRjb21lIGZyb20ge0BsaW5rIGNsYXNzaWZ5UXVlcnlFeGVjdXRpb25Qb2xsfVxuICogQHJldHVybnMgV2hldGhlciB0aGUgd2FpdGVyIHNob3VsZCBwb2xsIGFnYWluIGFmdGVyIHRoZSBpbnRlcnZhbFxuICovXG5leHBvcnQgY29uc3Qgc2hvdWxkQ29udGludWVQb2xsaW5nID0gKG91dGNvbWU6IFF1ZXJ5RXhlY3V0aW9uUG9sbE91dGNvbWUpOiBib29sZWFuID0+XG4gIG91dGNvbWUua2luZCA9PT0gJ2NvbnRpbnVlJztcbiJdfQ==
package/package.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "name": "athena-query-execution-waiter",
3
+ "description": "A small library that waits for an AWS Athena query execution to complete. It polls the Athena API until the execution reaches a terminal state: SUCCEEDED, FAILED, or CANCELLED.",
3
4
  "repository": {
4
5
  "type": "git",
5
6
  "url": "https://github.com/gammarers-aws-sdk-extensions/athena-query-execution-waiter.git"
@@ -50,6 +51,14 @@
50
51
  "dependencies": {
51
52
  "@aws-sdk/client-athena": "^3.983.0"
52
53
  },
54
+ "keywords": [
55
+ "athena",
56
+ "aws",
57
+ "aws-sdk",
58
+ "execution",
59
+ "query",
60
+ "waiter"
61
+ ],
53
62
  "engines": {
54
63
  "node": ">= 20.0.0"
55
64
  },
@@ -65,7 +74,7 @@
65
74
  "publishConfig": {
66
75
  "access": "public"
67
76
  },
68
- "version": "0.4.7",
77
+ "version": "0.5.0",
69
78
  "jest": {
70
79
  "coverageProvider": "v8",
71
80
  "testMatch": [