@webda/aws 4.0.0-beta.2 → 4.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +64 -7
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js.map +1 -1
  4. package/lib/services/aws-parameters.d.ts +33 -0
  5. package/lib/services/aws-parameters.d.ts.map +1 -0
  6. package/lib/services/aws-parameters.js +18 -0
  7. package/lib/services/aws-parameters.js.map +1 -0
  8. package/lib/services/awscommands.service.d.ts +39 -0
  9. package/lib/services/awscommands.service.d.ts.map +1 -0
  10. package/lib/services/awscommands.service.js +127 -0
  11. package/lib/services/awscommands.service.js.map +1 -0
  12. package/lib/services/cloudwatchlogger.service.d.ts +131 -0
  13. package/lib/services/cloudwatchlogger.service.d.ts.map +1 -0
  14. package/lib/services/{cloudwatchlogger.js → cloudwatchlogger.service.js} +60 -28
  15. package/lib/services/cloudwatchlogger.service.js.map +1 -0
  16. package/lib/services/contributors.d.ts +37 -0
  17. package/lib/services/contributors.d.ts.map +1 -0
  18. package/lib/services/contributors.js +2 -0
  19. package/lib/services/contributors.js.map +1 -0
  20. package/lib/services/dynamodb.service.d.ts +297 -0
  21. package/lib/services/dynamodb.service.d.ts.map +1 -0
  22. package/lib/services/dynamodb.service.js +985 -0
  23. package/lib/services/dynamodb.service.js.map +1 -0
  24. package/lib/services/index.d.ts +11 -31
  25. package/lib/services/index.d.ts.map +1 -1
  26. package/lib/services/index.js +11 -8
  27. package/lib/services/index.js.map +1 -1
  28. package/lib/services/lambdacaller.service.d.ts +81 -0
  29. package/lib/services/lambdacaller.service.d.ts.map +1 -0
  30. package/lib/services/lambdacaller.service.js +75 -0
  31. package/lib/services/lambdacaller.service.js.map +1 -0
  32. package/lib/services/lambdaserver.service.d.ts +127 -0
  33. package/lib/services/lambdaserver.service.d.ts.map +1 -0
  34. package/lib/services/lambdaserver.service.js +294 -0
  35. package/lib/services/lambdaserver.service.js.map +1 -0
  36. package/lib/services/{route53.d.ts → route53.service.d.ts} +21 -12
  37. package/lib/services/route53.service.d.ts.map +1 -0
  38. package/lib/services/{route53.js → route53.service.js} +25 -28
  39. package/lib/services/route53.service.js.map +1 -0
  40. package/lib/services/s3binary.service.d.ts +215 -0
  41. package/lib/services/s3binary.service.d.ts.map +1 -0
  42. package/lib/services/{s3binary.js → s3binary.service.js} +93 -55
  43. package/lib/services/s3binary.service.js.map +1 -0
  44. package/lib/services/secretsmanager.service.d.ts +102 -0
  45. package/lib/services/secretsmanager.service.d.ts.map +1 -0
  46. package/lib/services/{secretsmanager.js → secretsmanager.service.js} +40 -22
  47. package/lib/services/secretsmanager.service.js.map +1 -0
  48. package/lib/services/{sqsqueue.d.ts → sqsqueue.service.d.ts} +60 -35
  49. package/lib/services/sqsqueue.service.d.ts.map +1 -0
  50. package/lib/services/{sqsqueue.js → sqsqueue.service.js} +53 -28
  51. package/lib/services/sqsqueue.service.js.map +1 -0
  52. package/package.json +58 -63
  53. package/webda.module.json +743 -280
  54. package/lib/deployers/cloudformation.d.ts +0 -317
  55. package/lib/deployers/cloudformation.d.ts.map +0 -1
  56. package/lib/deployers/cloudformation.js +0 -837
  57. package/lib/deployers/cloudformation.js.map +0 -1
  58. package/lib/deployers/cloudformation.spec.d.ts +0 -2
  59. package/lib/deployers/cloudformation.spec.d.ts.map +0 -1
  60. package/lib/deployers/cloudformation.spec.js +0 -530
  61. package/lib/deployers/cloudformation.spec.js.map +0 -1
  62. package/lib/deployers/index.d.ts +0 -255
  63. package/lib/deployers/index.d.ts.map +0 -1
  64. package/lib/deployers/index.js +0 -543
  65. package/lib/deployers/index.js.map +0 -1
  66. package/lib/deployers/index.spec.d.ts +0 -9
  67. package/lib/deployers/index.spec.d.ts.map +0 -1
  68. package/lib/deployers/index.spec.js +0 -595
  69. package/lib/deployers/index.spec.js.map +0 -1
  70. package/lib/deployers/lambda-entrypoint.d.ts +0 -2
  71. package/lib/deployers/lambda-entrypoint.d.ts.map +0 -1
  72. package/lib/deployers/lambda-entrypoint.js +0 -13
  73. package/lib/deployers/lambda-entrypoint.js.map +0 -1
  74. package/lib/deployers/lambdapackager.d.ts +0 -28
  75. package/lib/deployers/lambdapackager.d.ts.map +0 -1
  76. package/lib/deployers/lambdapackager.js +0 -26
  77. package/lib/deployers/lambdapackager.js.map +0 -1
  78. package/lib/deployers/lambdapackager.spec.d.ts +0 -2
  79. package/lib/deployers/lambdapackager.spec.d.ts.map +0 -1
  80. package/lib/deployers/lambdapackager.spec.js +0 -44
  81. package/lib/deployers/lambdapackager.spec.js.map +0 -1
  82. package/lib/index.spec.d.ts +0 -11
  83. package/lib/index.spec.d.ts.map +0 -1
  84. package/lib/index.spec.js +0 -42
  85. package/lib/index.spec.js.map +0 -1
  86. package/lib/services/aws-mixin.d.ts +0 -25
  87. package/lib/services/aws-mixin.d.ts.map +0 -1
  88. package/lib/services/aws-mixin.js +0 -18
  89. package/lib/services/aws-mixin.js.map +0 -1
  90. package/lib/services/cloudwatchlogger.d.ts +0 -82
  91. package/lib/services/cloudwatchlogger.d.ts.map +0 -1
  92. package/lib/services/cloudwatchlogger.js.map +0 -1
  93. package/lib/services/cloudwatchlogger.spec.d.ts +0 -2
  94. package/lib/services/cloudwatchlogger.spec.d.ts.map +0 -1
  95. package/lib/services/cloudwatchlogger.spec.js +0 -104
  96. package/lib/services/cloudwatchlogger.spec.js.map +0 -1
  97. package/lib/services/dynamodb.d.ts +0 -174
  98. package/lib/services/dynamodb.d.ts.map +0 -1
  99. package/lib/services/dynamodb.js +0 -711
  100. package/lib/services/dynamodb.js.map +0 -1
  101. package/lib/services/dynamodb.spec.d.ts +0 -24
  102. package/lib/services/dynamodb.spec.d.ts.map +0 -1
  103. package/lib/services/dynamodb.spec.js +0 -344
  104. package/lib/services/dynamodb.spec.js.map +0 -1
  105. package/lib/services/lambdacaller.d.ts +0 -69
  106. package/lib/services/lambdacaller.d.ts.map +0 -1
  107. package/lib/services/lambdacaller.js +0 -63
  108. package/lib/services/lambdacaller.js.map +0 -1
  109. package/lib/services/lambdacaller.spec.d.ts +0 -2
  110. package/lib/services/lambdacaller.spec.d.ts.map +0 -1
  111. package/lib/services/lambdacaller.spec.js +0 -70
  112. package/lib/services/lambdacaller.spec.js.map +0 -1
  113. package/lib/services/lambdaserver.d.ts +0 -87
  114. package/lib/services/lambdaserver.d.ts.map +0 -1
  115. package/lib/services/lambdaserver.js +0 -263
  116. package/lib/services/lambdaserver.js.map +0 -1
  117. package/lib/services/lambdaserver.spec.d.ts +0 -2
  118. package/lib/services/lambdaserver.spec.d.ts.map +0 -1
  119. package/lib/services/lambdaserver.spec.js +0 -417
  120. package/lib/services/lambdaserver.spec.js.map +0 -1
  121. package/lib/services/route53.d.ts.map +0 -1
  122. package/lib/services/route53.js.map +0 -1
  123. package/lib/services/route53.spec.d.ts +0 -2
  124. package/lib/services/route53.spec.d.ts.map +0 -1
  125. package/lib/services/route53.spec.js +0 -102
  126. package/lib/services/route53.spec.js.map +0 -1
  127. package/lib/services/s3binary.d.ts +0 -163
  128. package/lib/services/s3binary.d.ts.map +0 -1
  129. package/lib/services/s3binary.js.map +0 -1
  130. package/lib/services/s3binary.spec.d.ts +0 -2
  131. package/lib/services/s3binary.spec.d.ts.map +0 -1
  132. package/lib/services/s3binary.spec.js +0 -284
  133. package/lib/services/s3binary.spec.js.map +0 -1
  134. package/lib/services/secretsmanager.d.ts +0 -81
  135. package/lib/services/secretsmanager.d.ts.map +0 -1
  136. package/lib/services/secretsmanager.js.map +0 -1
  137. package/lib/services/secretsmanager.spec.d.ts +0 -2
  138. package/lib/services/secretsmanager.spec.d.ts.map +0 -1
  139. package/lib/services/secretsmanager.spec.js +0 -66
  140. package/lib/services/secretsmanager.spec.js.map +0 -1
  141. package/lib/services/sqsqueue.d.ts.map +0 -1
  142. package/lib/services/sqsqueue.js.map +0 -1
  143. package/lib/services/sqsqueue.spec.d.ts +0 -2
  144. package/lib/services/sqsqueue.spec.d.ts.map +0 -1
  145. package/lib/services/sqsqueue.spec.js +0 -157
  146. package/lib/services/sqsqueue.spec.js.map +0 -1
  147. package/lib/shell.d.ts +0 -13
  148. package/lib/shell.d.ts.map +0 -1
  149. package/lib/shell.js +0 -42
  150. package/lib/shell.js.map +0 -1
  151. package/webda.shell.json +0 -11
