@bitblit/ratchet-aws-node-only 4.0.116-alpha → 4.0.119-alpha
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/lib/athena/alb-athena-log-ratchet.d.ts +1 -1
- package/lib/build/ratchet-aws-node-only-info.d.ts +1 -1
- package/lib/cli/dynamo-exporter.d.ts +1 -1
- package/lib/cli/ratchet-cli-handler.d.ts +2 -2
- package/lib/index.d.ts +11 -1
- package/lib/index.mjs +29 -0
- package/lib/index.mjs.map +1 -0
- package/lib/mail/inbound/inbound-email-ratchet.d.ts +1 -1
- package/package.json +14 -28
- package/lib/athena/alb-athena-log-ratchet.js +0 -158
- package/lib/athena/alb-athena-log-ratchet.js.map +0 -1
- package/lib/athena/alb-athena-log-ratchet.spec.js +0 -29
- package/lib/athena/alb-athena-log-ratchet.spec.js.map +0 -1
- package/lib/athena/athena-ratchet.js +0 -158
- package/lib/athena/athena-ratchet.js.map +0 -1
- package/lib/athena/athena-ratchet.spec.js +0 -28
- package/lib/athena/athena-ratchet.spec.js.map +0 -1
- package/lib/build/ratchet-aws-node-only-info.js +0 -15
- package/lib/build/ratchet-aws-node-only-info.js.map +0 -1
- package/lib/cli/dynamo-exporter.js +0 -77
- package/lib/cli/dynamo-exporter.js.map +0 -1
- package/lib/cli/ratchet-cli-handler.js +0 -16
- package/lib/cli/ratchet-cli-handler.js.map +0 -1
- package/lib/cli/site-uploader/site-uploader.js +0 -116
- package/lib/cli/site-uploader/site-uploader.js.map +0 -1
- package/lib/cli/start-instance-and-ssh.js +0 -69
- package/lib/cli/start-instance-and-ssh.js.map +0 -1
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
- package/lib/mail/inbound/email-to-db-insert-processor.js +0 -90
- package/lib/mail/inbound/email-to-db-insert-processor.js.map +0 -1
- package/lib/mail/inbound/inbound-email-ratchet.js +0 -42
- package/lib/mail/inbound/inbound-email-ratchet.js.map +0 -1
- package/lib/mail/inbound/inbound-email-ratchet.spec.js +0 -19
- package/lib/mail/inbound/inbound-email-ratchet.spec.js.map +0 -1
- package/lib/mail/inbound/parsed-email-processor.js +0 -2
- package/lib/mail/inbound/parsed-email-processor.js.map +0 -1
- package/lib/mail/inbound/sample-email-processor.js +0 -9
- package/lib/mail/inbound/sample-email-processor.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitblit/ratchet-aws-node-only",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.119-alpha",
|
|
4
4
|
"description": "Common tools for use with AWS (Node only)",
|
|
5
5
|
"note-on-side-effects": "Technically the entries in 'bin' below might be side effects, but they are called explicitly",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -8,11 +8,16 @@
|
|
|
8
8
|
"ratchet-aws-cli": "./bin/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"type": "module",
|
|
11
|
-
"module": "index.js",
|
|
12
11
|
"files": [
|
|
13
12
|
"lib/*",
|
|
14
13
|
"bin/*"
|
|
15
14
|
],
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./lib/index.d.ts",
|
|
18
|
+
"import": "./lib/index.mjs"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
16
21
|
"contributors": [
|
|
17
22
|
"Christopher Weiss <bitblit@gmail.com>",
|
|
18
23
|
"William Weiss <npm@codification.org>",
|
|
@@ -39,9 +44,9 @@
|
|
|
39
44
|
"docs": "typedoc",
|
|
40
45
|
"lint": "eslint src/**/*.ts",
|
|
41
46
|
"lint-fix": "eslint --fix src/**/*.ts",
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"build": "tsc"
|
|
47
|
+
"generate-barrels": "barrelsby -q --delete -d src -e .*\\.spec\\.ts && sed -i 's/\\x27;/.js\\x27;/' src/index.ts",
|
|
48
|
+
"build": "yarn clean && yarn generate-barrels && rollup -c rollup.config.js",
|
|
49
|
+
"force-build": "tsc --build --force"
|
|
45
50
|
},
|
|
46
51
|
"repository": {
|
|
47
52
|
"type": "git",
|
|
@@ -60,35 +65,16 @@
|
|
|
60
65
|
},
|
|
61
66
|
"license": "Apache-2.0",
|
|
62
67
|
"dependencies": {
|
|
63
|
-
"@aws-sdk/client-athena": "3.
|
|
64
|
-
"@
|
|
65
|
-
"@
|
|
66
|
-
"@aws-sdk/client-s3": "3.328.0",
|
|
67
|
-
"@aws-sdk/lib-storage": "3.328.0",
|
|
68
|
-
"@aws-sdk/smithy-client": "3.325.0",
|
|
69
|
-
"@aws-sdk/types": "3.310.0",
|
|
70
|
-
"@bitblit/ratchet-aws": "4.0.116-alpha",
|
|
71
|
-
"@bitblit/ratchet-common": "4.0.116-alpha",
|
|
68
|
+
"@aws-sdk/client-athena": "3.332.0",
|
|
69
|
+
"@bitblit/ratchet-aws": "4.0.119-alpha",
|
|
70
|
+
"@bitblit/ratchet-common": "4.0.119-alpha",
|
|
72
71
|
"mailparser": "3.6.4",
|
|
73
72
|
"mime-types": "2.1.35",
|
|
74
73
|
"tmp": "0.2.1",
|
|
75
|
-
"unzipper": "0.10.
|
|
74
|
+
"unzipper": "0.10.14",
|
|
76
75
|
"walk": "2.3.15"
|
|
77
76
|
},
|
|
78
77
|
"peerDependencies": {
|
|
79
|
-
"@aws-sdk/client-athena": "^3.328.0",
|
|
80
|
-
"@aws-sdk/client-ec2": "^3.328.0",
|
|
81
|
-
"@aws-sdk/client-ec2-instance-connect": "^3.328.0",
|
|
82
|
-
"@aws-sdk/client-s3": "^3.328.0",
|
|
83
|
-
"@aws-sdk/lib-storage": "^3.328.0",
|
|
84
|
-
"@aws-sdk/smithy-client": "^3.328.0",
|
|
85
|
-
"@aws-sdk/types": "^3.310.0",
|
|
86
|
-
"@bitblit/ratchet-aws": "4.0.116-alpha",
|
|
87
|
-
"@bitblit/ratchet-common": "4.0.116-alpha",
|
|
88
|
-
"mailparser": "^3.6.4",
|
|
89
|
-
"mime-types": "^2.1.35",
|
|
90
|
-
"tmp": "^0.2.1",
|
|
91
|
-
"walk": "^2.3.15"
|
|
92
78
|
},
|
|
93
79
|
"devDependencies": {}
|
|
94
80
|
}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
4
|
-
import { RequireRatchet } from '@bitblit/ratchet-common/lib/lang/require-ratchet.js';
|
|
5
|
-
import { StringRatchet } from '@bitblit/ratchet-common/lib/lang/string-ratchet.js';
|
|
6
|
-
import { EsmRatchet } from '@bitblit/ratchet-common/lib/lang/esm-ratchet.js';
|
|
7
|
-
import { CsvRatchet } from '@bitblit/ratchet-node-only/lib/csv/csv-ratchet.js';
|
|
8
|
-
import { S3Ratchet } from '@bitblit/ratchet-aws';
|
|
9
|
-
class AlbAthenaLogRatchet {
|
|
10
|
-
athena;
|
|
11
|
-
athenaTableName;
|
|
12
|
-
constructor(athena, athenaTableName) {
|
|
13
|
-
this.athena = athena;
|
|
14
|
-
this.athenaTableName = athenaTableName;
|
|
15
|
-
RequireRatchet.notNullOrUndefined(athena, 'athena');
|
|
16
|
-
RequireRatchet.notNullOrUndefined(StringRatchet.trimToNull(athenaTableName), 'athenaTableName');
|
|
17
|
-
}
|
|
18
|
-
async updatePartitions(rootPath, s3, startTimeEpochMS = new Date().getTime() - 1000 * 60 * 60 * 24, endTimeEpochMS = new Date().getTime()) {
|
|
19
|
-
RequireRatchet.true(S3Ratchet.checkS3UrlForValidity(rootPath), 'root path not valid');
|
|
20
|
-
RequireRatchet.notNullOrUndefined(s3, 's3');
|
|
21
|
-
Logger.info('Updating partitions for %s from %s', this.athenaTableName, rootPath);
|
|
22
|
-
const bucketName = S3Ratchet.extractBucketFromURL(rootPath);
|
|
23
|
-
const rootKey = S3Ratchet.extractKeyFromURL(rootPath);
|
|
24
|
-
let current = startTimeEpochMS;
|
|
25
|
-
const clauses = [];
|
|
26
|
-
while (current < endTimeEpochMS) {
|
|
27
|
-
const dateUtcVal = new Date(current).toISOString().substring(0, 10);
|
|
28
|
-
Logger.info('d:%s', dateUtcVal);
|
|
29
|
-
const dateParts = dateUtcVal.split('-');
|
|
30
|
-
clauses.push("PARTITION (date_utc_partition='" +
|
|
31
|
-
dateUtcVal +
|
|
32
|
-
"') LOCATION '" +
|
|
33
|
-
rootPath +
|
|
34
|
-
'/' +
|
|
35
|
-
dateParts[0] +
|
|
36
|
-
'/' +
|
|
37
|
-
dateParts[1] +
|
|
38
|
-
'/' +
|
|
39
|
-
dateParts[2] +
|
|
40
|
-
"'");
|
|
41
|
-
current += 1000 * 60 * 60 * 24;
|
|
42
|
-
}
|
|
43
|
-
if (clauses.length > 0) {
|
|
44
|
-
const stmt = 'ALTER TABLE ' + this.athenaTableName + ' ADD IF NOT EXISTS \n' + clauses.join('\n');
|
|
45
|
-
await this.athena.runQueryToObjects(stmt);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
Logger.warn('Not updating partitions - no time between time clauses');
|
|
49
|
-
}
|
|
50
|
-
return clauses;
|
|
51
|
-
}
|
|
52
|
-
async createTable(rootPath, replaceIfPresent = false) {
|
|
53
|
-
RequireRatchet.true(S3Ratchet.checkS3UrlForValidity(rootPath), 'root path not valid');
|
|
54
|
-
let rval = false;
|
|
55
|
-
Logger.info('Creating ALB table %s', this.athenaTableName);
|
|
56
|
-
if (replaceIfPresent) {
|
|
57
|
-
Logger.info('Replace if present specified, removed old table');
|
|
58
|
-
try {
|
|
59
|
-
await this.athena.runQueryToObjects('drop table ' + this.athenaTableName);
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
Logger.info('Drop error : %j', err);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
let tableCreateQry = readFileSync(path.join(EsmRatchet.fetchDirName(import.meta.url), '../static/albAthenaTableCreate.txt')).toString();
|
|
66
|
-
tableCreateQry = tableCreateQry.split('{{TABLE NAME}}').join(this.athenaTableName);
|
|
67
|
-
tableCreateQry = tableCreateQry.split('{{ALB_LOG_ROOT}}').join(rootPath);
|
|
68
|
-
Logger.info('Creating table with %s', tableCreateQry);
|
|
69
|
-
try {
|
|
70
|
-
await this.athena.runQueryToObjects(tableCreateQry);
|
|
71
|
-
rval = true;
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
Logger.error('Error creating table : %s', err);
|
|
75
|
-
}
|
|
76
|
-
return rval;
|
|
77
|
-
}
|
|
78
|
-
static async readLogObjectsFromCsvStream(readStream) {
|
|
79
|
-
return CsvRatchet.streamParse(readStream, (p) => p);
|
|
80
|
-
}
|
|
81
|
-
static async readLogObjectsFromFile(fileName) {
|
|
82
|
-
return CsvRatchet.fileParse(fileName, (p) => p);
|
|
83
|
-
}
|
|
84
|
-
async fetchAlbLogRecords(qry) {
|
|
85
|
-
const tempFile = await this.fetchAlbLogRecordsToFile(qry);
|
|
86
|
-
return AlbAthenaLogRatchet.readLogObjectsFromFile(tempFile);
|
|
87
|
-
}
|
|
88
|
-
async fetchAlbLogRecordsToFile(qry, outputFileName = null) {
|
|
89
|
-
Logger.info('Querying %s : %j', this.athenaTableName, qry);
|
|
90
|
-
let qrySt = 'select * from ' + this.athenaTableName + ' where 1=1 ';
|
|
91
|
-
if (qry.startTimeEpochMS) {
|
|
92
|
-
if (qry.startTimeEpochMS) {
|
|
93
|
-
qrySt += " AND time >= '" + new Date(qry.startTimeEpochMS).toISOString() + "'";
|
|
94
|
-
qrySt += " AND date_utc_partition >='" + new Date(qry.startTimeEpochMS).toISOString().substring(0, 10) + "'";
|
|
95
|
-
}
|
|
96
|
-
if (qry.endTimeEpochMS) {
|
|
97
|
-
qrySt += " AND time < '" + new Date(qry.endTimeEpochMS).toISOString() + "'";
|
|
98
|
-
qrySt += " AND date_utc_partition <='" + new Date(qry.endTimeEpochMS).toISOString().substring(0, 10) + "'";
|
|
99
|
-
}
|
|
100
|
-
if (qry.requestUrlFilter) {
|
|
101
|
-
qrySt += " AND request_url LIKE '" + qry.requestUrlFilter + "'";
|
|
102
|
-
}
|
|
103
|
-
if (qry.limit) {
|
|
104
|
-
qrySt += ' LIMIT ' + qry.limit;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const result = await this.athena.runQueryToFile(qrySt, null, outputFileName);
|
|
108
|
-
return result;
|
|
109
|
-
}
|
|
110
|
-
static CREATE_TABLE_STATEMENT = 'CREATE EXTERNAL TABLE IF NOT EXISTS `{{TABLE NAME}}`(\n' +
|
|
111
|
-
" `type` string COMMENT '',\n" +
|
|
112
|
-
" `time` string COMMENT '',\n" +
|
|
113
|
-
" `elb` string COMMENT '',\n" +
|
|
114
|
-
" `client_ip` string COMMENT '',\n" +
|
|
115
|
-
" `client_port` int COMMENT '',\n" +
|
|
116
|
-
" `target_ip` string COMMENT '',\n" +
|
|
117
|
-
" `target_port` int COMMENT '',\n" +
|
|
118
|
-
" `request_processing_time` double COMMENT '',\n" +
|
|
119
|
-
" `target_processing_time` double COMMENT '',\n" +
|
|
120
|
-
" `response_processing_time` double COMMENT '',\n" +
|
|
121
|
-
" `elb_status_code` string COMMENT '',\n" +
|
|
122
|
-
" `target_status_code` string COMMENT '',\n" +
|
|
123
|
-
" `received_bytes` bigint COMMENT '',\n" +
|
|
124
|
-
" `sent_bytes` bigint COMMENT '',\n" +
|
|
125
|
-
" `request_verb` string COMMENT '',\n" +
|
|
126
|
-
" `request_url` string COMMENT '',\n" +
|
|
127
|
-
" `request_proto` string COMMENT '',\n" +
|
|
128
|
-
" `user_agent` string COMMENT '',\n" +
|
|
129
|
-
" `ssl_cipher` string COMMENT '',\n" +
|
|
130
|
-
" `ssl_protocol` string COMMENT '',\n" +
|
|
131
|
-
" `target_group_arn` string COMMENT '',\n" +
|
|
132
|
-
" `trace_id` string COMMENT '',\n" +
|
|
133
|
-
" `domain_name` string COMMENT '',\n" +
|
|
134
|
-
" `chosen_cert_arn` string COMMENT '',\n" +
|
|
135
|
-
" `matched_rule_priority` string COMMENT '',\n" +
|
|
136
|
-
" `request_creation_time` string COMMENT '',\n" +
|
|
137
|
-
" `actions_executed` string COMMENT '',\n" +
|
|
138
|
-
" `redirect_url` string COMMENT '',\n" +
|
|
139
|
-
" `lambda_error_reason` string COMMENT '',\n" +
|
|
140
|
-
" `target_port_list` string COMMENT '',\n" +
|
|
141
|
-
" `target_status_code_list` string COMMENT '',\n" +
|
|
142
|
-
" `new_field` string COMMENT '')\n" +
|
|
143
|
-
'PARTITIONED BY (\n' +
|
|
144
|
-
' `date_utc_partition` string\n' +
|
|
145
|
-
')\n' +
|
|
146
|
-
'ROW FORMAT SERDE\n' +
|
|
147
|
-
" 'org.apache.hadoop.hive.serde2.RegexSerDe'\n" +
|
|
148
|
-
'WITH SERDEPROPERTIES (\n' +
|
|
149
|
-
' \'input.regex\'=\'([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \\"([^ ]*) ([^ ]*) (- |[^ ]*)\\" \\"([^\\"]*)\\" ([A-Z0-9-]+) ([A-Za-z0-9.-]*) ([^ ]*) \\"([^\\"]*)\\" \\"([^\\"]*)\\" \\"([^\\"]*)\\" ([-.0-9]*) ([^ ]*) \\"([^\\"]*)\\" \\"([^\\"]*)\\" \\"([^ ]*)\\" \\"([^s]+)\\" \\"([^s]+)\\"(.*)\')\n' +
|
|
150
|
-
'STORED AS INPUTFORMAT\n' +
|
|
151
|
-
" 'org.apache.hadoop.mapred.TextInputFormat'\n" +
|
|
152
|
-
'OUTPUTFORMAT\n' +
|
|
153
|
-
" 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'\n" +
|
|
154
|
-
'LOCATION\n' +
|
|
155
|
-
" '{{ALB_LOG_ROOT}}'\n";
|
|
156
|
-
}
|
|
157
|
-
export { AlbAthenaLogRatchet };
|
|
158
|
-
//# sourceMappingURL=alb-athena-log-ratchet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alb-athena-log-ratchet.js","sourceRoot":"","sources":["../../src/athena/alb-athena-log-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { AthenaRatchet } from './athena-ratchet.js';
|
|
2
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
3
|
-
import { LoggerLevelName } from '@bitblit/ratchet-common/lib/logger/logger-level-name.js';
|
|
4
|
-
import { TimeZoneRatchet } from '@bitblit/ratchet-common/lib/lang/time-zone-ratchet.js';
|
|
5
|
-
import { AlbAthenaLogRatchet } from './alb-athena-log-ratchet.js';
|
|
6
|
-
import { S3Client } from '@aws-sdk/client-s3';
|
|
7
|
-
import { AthenaClient } from '@aws-sdk/client-athena';
|
|
8
|
-
describe('#AlbAthenaLogRatchet', function () {
|
|
9
|
-
it('Placeholder', async () => {
|
|
10
|
-
expect(2).toEqual(2);
|
|
11
|
-
});
|
|
12
|
-
xit('should test a query', async () => {
|
|
13
|
-
Logger.setLevel(LoggerLevelName.debug);
|
|
14
|
-
const athena = new AthenaClient({ region: 'us-east-1' });
|
|
15
|
-
const s3 = new S3Client({ region: 'us-east-1' });
|
|
16
|
-
const outputDir = 's3://alb-log-bucket/temp';
|
|
17
|
-
const athRatchet = new AthenaRatchet(athena, s3, outputDir);
|
|
18
|
-
const srv = new AlbAthenaLogRatchet(athRatchet, 'alb_logs.log_table');
|
|
19
|
-
const qry = {
|
|
20
|
-
startTimeEpochMS: TimeZoneRatchet.PACIFIC.startOfTodayEpochMS(),
|
|
21
|
-
endTimeEpochMS: TimeZoneRatchet.PACIFIC.startOfTodayEpochMS() + 1000 * 60 * 10,
|
|
22
|
-
limit: 10,
|
|
23
|
-
};
|
|
24
|
-
const result = await srv.fetchAlbLogRecords(qry);
|
|
25
|
-
expect(result).toBeTruthy();
|
|
26
|
-
Logger.info('Got objects : %j', result);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=alb-athena-log-ratchet.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alb-athena-log-ratchet.spec.js","sourceRoot":"","sources":["../../src/athena/alb-athena-log-ratchet.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAmC,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,MAAM,GAAiB,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,EAAE,GAAa,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAE3D,MAAM,SAAS,GAAW,0BAA0B,CAAC;QACrD,MAAM,UAAU,GAAkB,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAwB,IAAI,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAE3F,MAAM,GAAG,GAAsB;YAC7B,gBAAgB,EAAE,eAAe,CAAC,OAAO,CAAC,mBAAmB,EAAE;YAC/D,cAAc,EAAE,eAAe,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE;YAC9E,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,MAAM,MAAM,GAAmB,MAAM,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAEjE,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { GetNamedQueryCommand, GetQueryExecutionCommand, ListNamedQueriesCommand, StartQueryExecutionCommand, } from '@aws-sdk/client-athena';
|
|
2
|
-
import { StringRatchet } from '@bitblit/ratchet-common/lib/lang/string-ratchet.js';
|
|
3
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
4
|
-
import { StopWatch } from '@bitblit/ratchet-common/lib/lang/stop-watch.js';
|
|
5
|
-
import { PromiseRatchet } from '@bitblit/ratchet-common/lib/lang/promise-ratchet.js';
|
|
6
|
-
import { GetObjectCommand } from '@aws-sdk/client-s3';
|
|
7
|
-
import tmp from 'tmp';
|
|
8
|
-
import fs from 'fs';
|
|
9
|
-
import { CsvRatchet } from '@bitblit/ratchet-node-only/lib/csv/csv-ratchet.js';
|
|
10
|
-
import { RequireRatchet } from '@bitblit/ratchet-common/lib/lang/require-ratchet.js';
|
|
11
|
-
export class AthenaRatchet {
|
|
12
|
-
athena;
|
|
13
|
-
s3;
|
|
14
|
-
outputLocation;
|
|
15
|
-
constructor(athena, s3, outputLocation) {
|
|
16
|
-
this.athena = athena;
|
|
17
|
-
this.s3 = s3;
|
|
18
|
-
this.outputLocation = outputLocation;
|
|
19
|
-
RequireRatchet.notNullOrUndefined(athena);
|
|
20
|
-
RequireRatchet.notNullOrUndefined(s3);
|
|
21
|
-
RequireRatchet.notNullOrUndefined(outputLocation);
|
|
22
|
-
RequireRatchet.true(outputLocation.startsWith('s3://'));
|
|
23
|
-
}
|
|
24
|
-
static athenaRowsToObject(input) {
|
|
25
|
-
const colNames = input[0].Data.map((d) => d.VarCharValue);
|
|
26
|
-
const temp = input.slice(1);
|
|
27
|
-
const rval = temp.map((t) => {
|
|
28
|
-
const newItem = {};
|
|
29
|
-
for (let i = 0; i < t.Data.length; i++) {
|
|
30
|
-
newItem[colNames[i]] = t.Data[i].VarCharValue;
|
|
31
|
-
}
|
|
32
|
-
return newItem;
|
|
33
|
-
});
|
|
34
|
-
return rval;
|
|
35
|
-
}
|
|
36
|
-
static applyParamsToQuery(query, queryParams) {
|
|
37
|
-
let rval = query;
|
|
38
|
-
if (!!rval && !!queryParams) {
|
|
39
|
-
Object.keys(queryParams).forEach((k) => {
|
|
40
|
-
const val = StringRatchet.safeString(queryParams[k]);
|
|
41
|
-
const kk = '{' + k + '}';
|
|
42
|
-
rval = rval.split(kk).join(val);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return rval;
|
|
46
|
-
}
|
|
47
|
-
async fetchQueryIds() {
|
|
48
|
-
const params = {
|
|
49
|
-
NextToken: null,
|
|
50
|
-
};
|
|
51
|
-
let rval = [];
|
|
52
|
-
let next = null;
|
|
53
|
-
do {
|
|
54
|
-
next = await this.athena.send(new ListNamedQueriesCommand(params));
|
|
55
|
-
rval = rval.concat(next.NamedQueryIds);
|
|
56
|
-
params.NextToken = next.NextToken;
|
|
57
|
-
} while (!!params.NextToken);
|
|
58
|
-
return rval;
|
|
59
|
-
}
|
|
60
|
-
async listQueries() {
|
|
61
|
-
const rval = [];
|
|
62
|
-
const ids = await this.fetchQueryIds();
|
|
63
|
-
Logger.debug('Finding %d items', ids.length);
|
|
64
|
-
for (let i = 0; i < ids.length; i++) {
|
|
65
|
-
const params = {
|
|
66
|
-
NamedQueryId: ids[i],
|
|
67
|
-
};
|
|
68
|
-
const val = await this.athena.send(new GetNamedQueryCommand(params));
|
|
69
|
-
rval.push(val.NamedQuery);
|
|
70
|
-
}
|
|
71
|
-
return rval;
|
|
72
|
-
}
|
|
73
|
-
async findQueryByName(name) {
|
|
74
|
-
const all = await this.listQueries();
|
|
75
|
-
const rval = all.find((a) => a.Name.toLowerCase() == name.toLowerCase());
|
|
76
|
-
return rval;
|
|
77
|
-
}
|
|
78
|
-
async runQueryToObjects(queryIn, queryParams = {}, pingTimeMS = 2000) {
|
|
79
|
-
Logger.info('Running query to objects');
|
|
80
|
-
const outputLoc = await this.runQueryToOutputLocation(queryIn, queryParams, pingTimeMS);
|
|
81
|
-
Logger.info('Query succeeded, processing file from %s', outputLoc);
|
|
82
|
-
const bucketName = outputLoc.substring(5, outputLoc.indexOf('/', 5));
|
|
83
|
-
const obKey = outputLoc.substring(outputLoc.indexOf('/', 5) + 1);
|
|
84
|
-
const req = {
|
|
85
|
-
Bucket: bucketName,
|
|
86
|
-
Key: obKey,
|
|
87
|
-
};
|
|
88
|
-
const getFileOut = await this.s3.send(new GetObjectCommand(req));
|
|
89
|
-
const rval = await CsvRatchet.stringParse(getFileOut.Body.toString(), (p) => {
|
|
90
|
-
return p;
|
|
91
|
-
}, { columns: true, skip_empty_lines: true });
|
|
92
|
-
return rval;
|
|
93
|
-
}
|
|
94
|
-
async runQueryToFile(queryIn, queryParams = {}, targetDataFileIn = null, pingTimeMS = 2000) {
|
|
95
|
-
Logger.info('Running query to file');
|
|
96
|
-
const outputLoc = await this.runQueryToOutputLocation(queryIn, queryParams, pingTimeMS);
|
|
97
|
-
Logger.info('Query succeeded, pulling file from %s', outputLoc);
|
|
98
|
-
const bucketName = outputLoc.substring(5, outputLoc.indexOf('/', 5));
|
|
99
|
-
const obKey = outputLoc.substring(outputLoc.indexOf('/', 5) + 1);
|
|
100
|
-
const req = {
|
|
101
|
-
Bucket: bucketName,
|
|
102
|
-
Key: obKey,
|
|
103
|
-
};
|
|
104
|
-
const targetDataFile = targetDataFileIn || tmp.fileSync({ postfix: '.csv', keep: false }).name;
|
|
105
|
-
const fileStream = fs.createWriteStream(targetDataFile);
|
|
106
|
-
const output = await this.s3.send(new GetObjectCommand(req));
|
|
107
|
-
const readStream = output.Body;
|
|
108
|
-
readStream.pipe(fileStream);
|
|
109
|
-
const rval = await PromiseRatchet.resolveOnEvent(readStream, ['finish', 'close'], ['error'], targetDataFile);
|
|
110
|
-
Logger.silly('Response: %s', rval);
|
|
111
|
-
return targetDataFile;
|
|
112
|
-
}
|
|
113
|
-
async runQueryToOutputLocation(queryIn, queryParams = {}, pingTimeMS = 2000) {
|
|
114
|
-
let rval = null;
|
|
115
|
-
const timer = new StopWatch();
|
|
116
|
-
const query = AthenaRatchet.applyParamsToQuery(queryIn, queryParams);
|
|
117
|
-
try {
|
|
118
|
-
Logger.info('Starting query : %s', query);
|
|
119
|
-
const token = StringRatchet.createType4Guid();
|
|
120
|
-
const params = {
|
|
121
|
-
QueryString: query,
|
|
122
|
-
ResultConfiguration: {
|
|
123
|
-
OutputLocation: this.outputLocation,
|
|
124
|
-
EncryptionConfiguration: {
|
|
125
|
-
EncryptionOption: 'SSE_S3',
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
ClientRequestToken: token,
|
|
129
|
-
QueryExecutionContext: {
|
|
130
|
-
Database: 'default',
|
|
131
|
-
},
|
|
132
|
-
};
|
|
133
|
-
const startToken = await this.athena.send(new StartQueryExecutionCommand(params));
|
|
134
|
-
const getExecParams = {
|
|
135
|
-
QueryExecutionId: startToken.QueryExecutionId,
|
|
136
|
-
};
|
|
137
|
-
const finalStates = ['FAILED', 'CANCELLED', 'SUCCEEDED'];
|
|
138
|
-
let curState = await this.athena.send(new GetQueryExecutionCommand(getExecParams));
|
|
139
|
-
while (finalStates.indexOf(curState.QueryExecution.Status.State) === -1) {
|
|
140
|
-
await PromiseRatchet.createTimeoutPromise('wait', pingTimeMS);
|
|
141
|
-
Logger.debug('%s : %s : %s', curState.QueryExecution.Status.State, timer.dump(), query);
|
|
142
|
-
curState = await this.athena.send(new GetQueryExecutionCommand(getExecParams));
|
|
143
|
-
}
|
|
144
|
-
if (curState.QueryExecution.Status.State === 'FAILED') {
|
|
145
|
-
Logger.warn('Query failed : %s', curState.QueryExecution.Status.StateChangeReason);
|
|
146
|
-
}
|
|
147
|
-
else if (curState.QueryExecution.Status.State === 'SUCCEEDED') {
|
|
148
|
-
rval = curState.QueryExecution.ResultConfiguration.OutputLocation;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
catch (err) {
|
|
152
|
-
Logger.warn('Failure : %s', err, err);
|
|
153
|
-
}
|
|
154
|
-
Logger.info('Query took %s : %s', timer.dump(), query);
|
|
155
|
-
return rval;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=athena-ratchet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"athena-ratchet.js","sourceRoot":"","sources":["../../src/athena/athena-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { AthenaRatchet } from './athena-ratchet.js';
|
|
2
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
3
|
-
import { AthenaClient, GetQueryExecutionCommand, StartQueryExecutionCommand, } from '@aws-sdk/client-athena';
|
|
4
|
-
import { S3Client } from '@aws-sdk/client-s3';
|
|
5
|
-
import { mockClient } from 'aws-sdk-client-mock';
|
|
6
|
-
let mockAthena;
|
|
7
|
-
let mockS3;
|
|
8
|
-
describe('#AthenaRatchet', function () {
|
|
9
|
-
mockAthena = mockClient(AthenaClient);
|
|
10
|
-
mockS3 = mockClient(S3Client);
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
mockAthena.reset();
|
|
13
|
-
mockS3.reset();
|
|
14
|
-
});
|
|
15
|
-
xit('should test a query', async () => {
|
|
16
|
-
const outputDir = 's3://your-bucket/your-prefix';
|
|
17
|
-
const qry = 'select * from test limit 20000';
|
|
18
|
-
mockAthena.on(StartQueryExecutionCommand).resolves({ jobName: 'b' });
|
|
19
|
-
mockAthena.on(GetQueryExecutionCommand).resolves({
|
|
20
|
-
QueryExecution: { ResultConfiguration: { OutputLocation: 'test' }, Status: { State: 'SUCCEEDED' } },
|
|
21
|
-
});
|
|
22
|
-
const ratchet = new AthenaRatchet(mockAthena, mockS3, outputDir);
|
|
23
|
-
const result = await ratchet.runQueryToObjects(qry);
|
|
24
|
-
expect(result).toBeTruthy();
|
|
25
|
-
Logger.info('Got objects : %j', result);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=athena-ratchet.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"athena-ratchet.spec.js","sourceRoot":"","sources":["../../src/athena/athena-ratchet.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AACtE,OAAO,EACL,YAAY,EACZ,wBAAwB,EAExB,0BAA0B,GAE3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,IAAI,UAAU,CAAC;AACf,IAAI,MAAM,CAAC;AAEX,QAAQ,CAAC,gBAAgB,EAAE;IACzB,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,SAAS,GAAW,8BAA8B,CAAC;QACzD,MAAM,GAAG,GAAW,gCAAgC,CAAC;QAErD,UAAU,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAA+B,CAAC,CAAC;QAClG,UAAU,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC;YAC/C,cAAc,EAAE,EAAE,mBAAmB,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;SACzE,CAAC,CAAC;QAE9B,MAAM,OAAO,GAAkB,IAAI,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAU,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAG3D,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export class RatchetAwsNodeOnlyInfo {
|
|
2
|
-
constructor() { }
|
|
3
|
-
static buildInformation() {
|
|
4
|
-
const val = {
|
|
5
|
-
version: 'LOCAL-SNAPSHOT',
|
|
6
|
-
hash: 'LOCAL-HASH',
|
|
7
|
-
branch: 'LOCAL-BRANCH',
|
|
8
|
-
tag: 'LOCAL-TAG',
|
|
9
|
-
timeBuiltISO: 'LOCAL-TIME-ISO',
|
|
10
|
-
notes: 'LOCAL-NOTES',
|
|
11
|
-
};
|
|
12
|
-
return val;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=ratchet-aws-node-only-info.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ratchet-aws-node-only-info.js","sourceRoot":"","sources":["../../src/build/ratchet-aws-node-only-info.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IAGjC,gBAAuB,CAAC;IAEjB,MAAM,CAAC,gBAAgB;QAC5B,MAAM,GAAG,GAAqB;YAC5B,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,cAAc;YACtB,GAAG,EAAE,WAAW;YAChB,YAAY,EAAE,gBAAgB;YAC9B,KAAK,EAAE,aAAa;SACrB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { StringRatchet } from '@bitblit/ratchet-common/lib/lang/string-ratchet.js';
|
|
2
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
3
|
-
import { PromiseRatchet } from '@bitblit/ratchet-common/lib/lang/promise-ratchet.js';
|
|
4
|
-
import { RequireRatchet } from '@bitblit/ratchet-common/lib/lang/require-ratchet.js';
|
|
5
|
-
import fs from 'fs';
|
|
6
|
-
import readline from 'readline';
|
|
7
|
-
export class DynamoExporter {
|
|
8
|
-
constructor() { }
|
|
9
|
-
static async importJsonLFileToTable(dynamo, tableName, filename) {
|
|
10
|
-
RequireRatchet.notNullOrUndefined(dynamo, 'dynamo');
|
|
11
|
-
RequireRatchet.notNullOrUndefined(tableName, 'tableName');
|
|
12
|
-
RequireRatchet.notNullOrUndefined(filename, 'filename');
|
|
13
|
-
const fileStream = fs.createReadStream(filename);
|
|
14
|
-
const rl = readline.createInterface({
|
|
15
|
-
input: fileStream,
|
|
16
|
-
crlfDelay: Infinity,
|
|
17
|
-
});
|
|
18
|
-
let rval = 0;
|
|
19
|
-
for await (const line of rl) {
|
|
20
|
-
if (rval % 100 === 0) {
|
|
21
|
-
Logger.info('Importing line %d', rval);
|
|
22
|
-
}
|
|
23
|
-
if (StringRatchet.trimToNull(line)) {
|
|
24
|
-
const parsed = JSON.parse(line);
|
|
25
|
-
await dynamo.simplePut(tableName, parsed);
|
|
26
|
-
rval++;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return rval;
|
|
30
|
-
}
|
|
31
|
-
static async exportScanToJsonLFile(dynamo, scan, filename) {
|
|
32
|
-
RequireRatchet.notNullOrUndefined(dynamo, 'dynamo');
|
|
33
|
-
RequireRatchet.notNullOrUndefined(scan, 'scan');
|
|
34
|
-
RequireRatchet.notNullOrUndefined(filename, 'filename');
|
|
35
|
-
const ws = fs.createWriteStream(filename);
|
|
36
|
-
ws.on('end', () => {
|
|
37
|
-
Logger.debug('Write complete');
|
|
38
|
-
});
|
|
39
|
-
const rval = await DynamoExporter.exportScanToJsonLWriteStream(dynamo, scan, ws);
|
|
40
|
-
await PromiseRatchet.resolveOnEvent(ws, ['finish', 'close'], ['error']);
|
|
41
|
-
ws.close();
|
|
42
|
-
return rval;
|
|
43
|
-
}
|
|
44
|
-
static async exportQueryToJsonLFile(dynamo, qry, filename) {
|
|
45
|
-
RequireRatchet.notNullOrUndefined(dynamo, 'dynamo');
|
|
46
|
-
RequireRatchet.notNullOrUndefined(qry, 'qry');
|
|
47
|
-
RequireRatchet.notNullOrUndefined(filename, 'filename');
|
|
48
|
-
const ws = fs.createWriteStream(filename);
|
|
49
|
-
ws.on('end', () => {
|
|
50
|
-
Logger.debug('Write complete');
|
|
51
|
-
});
|
|
52
|
-
const rval = await DynamoExporter.exportQueryToJsonLWriteStream(dynamo, qry, ws);
|
|
53
|
-
await PromiseRatchet.resolveOnEvent(ws, ['finish', 'close'], ['error']);
|
|
54
|
-
ws.close();
|
|
55
|
-
return rval;
|
|
56
|
-
}
|
|
57
|
-
static async exportScanToJsonLWriteStream(dynamo, scan, target) {
|
|
58
|
-
RequireRatchet.notNullOrUndefined(dynamo, 'dynamo');
|
|
59
|
-
RequireRatchet.notNullOrUndefined(scan, 'scan');
|
|
60
|
-
RequireRatchet.notNullOrUndefined(target, 'target');
|
|
61
|
-
const rval = await dynamo.fullyExecuteProcessOverScan(scan, async (row) => DynamoExporter.writeItemToJsonLStream(row, target, false));
|
|
62
|
-
return rval;
|
|
63
|
-
}
|
|
64
|
-
static async exportQueryToJsonLWriteStream(dynamo, qry, target) {
|
|
65
|
-
RequireRatchet.notNullOrUndefined(dynamo, 'dynamo');
|
|
66
|
-
RequireRatchet.notNullOrUndefined(qry, 'qry');
|
|
67
|
-
RequireRatchet.notNullOrUndefined(target, 'target');
|
|
68
|
-
const rval = await dynamo.fullyExecuteProcessOverQuery(qry, async (row) => DynamoExporter.writeItemToJsonLStream(row, target, false));
|
|
69
|
-
return rval;
|
|
70
|
-
}
|
|
71
|
-
static writeItemToJsonLStream(item, target, includeNulls = false) {
|
|
72
|
-
if (!!item || includeNulls) {
|
|
73
|
-
target.write(JSON.stringify(item) + '\n');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=dynamo-exporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dynamo-exporter.js","sourceRoot":"","sources":["../../src/cli/dynamo-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AbstractRatchetCliHandler } from '@bitblit/ratchet-node-only/lib/cli/abstract-ratchet-cli-handler.js';
|
|
2
|
-
import { SiteUploader } from './site-uploader/site-uploader.js';
|
|
3
|
-
import { StartInstanceAndSsh } from './start-instance-and-ssh.js';
|
|
4
|
-
import { RatchetAwsNodeOnlyInfo } from '../build/ratchet-aws-node-only-info.js';
|
|
5
|
-
export class RatchetCliHandler extends AbstractRatchetCliHandler {
|
|
6
|
-
fetchHandlerMap() {
|
|
7
|
-
return {
|
|
8
|
-
'site-uploader': SiteUploader.runFromCliArgs,
|
|
9
|
-
'start-instance-and-ssh': StartInstanceAndSsh.runFromCliArgs,
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
fetchVersionInfo() {
|
|
13
|
-
return RatchetAwsNodeOnlyInfo.buildInformation();
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=ratchet-cli-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ratchet-cli-handler.js","sourceRoot":"","sources":["../../src/cli/ratchet-cli-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oEAAoE,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,MAAM,OAAO,iBAAkB,SAAQ,yBAAyB;IAC9D,eAAe;QACb,OAAO;YACL,eAAe,EAAE,YAAY,CAAC,cAAc;YAC5C,wBAAwB,EAAE,mBAAmB,CAAC,cAAc;SAC7D,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,OAAO,sBAAsB,CAAC,gBAAgB,EAAE,CAAC;IACnD,CAAC;CACF"}
|