@@ -0,0 +1,294 @@
1
+ import { emitCoreEvent, HttpContext, runWithContext, Service, ServiceParameters, useCore, useRouter, WebContext, WebdaError } from "@webda/core";
2
+ import { serialize as cookieSerialize } from "cookie";
3
+ /**
4
+ * LambdaServer parameters
5
+ */
6
+ export class LambdaServerParameters extends ServiceParameters {
7
+ /**
8
+ * @override
9
+ * @param params - raw parameters
10
+ * @returns this
11
+ */
12
+ load(params = {}) {
13
+ super.load(params);
14
+ this.waitForEmptyEventLoop ?? (this.waitForEmptyEventLoop = false);
15
+ return this;
16
+ }
17
+ }
18
+ /**
19
+ * The Lambda entrypoint for Webda
20
+ *
21
+ * This take the input coming from the API Gateway to transform it and analyse it with Webda
22
+ * Once execution is done, it will format the result in a way that the API Gateway will output the result
23
+ *
24
+ * Other AWS events are dispatched to the services implementing {@link AWSEventsHandler}
25
+ *
26
+ * @WebdaModda
27
+ */
28
+ export class LambdaServer extends Service {
29
+ constructor() {
30
+ super(...arguments);
31
+ /**
32
+ * Handlers registered manually
33
+ */
34
+ this._awsEventsHandlers = [];
35
+ }
36
+ /**
37
+ * Register a service to handle AWS Events
38
+ *
39
+ * Services implementing {@link AWSEventsHandler} are discovered automatically
40
+ * @param service - the handler
41
+ */
42
+ registerAWSEventsHandler(service) {
43
+ if (this._awsEventsHandlers.indexOf(service) < 0) {
44
+ this._awsEventsHandlers.push(service);
45
+ }
46
+ }
47
+ /**
48
+ * Return all the AWS events handlers: the registered ones and the services implementing the interface
49
+ * @returns the handlers
50
+ */
51
+ getAWSEventsHandlers() {
52
+ const handlers = [...this._awsEventsHandlers];
53
+ for (const service of Object.values(useCore()?.getServices() ?? {})) {
54
+ const handler = service;
55
+ if (typeof handler?.isAWSEventHandled === "function" &&
56
+ typeof handler?.handleAWSEvent === "function" &&
57
+ !handlers.includes(handler)) {
58
+ handlers.push(handler);
59
+ }
60
+ }
61
+ return handlers;
62
+ }
63
+ /**
64
+ * Dispatch an event to the handlers
65
+ * @param source - the event source
66
+ * @param events - the raw event
67
+ */
68
+ async handleAWSEvent(source, events) {
69
+ for (const handler of this.getAWSEventsHandlers()) {
70
+ if (handler.isAWSEventHandled(source, events)) {
71
+ await handler.handleAWSEvent(source, events);
72
+ }
73
+ }
74
+ }
75
+ /**
76
+ * Analyse events to try to find its type
77
+ * @param events - the raw event
78
+ * @returns true if the event was an AWS event
79
+ */
80
+ async handleAWSEvents(events) {
81
+ if (events.Records) {
82
+ await this.handleAWSEvent(events.Records[0].eventSource || events.Records[0].EventSource, events);
83
+ return true;
84
+ }
85
+ else if (events.invocationId && events.records) {
86
+ await this.handleAWSEvent("aws:kinesis", events);
87
+ return true;
88
+ }
89
+ else if (events["detail-type"] && events.detail && events.resources) {
90
+ await this.handleAWSEvent("aws:scheduled-event", events);
91
+ return true;
92
+ }
93
+ else if (events.awslogs) {
94
+ await this.handleAWSEvent("aws:cloudwatch-logs", events);
95
+ return true;
96
+ }
97
+ else if (events["CodePipeline.job"]) {
98
+ await this.handleAWSEvent("aws:codepipeline", events);
99
+ return true;
100
+ }
101
+ else if (events.identityPoolId) {
102
+ await this.handleAWSEvent("aws:cognito", events);
103
+ return true;
104
+ }
105
+ else if (events.configRuleId) {
106
+ await this.handleAWSEvent("aws:config", events);
107
+ return true;
108
+ }
109
+ else if (events.jobDefinition || events.jobId) {
110
+ await this.handleAWSEvent("aws:batch", events);
111
+ return true;
112
+ }
113
+ return false;
114
+ }
115
+ /**
116
+ * Execute a `launch` command: call a method on a service
117
+ * @param commandEvent - the command
118
+ */
119
+ async handleLaunch(commandEvent) {
120
+ const args = commandEvent.args || [];
121
+ this.log("INFO", "Executing", commandEvent.method, "on", commandEvent.service, "with", args);
122
+ const service = useCore().getServices()[commandEvent.service];
123
+ if (!service) {
124
+ this.log("ERROR", "Cannot find", commandEvent.service);
125
+ return;
126
+ }
127
+ if (typeof service[commandEvent.method] !== "function") {
128
+ this.log("ERROR", "Cannot find method", commandEvent.method, "on", commandEvent.service);
129
+ return;
130
+ }
131
+ await service[commandEvent.method](...args);
132
+ this.log("INFO", "Finished");
133
+ }
134
+ /**
135
+ * Handle a Lambda invocation
136
+ *
137
+ * Dispatch AWS events, `launch` commands or API Gateway requests
138
+ *
139
+ * @param sourceEvent - the Lambda event
140
+ * @param context - the Lambda context
141
+ * @returns the API Gateway result for HTTP requests
142
+ */
143
+ async handleRequest(sourceEvent, context) {
144
+ // Handle AWS event
145
+ if (await this.handleAWSEvents(sourceEvent)) {
146
+ this.log("INFO", "Handled AWS event", sourceEvent);
147
+ return;
148
+ }
149
+ // Manual launch of webda
150
+ if (sourceEvent.command === "launch" && sourceEvent.service && sourceEvent.method) {
151
+ await this.handleLaunch(sourceEvent);
152
+ return;
153
+ }
154
+ const event = sourceEvent;
155
+ if (context) {
156
+ context.callbackWaitsForEmptyEventLoop = this.parameters.waitForEmptyEventLoop;
157
+ }
158
+ const headers = event.headers || {};
159
+ const vhost = headers.Host || headers.host;
160
+ const method = event.httpMethod || "GET";
161
+ const protocol = headers["CloudFront-Forwarded-Proto"] || "https";
162
+ let port = headers["X-Forwarded-Port"] || 443;
163
+ if (typeof port === "string") {
164
+ port = Number(port);
165
+ if (isNaN(port)) {
166
+ port = 443;
167
+ }
168
+ }
169
+ let resourcePath = event.path || "/";
170
+ // Rebuild query string
171
+ if (event.queryStringParameters) {
172
+ let sep = "?";
173
+ for (const i in event.queryStringParameters) {
174
+ // If additional error code it will be contained so need to check for &
175
+ // May need to add urlencode
176
+ resourcePath += sep + i + "=" + event.queryStringParameters[i];
177
+ sep = "&";
178
+ }
179
+ }
180
+ this.log("INFO", method, event.path);
181
+ const httpContext = new HttpContext(vhost, method, resourcePath, protocol, port, headers).setClientIp(headers["X-Real-Ip"]); // Might use identity.sourceIp
182
+ // API Gateway stage or custom domain base path: the router matches on the uri relative to it
183
+ this.computePrefix(event, httpContext);
184
+ if (["PUT", "PATCH", "POST", "DELETE"].includes(method)) {
185
+ httpContext.setBody(event.body);
186
+ }
187
+ const ctx = new WebContext(httpContext);
188
+ await ctx.init();
189
+ await emitCoreEvent("Webda.NewContext", { context: ctx, info: { http: httpContext } });
190
+ await runWithContext(ctx, async () => {
191
+ emitCoreEvent("Webda.Request", { context: ctx });
192
+ if (this.parameters.lambdaRequestHeader && context?.awsRequestId) {
193
+ ctx.setHeader(this.parameters.lambdaRequestHeader, context.awsRequestId);
194
+ }
195
+ const origin = headers.Origin || headers.origin;
196
+ try {
197
+ // Set predefined headers for CORS
198
+ if (origin) {
199
+ if (!(await useRouter()["checkCORSRequest"](ctx))) {
200
+ // Prevent CSRF
201
+ this.log("INFO", "CSRF denied from", origin);
202
+ ctx.statusCode = 401;
203
+ return;
204
+ }
205
+ ctx.setHeader("Access-Control-Allow-Origin", origin);
206
+ ctx.setHeader("Access-Control-Allow-Credentials", "true");
207
+ }
208
+ if (protocol === "https") {
209
+ // Add the HSTS header
210
+ ctx.setHeader("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload");
211
+ }
212
+ if (method === "OPTIONS") {
213
+ // Might want to customize this one
214
+ ctx.setHeader("Access-Control-Max-Age", 3600);
215
+ ctx.setHeader("Access-Control-Allow-Headers", headers["access-control-request-headers"] || headers["Access-Control-Request-Headers"] || "content-type");
216
+ }
217
+ await useRouter().execute(ctx);
218
+ }
219
+ catch (err) {
220
+ if (typeof err === "number") {
221
+ ctx.statusCode = err;
222
+ }
223
+ else if (err instanceof WebdaError.HttpError) {
224
+ this.log("DEBUG", "Sending error", err.message);
225
+ ctx.statusCode = err.getResponseCode();
226
+ // Handle redirect
227
+ if (err instanceof WebdaError.Redirect) {
228
+ ctx.setHeader("Location", err.location);
229
+ }
230
+ }
231
+ else {
232
+ this.log("ERROR", err);
233
+ ctx.statusCode = 500;
234
+ }
235
+ }
236
+ emitCoreEvent("Webda.Result", { context: ctx });
237
+ });
238
+ return this.handleLambdaReturn(ctx);
239
+ }
240
+ /**
241
+ * Based on API Gateway event compute the prefix if any
242
+ * @param event - the API Gateway event
243
+ * @returns the prefix or an empty string
244
+ */
245
+ getPrefix(event) {
246
+ if (event.resource && event.path !== event.resource) {
247
+ let relativeUri = event.resource;
248
+ for (const j in event.pathParameters) {
249
+ relativeUri = relativeUri.replace(new RegExp(`\\{${j}\\+?\\}`), event.pathParameters[j]);
250
+ }
251
+ if (relativeUri !== event.path && event.path.endsWith(relativeUri)) {
252
+ return event.path.substring(0, event.path.length - relativeUri.length);
253
+ }
254
+ }
255
+ return "";
256
+ }
257
+ /**
258
+ * Based on API Gateway event set the prefix on the http context if any
259
+ * @param event - the API Gateway event
260
+ * @param httpContext - the context to update
261
+ */
262
+ computePrefix(event, httpContext) {
263
+ const prefix = this.getPrefix(event);
264
+ if (prefix) {
265
+ httpContext.setPrefix(prefix);
266
+ }
267
+ }
268
+ /**
269
+ * End the context and build the API Gateway result from it
270
+ * @param context - the web context
271
+ * @returns the API Gateway result
272
+ */
273
+ async handleLambdaReturn(context) {
274
+ // Ending the context flushes (and resets) the headers
275
+ const headers = { ...(context.getResponseHeaders() || {}) };
276
+ await context.end();
277
+ const result = {
278
+ headers: { ...headers, ...(context.getResponseHeaders() || {}) },
279
+ statusCode: context.getResponseCode(),
280
+ multiValueHeaders: { "Set-Cookie": [] }
281
+ };
282
+ const cookies = context.getResponseCookies();
283
+ for (const i in cookies) {
284
+ result.multiValueHeaders["Set-Cookie"].push(cookieSerialize(cookies[i].name, cookies[i].value, cookies[i].options || {}));
285
+ }
286
+ const body = context.getResponseBody();
287
+ if (body !== undefined && body !== false && body !== "") {
288
+ result.body = body.toString();
289
+ }
290
+ return result;
291
+ }
292
+ }
293
+ export default LambdaServer;
294
+ //# sourceMappingURL=lambdaserver.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambdaserver.service.js","sourceRoot":"","sources":["../../src/services/lambdaserver.service.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,21 @@
1
1
  import { HostedZone, RRType } from "@aws-sdk/client-route-53";
2
2
  import { Service } from "@webda/core";
3
+ /**
4
+ * Route53 helpers to manage zones and records
5
+ */
3
6
  export declare class Route53Service extends Service {
4
7
  /**
5
8
  * Get the closest zone to the domain
6
9
  *
7
10
  * @param domain to get zone for
11
+ * @returns the closest hosted zone or undefined
12
+ */
13
+ static getZoneForDomainName(domain: string): Promise<HostedZone>;
14
+ /**
15
+ * Ensure the domain ends with a dot
16
+ * @param domain - the domain
17
+ * @returns the fully qualified domain
8
18
  */
9
- static getZoneForDomainName(domain: any): Promise<HostedZone>;
10
19
  static completeDomain(domain: string): string;
11
20
  /**
12
21
  * Create DNS entry
@@ -14,24 +23,30 @@ export declare class Route53Service extends Service {
14
23
  * @param domain to create
15
24
  * @param type of DNS
16
25
  * @param value the value of the record
17
- * @param targetZone
26
+ * @param targetZone - zone to use, default to the closest zone
27
+ * @param Comment - comment of the change
18
28
  */
19
29
  static createDNSEntry(domain: string, type: RRType, value: string, targetZone?: HostedZone, Comment?: string): Promise<void>;
20
30
  /**
21
31
  * Return all entries of a zone in AWS
22
32
  *
23
33
  * @param domain to retrieve from
34
+ * @returns the record sets
24
35
  */
25
36
  static getEntries(domain: string): Promise<any[]>;
26
37
  /**
27
38
  * Import all records to Route53
28
- * @param file
39
+ * @param options - import options
40
+ * @param options.file - the exported file to import
41
+ * @param options.pretend - only display the records that would be deleted
42
+ * @param options.sync - delete the records not present in the file
43
+ * @param log - logger to use
29
44
  */
30
45
  static import(options: {
31
46
  file: string;
32
47
  pretend?: boolean;
33
48
  sync?: boolean;
34
- }, Console: any): Promise<void>;
49
+ }, log?: (level: "INFO" | "ERROR", ...args: any[]) => void): Promise<void>;
35
50
  /**
36
51
  * Export all records from Route53 into a file
37
52
  *
@@ -39,12 +54,6 @@ export declare class Route53Service extends Service {
39
54
  * @param file to export to (can be .json or .yml)
40
55
  */
41
56
  static export(domain: string, file: string): Promise<void>;
42
- /**
43
- * Manage the shell command
44
- *
45
- * @param Console
46
- * @param args
47
- */
48
- static shell(Console: any, args: any): Promise<void>;
49
57
  }
50
- //# sourceMappingURL=route53.d.ts.map
58
+ export default Route53Service;
59
+ //# sourceMappingURL=route53.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route53.service.d.ts","sourceRoot":"","sources":["../../src/services/route53.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmD,MAAM,EAAW,MAAM,0BAA0B,CAAC;AACxH,OAAO,EAAE,OAAO,EAAU,MAAM,aAAa,CAAC;AAG9C;;GAEG;AACH,qBAAa,cAAe,SAAQ,OAAO;IACzC;;;;;OAKG;IACH,OAAa,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBrE;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,UAKnC;IAED;;;;;;;;OAQG;IACH,OAAa,cAAc,CACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,UAAsB,EAClC,OAAO,GAAE,MAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CA8Bf;IAED;;;;;OAKG;IACH,OAAa,UAAU,CAAC,MAAM,EAAE,MAAM,kBAgBrC;IAED;;;;;;;OAOG;IACH,OAAa,MAAM,CACjB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,EACD,GAAG,GAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAa,iBA8DhE;IAED;;;;;OAKG;IACH,OAAa,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAQ/C;CACF;eAEc,cAAc"}
@@ -1,10 +1,15 @@
1
1
  import { Route53 } from "@aws-sdk/client-route-53";
2
- import { JSONUtils, Service } from "@webda/core";
2
+ import { Service, useLog } from "@webda/core";
3
+ import { JSONUtils } from "@webda/utils";
4
+ /**
5
+ * Route53 helpers to manage zones and records
6
+ */
3
7
  export class Route53Service extends Service {
4
8
  /**
5
9
  * Get the closest zone to the domain
6
10
  *
7
11
  * @param domain to get zone for
12
+ * @returns the closest hosted zone or undefined
8
13
  */
9
14
  static async getZoneForDomainName(domain) {
10
15
  domain = this.completeDomain(domain);
@@ -30,6 +35,11 @@ export class Route53Service extends Service {
30
35
  } while (!targetZone && res.NextMarker);
31
36
  return targetZone;
32
37
  }
38
+ /**
39
+ * Ensure the domain ends with a dot
40
+ * @param domain - the domain
41
+ * @returns the fully qualified domain
42
+ */
33
43
  static completeDomain(domain) {
34
44
  if (!domain.endsWith(".")) {
35
45
  domain = domain + ".";
@@ -42,7 +52,8 @@ export class Route53Service extends Service {
42
52
  * @param domain to create
43
53
  * @param type of DNS
44
54
  * @param value the value of the record
45
- * @param targetZone
55
+ * @param targetZone - zone to use, default to the closest zone
56
+ * @param Comment - comment of the change
46
57
  */
47
58
  static async createDNSEntry(domain, type, value, targetZone = undefined, Comment = "@webda/aws-created") {
48
59
  const r53 = new Route53({});
@@ -79,6 +90,7 @@ export class Route53Service extends Service {
79
90
  * Return all entries of a zone in AWS
80
91
  *
81
92
  * @param domain to retrieve from
93
+ * @returns the record sets
82
94
  */
83
95
  static async getEntries(domain) {
84
96
  const r53 = new Route53({});
@@ -99,9 +111,13 @@ export class Route53Service extends Service {
99
111
  }
100
112
  /**
101
113
  * Import all records to Route53
102
- * @param file
114
+ * @param options - import options
115
+ * @param options.file - the exported file to import
116
+ * @param options.pretend - only display the records that would be deleted
117
+ * @param options.sync - delete the records not present in the file
118
+ * @param log - logger to use
103
119
  */
104
- static async import(options, Console) {
120
+ static async import(options, log = useLog) {
105
121
  const data = JSONUtils.loadFile(options.file);
106
122
  const targetZone = await this.getZoneForDomainName(data.domain);
107
123
  const r53 = new Route53({});
@@ -141,10 +157,10 @@ export class Route53Service extends Service {
141
157
  }));
142
158
  continuationToken = records.NextRecordIdentifier;
143
159
  } while (continuationToken);
144
- Console.log("INFO", `Deleting ${toDelete.length} records`);
160
+ log("INFO", `Deleting ${toDelete.length} records`);
145
161
  if (options.pretend) {
146
162
  toDelete.forEach(r => {
147
- Console.log("INFO", "Deleting entry\n", JSON.stringify(r, undefined, 2));
163
+ log("INFO", "Deleting entry\n", JSON.stringify(r, undefined, 2));
148
164
  });
149
165
  }
150
166
  else if (toDelete.length) {
@@ -160,7 +176,7 @@ export class Route53Service extends Service {
160
176
  }
161
177
  }
162
178
  catch (err) {
163
- Console.log("ERROR", err);
179
+ log("ERROR", err);
164
180
  }
165
181
  }
166
182
  /**
@@ -175,25 +191,6 @@ export class Route53Service extends Service {
175
191
  entries: await Route53Service.getEntries(domain)
176
192
  }, file);
177
193
  }
178
- /**
179
- * Manage the shell command
180
- *
181
- * @param Console
182
- * @param args
183
- */
184
- static async shell(Console, args) {
185
- const command = args._.shift();
186
- switch (command) {
187
- case "import":
188
- await this.import(args, Console);
189
- break;
190
- case "sync":
191
- await this.import({ ...args, sync: true }, Console);
192
- break;
193
- case "export":
194
- await this.export(args.domain, args.file);
195
- break;
196
- }
197
- }
198
194
  }
199
- //# sourceMappingURL=route53.js.map
195
+ export default Route53Service;
196
+ //# sourceMappingURL=route53.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route53.service.js","sourceRoot":"","sources":["../../src/services/route53.service.ts"],"names":[],"mappings":"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"}