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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +64 -7
  2. package/lib/deployers/awsdeployer.d.ts +340 -0
  3. package/lib/deployers/awsdeployer.d.ts.map +1 -0
  4. package/lib/deployers/awsdeployer.js +673 -0
  5. package/lib/deployers/awsdeployer.js.map +1 -0
  6. package/lib/deployers/cloudformation.service.d.ts +438 -0
  7. package/lib/deployers/cloudformation.service.d.ts.map +1 -0
  8. package/lib/deployers/cloudformation.service.js +889 -0
  9. package/lib/deployers/cloudformation.service.js.map +1 -0
  10. package/lib/deployers/index.d.ts +4 -254
  11. package/lib/deployers/index.d.ts.map +1 -1
  12. package/lib/deployers/index.js +4 -542
  13. package/lib/deployers/index.js.map +1 -1
  14. package/lib/deployers/lambda-entrypoint.d.ts +33 -1
  15. package/lib/deployers/lambda-entrypoint.d.ts.map +1 -1
  16. package/lib/deployers/lambda-entrypoint.js +44 -10
  17. package/lib/deployers/lambda-entrypoint.js.map +1 -1
  18. package/lib/deployers/lambdapackager.service.d.ts +123 -0
  19. package/lib/deployers/lambdapackager.service.d.ts.map +1 -0
  20. package/lib/deployers/lambdapackager.service.js +149 -0
  21. package/lib/deployers/lambdapackager.service.js.map +1 -0
  22. package/lib/deployers/zip.d.ts +42 -0
  23. package/lib/deployers/zip.d.ts.map +1 -0
  24. package/lib/deployers/zip.js +129 -0
  25. package/lib/deployers/zip.js.map +1 -0
  26. package/lib/index.d.ts +1 -0
  27. package/lib/index.d.ts.map +1 -1
  28. package/lib/index.js +1 -0
  29. package/lib/index.js.map +1 -1
  30. package/lib/services/aws-parameters.d.ts +33 -0
  31. package/lib/services/aws-parameters.d.ts.map +1 -0
  32. package/lib/services/aws-parameters.js +18 -0
  33. package/lib/services/aws-parameters.js.map +1 -0
  34. package/lib/services/awscommands.service.d.ts +39 -0
  35. package/lib/services/awscommands.service.d.ts.map +1 -0
  36. package/lib/services/awscommands.service.js +127 -0
  37. package/lib/services/awscommands.service.js.map +1 -0
  38. package/lib/services/cloudwatchlogger.service.d.ts +131 -0
  39. package/lib/services/cloudwatchlogger.service.d.ts.map +1 -0
  40. package/lib/services/{cloudwatchlogger.js → cloudwatchlogger.service.js} +60 -28
  41. package/lib/services/cloudwatchlogger.service.js.map +1 -0
  42. package/lib/services/contributors.d.ts +36 -0
  43. package/lib/services/contributors.d.ts.map +1 -0
  44. package/lib/services/contributors.js +2 -0
  45. package/lib/services/contributors.js.map +1 -0
  46. package/lib/services/dynamodb.service.d.ts +298 -0
  47. package/lib/services/dynamodb.service.d.ts.map +1 -0
  48. package/lib/services/dynamodb.service.js +986 -0
  49. package/lib/services/dynamodb.service.js.map +1 -0
  50. package/lib/services/index.d.ts +11 -31
  51. package/lib/services/index.d.ts.map +1 -1
  52. package/lib/services/index.js +11 -8
  53. package/lib/services/index.js.map +1 -1
  54. package/lib/services/lambdacaller.service.d.ts +81 -0
  55. package/lib/services/lambdacaller.service.d.ts.map +1 -0
  56. package/lib/services/lambdacaller.service.js +75 -0
  57. package/lib/services/lambdacaller.service.js.map +1 -0
  58. package/lib/services/lambdaserver.service.d.ts +127 -0
  59. package/lib/services/lambdaserver.service.d.ts.map +1 -0
  60. package/lib/services/lambdaserver.service.js +294 -0
  61. package/lib/services/lambdaserver.service.js.map +1 -0
  62. package/lib/services/{route53.d.ts → route53.service.d.ts} +21 -12
  63. package/lib/services/route53.service.d.ts.map +1 -0
  64. package/lib/services/{route53.js → route53.service.js} +25 -28
  65. package/lib/services/route53.service.js.map +1 -0
  66. package/lib/services/s3binary.service.d.ts +215 -0
  67. package/lib/services/s3binary.service.d.ts.map +1 -0
  68. package/lib/services/{s3binary.js → s3binary.service.js} +93 -55
  69. package/lib/services/s3binary.service.js.map +1 -0
  70. package/lib/services/secretsmanager.service.d.ts +102 -0
  71. package/lib/services/secretsmanager.service.d.ts.map +1 -0
  72. package/lib/services/{secretsmanager.js → secretsmanager.service.js} +40 -22
  73. package/lib/services/secretsmanager.service.js.map +1 -0
  74. package/lib/services/{sqsqueue.d.ts → sqsqueue.service.d.ts} +60 -35
  75. package/lib/services/sqsqueue.service.d.ts.map +1 -0
  76. package/lib/services/{sqsqueue.js → sqsqueue.service.js} +53 -28
  77. package/lib/services/sqsqueue.service.js.map +1 -0
  78. package/package.json +56 -64
  79. package/webda.module.json +1425 -264
  80. package/lib/deployers/cloudformation.d.ts +0 -317
  81. package/lib/deployers/cloudformation.d.ts.map +0 -1
  82. package/lib/deployers/cloudformation.js +0 -837
  83. package/lib/deployers/cloudformation.js.map +0 -1
  84. package/lib/deployers/cloudformation.spec.d.ts +0 -2
  85. package/lib/deployers/cloudformation.spec.d.ts.map +0 -1
  86. package/lib/deployers/cloudformation.spec.js +0 -530
  87. package/lib/deployers/cloudformation.spec.js.map +0 -1
  88. package/lib/deployers/index.spec.d.ts +0 -9
  89. package/lib/deployers/index.spec.d.ts.map +0 -1
  90. package/lib/deployers/index.spec.js +0 -595
  91. package/lib/deployers/index.spec.js.map +0 -1
  92. package/lib/deployers/lambdapackager.d.ts +0 -28
  93. package/lib/deployers/lambdapackager.d.ts.map +0 -1
  94. package/lib/deployers/lambdapackager.js +0 -26
  95. package/lib/deployers/lambdapackager.js.map +0 -1
  96. package/lib/deployers/lambdapackager.spec.d.ts +0 -2
  97. package/lib/deployers/lambdapackager.spec.d.ts.map +0 -1
  98. package/lib/deployers/lambdapackager.spec.js +0 -44
  99. package/lib/deployers/lambdapackager.spec.js.map +0 -1
  100. package/lib/index.spec.d.ts +0 -11
  101. package/lib/index.spec.d.ts.map +0 -1
  102. package/lib/index.spec.js +0 -42
  103. package/lib/index.spec.js.map +0 -1
  104. package/lib/services/aws-mixin.d.ts +0 -25
  105. package/lib/services/aws-mixin.d.ts.map +0 -1
  106. package/lib/services/aws-mixin.js +0 -18
  107. package/lib/services/aws-mixin.js.map +0 -1
  108. package/lib/services/cloudwatchlogger.d.ts +0 -82
  109. package/lib/services/cloudwatchlogger.d.ts.map +0 -1
  110. package/lib/services/cloudwatchlogger.js.map +0 -1
  111. package/lib/services/cloudwatchlogger.spec.d.ts +0 -2
  112. package/lib/services/cloudwatchlogger.spec.d.ts.map +0 -1
  113. package/lib/services/cloudwatchlogger.spec.js +0 -104
  114. package/lib/services/cloudwatchlogger.spec.js.map +0 -1
  115. package/lib/services/dynamodb.d.ts +0 -174
  116. package/lib/services/dynamodb.d.ts.map +0 -1
  117. package/lib/services/dynamodb.js +0 -711
  118. package/lib/services/dynamodb.js.map +0 -1
  119. package/lib/services/dynamodb.spec.d.ts +0 -24
  120. package/lib/services/dynamodb.spec.d.ts.map +0 -1
  121. package/lib/services/dynamodb.spec.js +0 -344
  122. package/lib/services/dynamodb.spec.js.map +0 -1
  123. package/lib/services/lambdacaller.d.ts +0 -69
  124. package/lib/services/lambdacaller.d.ts.map +0 -1
  125. package/lib/services/lambdacaller.js +0 -63
  126. package/lib/services/lambdacaller.js.map +0 -1
  127. package/lib/services/lambdacaller.spec.d.ts +0 -2
  128. package/lib/services/lambdacaller.spec.d.ts.map +0 -1
  129. package/lib/services/lambdacaller.spec.js +0 -70
  130. package/lib/services/lambdacaller.spec.js.map +0 -1
  131. package/lib/services/lambdaserver.d.ts +0 -87
  132. package/lib/services/lambdaserver.d.ts.map +0 -1
  133. package/lib/services/lambdaserver.js +0 -263
  134. package/lib/services/lambdaserver.js.map +0 -1
  135. package/lib/services/lambdaserver.spec.d.ts +0 -2
  136. package/lib/services/lambdaserver.spec.d.ts.map +0 -1
  137. package/lib/services/lambdaserver.spec.js +0 -417
  138. package/lib/services/lambdaserver.spec.js.map +0 -1
  139. package/lib/services/route53.d.ts.map +0 -1
  140. package/lib/services/route53.js.map +0 -1
  141. package/lib/services/route53.spec.d.ts +0 -2
  142. package/lib/services/route53.spec.d.ts.map +0 -1
  143. package/lib/services/route53.spec.js +0 -102
  144. package/lib/services/route53.spec.js.map +0 -1
  145. package/lib/services/s3binary.d.ts +0 -163
  146. package/lib/services/s3binary.d.ts.map +0 -1
  147. package/lib/services/s3binary.js.map +0 -1
  148. package/lib/services/s3binary.spec.d.ts +0 -2
  149. package/lib/services/s3binary.spec.d.ts.map +0 -1
  150. package/lib/services/s3binary.spec.js +0 -284
  151. package/lib/services/s3binary.spec.js.map +0 -1
  152. package/lib/services/secretsmanager.d.ts +0 -81
  153. package/lib/services/secretsmanager.d.ts.map +0 -1
  154. package/lib/services/secretsmanager.js.map +0 -1
  155. package/lib/services/secretsmanager.spec.d.ts +0 -2
  156. package/lib/services/secretsmanager.spec.d.ts.map +0 -1
  157. package/lib/services/secretsmanager.spec.js +0 -66
  158. package/lib/services/secretsmanager.spec.js.map +0 -1
  159. package/lib/services/sqsqueue.d.ts.map +0 -1
  160. package/lib/services/sqsqueue.js.map +0 -1
  161. package/lib/services/sqsqueue.spec.d.ts +0 -2
  162. package/lib/services/sqsqueue.spec.d.ts.map +0 -1
  163. package/lib/services/sqsqueue.spec.js +0 -157
  164. package/lib/services/sqsqueue.spec.js.map +0 -1
  165. package/lib/shell.d.ts +0 -13
  166. package/lib/shell.d.ts.map +0 -1
  167. package/lib/shell.js +0 -42
  168. package/lib/shell.js.map +0 -1
  169. package/webda.shell.json +0 -11
@@ -0,0 +1,127 @@
1
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
2
+ var useValue = arguments.length > 2;
3
+ for (var i = 0; i < initializers.length; i++) {
4
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
5
+ }
6
+ return useValue ? value : void 0;
7
+ };
8
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
9
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
10
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
11
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
12
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
13
+ var _, done = false;
14
+ for (var i = decorators.length - 1; i >= 0; i--) {
15
+ var context = {};
16
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
17
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
18
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
19
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
20
+ if (kind === "accessor") {
21
+ if (result === void 0) continue;
22
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
23
+ if (_ = accept(result.get)) descriptor.get = _;
24
+ if (_ = accept(result.set)) descriptor.set = _;
25
+ if (_ = accept(result.init)) initializers.unshift(_);
26
+ }
27
+ else if (_ = accept(result)) {
28
+ if (kind === "field") initializers.unshift(_);
29
+ else descriptor[key] = _;
30
+ }
31
+ }
32
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
+ done = true;
34
+ };
35
+ import { Command, Service } from "@webda/core";
36
+ import { useWorkerOutput } from "@webda/workout";
37
+ import { DynamoStore } from "./dynamodb.service.js";
38
+ import { Route53Service } from "./route53.service.js";
39
+ /**
40
+ * AWS command line utilities
41
+ *
42
+ * Exposes the `webda aws route53 export|import|sync` and `webda aws copyTable` commands
43
+ *
44
+ * @WebdaModda
45
+ */
46
+ let AWSCommands = (() => {
47
+ var _a;
48
+ let _classSuper = Service;
49
+ let _instanceExtraInitializers = [];
50
+ let _route53Export_decorators;
51
+ let _route53Import_decorators;
52
+ let _route53Sync_decorators;
53
+ let _copyTable_decorators;
54
+ return _a = class AWSCommands extends _classSuper {
55
+ /**
56
+ * Export a Route53 domain to a file
57
+ *
58
+ * @param domain - the domain to export
59
+ * @param file - the file to export to (.json or .yml)
60
+ */
61
+ async route53Export(domain, file) {
62
+ await Route53Service.export(domain, file);
63
+ }
64
+ /**
65
+ * Import a Route53 exported file to Route53
66
+ *
67
+ * @param file - the exported file
68
+ */
69
+ async route53Import(file) {
70
+ await Route53Service.import({ file }, this.log.bind(this));
71
+ }
72
+ /**
73
+ * Sync a Route53 exported file to Route53, removing any other entries
74
+ *
75
+ * @param file - the exported file
76
+ * @param pretend - only display the entries that would be removed
77
+ */
78
+ async route53Sync(file, pretend = false) {
79
+ await Route53Service.import({ file, pretend, sync: true }, this.log.bind(this));
80
+ }
81
+ /**
82
+ * Copy all items of a DynamoDB table into another one
83
+ *
84
+ * @param sourceTable - the table to copy from
85
+ * @param targetTable - the table to copy to
86
+ */
87
+ async copyTable(sourceTable, targetTable) {
88
+ await DynamoStore.copyTable(useWorkerOutput(), sourceTable, targetTable);
89
+ }
90
+ constructor() {
91
+ super(...arguments);
92
+ __runInitializers(this, _instanceExtraInitializers);
93
+ }
94
+ },
95
+ (() => {
96
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
97
+ _route53Export_decorators = [Command("aws route53 export", {
98
+ description: "Export a Route53 domain to a json file",
99
+ requires: ["aws-commands"],
100
+ phase: "resolved"
101
+ })];
102
+ _route53Import_decorators = [Command("aws route53 import", {
103
+ description: "Import a Route53 exported format to Route53",
104
+ requires: ["aws-commands"],
105
+ phase: "resolved"
106
+ })];
107
+ _route53Sync_decorators = [Command("aws route53 sync", {
108
+ description: "Sync a Route53 exported format to Route53 (remove all others entries)",
109
+ requires: ["aws-commands"],
110
+ phase: "resolved"
111
+ })];
112
+ _copyTable_decorators = [Command("aws copyTable", {
113
+ description: "Copy a DynamoDB table content to another table",
114
+ requires: ["aws-commands"],
115
+ phase: "resolved"
116
+ })];
117
+ __esDecorate(_a, null, _route53Export_decorators, { kind: "method", name: "route53Export", static: false, private: false, access: { has: obj => "route53Export" in obj, get: obj => obj.route53Export }, metadata: _metadata }, null, _instanceExtraInitializers);
118
+ __esDecorate(_a, null, _route53Import_decorators, { kind: "method", name: "route53Import", static: false, private: false, access: { has: obj => "route53Import" in obj, get: obj => obj.route53Import }, metadata: _metadata }, null, _instanceExtraInitializers);
119
+ __esDecorate(_a, null, _route53Sync_decorators, { kind: "method", name: "route53Sync", static: false, private: false, access: { has: obj => "route53Sync" in obj, get: obj => obj.route53Sync }, metadata: _metadata }, null, _instanceExtraInitializers);
120
+ __esDecorate(_a, null, _copyTable_decorators, { kind: "method", name: "copyTable", static: false, private: false, access: { has: obj => "copyTable" in obj, get: obj => obj.copyTable }, metadata: _metadata }, null, _instanceExtraInitializers);
121
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
122
+ })(),
123
+ _a;
124
+ })();
125
+ export { AWSCommands };
126
+ export default AWSCommands;
127
+ //# sourceMappingURL=awscommands.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awscommands.service.js","sourceRoot":"","sources":["../../src/services/awscommands.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;GAMG;IACU,WAAW;;sBAAS,OAAO;;;;;;sBAA3B,WAAY,SAAQ,WAAO;YACtC;;;;;eAKG;YAMH,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,IAAY;gBAC9C,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;YAED;;;;eAIG;YAMH,KAAK,CAAC,aAAa,CAAC,IAAY;gBAC9B,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,CAAC;YAED;;;;;eAKG;YAMH,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,OAAO,GAAY,KAAK;gBACtD,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAClF,CAAC;YAED;;;;;eAKG;YAMH,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,WAAmB;gBACtD,MAAM,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAC3E,CAAC;;;gBA1DU,mDAAW;;;;;yCAOrB,OAAO,CAAC,oBAAoB,EAAE;oBAC7B,WAAW,EAAE,wCAAwC;oBACrD,QAAQ,EAAE,CAAC,cAAc,CAAC;oBAC1B,KAAK,EAAE,UAAU;iBAClB,CAAC;yCAUD,OAAO,CAAC,oBAAoB,EAAE;oBAC7B,WAAW,EAAE,6CAA6C;oBAC1D,QAAQ,EAAE,CAAC,cAAc,CAAC;oBAC1B,KAAK,EAAE,UAAU;iBAClB,CAAC;uCAWD,OAAO,CAAC,kBAAkB,EAAE;oBAC3B,WAAW,EAAE,uEAAuE;oBACpF,QAAQ,EAAE,CAAC,cAAc,CAAC;oBAC1B,KAAK,EAAE,UAAU;iBAClB,CAAC;qCAWD,OAAO,CAAC,eAAe,EAAE;oBACxB,WAAW,EAAE,gDAAgD;oBAC7D,QAAQ,EAAE,CAAC,cAAc,CAAC;oBAC1B,KAAK,EAAE,UAAU;iBAClB,CAAC;YA3CF,wLAAM,aAAa,6DAElB;YAYD,wLAAM,aAAa,6DAElB;YAaD,kLAAM,WAAW,6DAEhB;YAaD,4KAAM,SAAS,6DAEd;;;;;SA1DU,WAAW;AA6DxB,eAAe,WAAW,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { CloudWatchLogs } from "@aws-sdk/client-cloudwatch-logs";
2
+ import { Service, ServiceParameters } from "@webda/core";
3
+ import { WorkerLogLevel, WorkerMessage } from "@webda/workout";
4
+ import { AWSServiceParameters } from "./aws-parameters.js";
5
+ import type { CloudFormationContributor } from "./contributors.js";
6
+ /**
7
+ * Send webda log to CloudWatch
8
+ */
9
+ export declare class CloudWatchLoggerParameters extends ServiceParameters implements AWSServiceParameters {
10
+ /**
11
+ * Custom endpoint (localstack, minio, ...)
12
+ */
13
+ endpoint?: string;
14
+ /**
15
+ * Static credentials, default to the AWS environment variables
16
+ */
17
+ credentials?: {
18
+ accessKeyId: string;
19
+ secretAccessKey: string;
20
+ sessionToken?: string;
21
+ };
22
+ /**
23
+ * AWS region
24
+ * @default "us-east-1"
25
+ */
26
+ region?: string;
27
+ /**
28
+ * logGroupName to send logStream to
29
+ */
30
+ logGroupName: string;
31
+ /**
32
+ * Prefix of the log stream name, a random uuid is appended
33
+ */
34
+ logStreamNamePrefix?: string;
35
+ /**
36
+ * KMS key to use when creating the log group
37
+ */
38
+ kmsKeyId?: string;
39
+ /**
40
+ * Tags to add when creating the log group
41
+ */
42
+ tags?: any;
43
+ /**
44
+ * Minimum level of logs to send
45
+ * @default "INFO"
46
+ */
47
+ logLevel?: WorkerLogLevel;
48
+ /**
49
+ * Send each log line as soon as it is produced
50
+ */
51
+ singlePush?: boolean;
52
+ /**
53
+ * CloudFormation customization
54
+ */
55
+ CloudFormation?: any;
56
+ /**
57
+ * Skip CloudFormation on deploy
58
+ */
59
+ CloudFormationSkip?: boolean;
60
+ /**
61
+ * @override
62
+ * @param params - raw parameters
63
+ * @returns this
64
+ */
65
+ load(params?: any): this;
66
+ }
67
+ /**
68
+ * Output log to a CloudWatch Stream
69
+ *
70
+ * @WebdaModda
71
+ */
72
+ export declare class CloudWatchLogger<T extends CloudWatchLoggerParameters = CloudWatchLoggerParameters> extends Service<T> implements CloudFormationContributor {
73
+ _logGroupName: string;
74
+ _logStreamName: string;
75
+ _seqToken: string;
76
+ _logStream: any;
77
+ _cloudwatch: CloudWatchLogs;
78
+ _bufferedLogs: any[];
79
+ /**
80
+ * Listener on the worker output
81
+ */
82
+ protected messageListener: (msg: WorkerMessage) => void;
83
+ /**
84
+ * Unsubscribe from the Webda.Result core event
85
+ */
86
+ protected resultListenerOff: () => void;
87
+ /**
88
+ * Create the log group and stream, then forward the logs
89
+ * @returns this
90
+ */
91
+ init(): Promise<this>;
92
+ /**
93
+ * Remove the log and result listeners
94
+ */
95
+ protected removeListeners(): void;
96
+ /**
97
+ * Flush the logs and stop forwarding
98
+ * @override
99
+ */
100
+ stop(): Promise<void>;
101
+ /**
102
+ * Send logs to CloudWatch
103
+ *
104
+ * @param copy - send a copy of the buffer and reset it before sending
105
+ */
106
+ sendLogs(copy?: boolean): Promise<void>;
107
+ /**
108
+ * Buffer a log line
109
+ * @param level - log level
110
+ * @param args - log arguments
111
+ */
112
+ _log(level: WorkerLogLevel, ...args: any[]): void;
113
+ /**
114
+ * IAM policy required by the service
115
+ * @param accountId - AWS account id
116
+ * @returns the policy statement
117
+ */
118
+ getARNPolicy(accountId: string): {
119
+ Sid: string;
120
+ Effect: string;
121
+ Action: string[];
122
+ Resource: string[];
123
+ };
124
+ /**
125
+ * CloudFormation resources for the log group
126
+ * @returns the resources
127
+ */
128
+ getCloudFormation(): {};
129
+ }
130
+ export default CloudWatchLogger;
131
+ //# sourceMappingURL=cloudwatchlogger.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudwatchlogger.service.d.ts","sourceRoot":"","sources":["../../src/services/cloudwatchlogger.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AACxE,OAAO,EAA8B,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAqB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,iBAAkB,YAAW,oBAAoB;IAC/F;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC;IACX;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,GAAQ,GAAG,IAAI,CAK3B;CACF;AAED;;;;GAIG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,0BAA0B,GAAG,0BAA0B,CAC7F,SAAQ,OAAO,CAAC,CAAC,CACjB,YAAW,yBAAyB;IAEpC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,GAAG,CAAC;IAChB,WAAW,EAAE,cAAc,CAAC;IAC5B,aAAa,EAAE,GAAG,EAAE,CAAM;IAC1B;;OAEG;IACH,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IACxD;;OAEG;IACH,SAAS,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAExC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAkC1B;IAED;;OAEG;IACH,SAAS,CAAC,eAAe,SAOxB;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED;;;;OAIG;IACG,QAAQ,CAAC,IAAI,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBnD;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAUhD;IAED;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM;QAG1B,GAAG;QACH,MAAM;QACN,MAAM;QACN,QAAQ;MAKX;IAED;;;OAGG;IACH,iBAAiB,OAehB;CACF;eAEc,gBAAgB"}
@@ -1,33 +1,37 @@
1
1
  import { CloudWatchLogs } from "@aws-sdk/client-cloudwatch-logs";
2
- import { Service, ServiceParameters } from "@webda/core";
3
- import { LogFilter } from "@webda/workout";
4
- import { AWSServiceParameters } from "./aws-mixin.js";
5
- import { randomUUID } from "crypto";
2
+ import { Service, ServiceParameters, useCoreEvents } from "@webda/core";
3
+ import { LogFilter, useWorkerOutput } from "@webda/workout";
4
+ import { randomUUID } from "node:crypto";
5
+ import { loadAWSParameters } from "./aws-parameters.js";
6
6
  /**
7
7
  * Send webda log to CloudWatch
8
8
  */
9
- export class CloudWatchLoggerParameters extends AWSServiceParameters(ServiceParameters) {
9
+ export class CloudWatchLoggerParameters extends ServiceParameters {
10
+ /**
11
+ * @override
12
+ * @param params - raw parameters
13
+ * @returns this
14
+ */
15
+ load(params = {}) {
16
+ super.load(params);
17
+ loadAWSParameters(this);
18
+ this.logLevel ?? (this.logLevel = "INFO");
19
+ return this;
20
+ }
10
21
  }
11
22
  /**
12
23
  * Output log to a CloudWatch Stream
13
24
  *
14
25
  * @WebdaModda
15
26
  */
16
- export default class CloudWatchLogger extends Service {
27
+ export class CloudWatchLogger extends Service {
17
28
  constructor() {
18
29
  super(...arguments);
19
30
  this._bufferedLogs = [];
20
31
  }
21
32
  /**
22
- * Load the parameters
23
- *
24
- * @param params
25
- */
26
- loadParameters(params) {
27
- return new CloudWatchLoggerParameters(params);
28
- }
29
- /**
30
- * @inheritdoc
33
+ * Create the log group and stream, then forward the logs
34
+ * @returns this
31
35
  */
32
36
  async init() {
33
37
  await super.init();
@@ -51,22 +55,43 @@ export default class CloudWatchLogger extends Service {
51
55
  logGroupName: this._logGroupName,
52
56
  logStreamName: this._logStreamName
53
57
  });
54
- this._webda.getWorkerOutput().on("message", (msg) => {
58
+ this.removeListeners();
59
+ this.messageListener = (msg) => {
55
60
  if (msg.type !== "log") {
56
61
  return;
57
62
  }
58
63
  if (LogFilter(msg.log.level, this.parameters.logLevel)) {
59
64
  this._log(msg.log.level, ...msg.log.args);
60
65
  }
61
- });
62
- this._webda.on("Webda.Result", this.sendLogs.bind(this));
66
+ };
67
+ useWorkerOutput().on("message", this.messageListener);
68
+ this.resultListenerOff = useCoreEvents("Webda.Result", () => this.sendLogs());
63
69
  return this;
64
70
  }
71
+ /**
72
+ * Remove the log and result listeners
73
+ */
74
+ removeListeners() {
75
+ if (this.messageListener) {
76
+ useWorkerOutput().off("message", this.messageListener);
77
+ this.messageListener = undefined;
78
+ }
79
+ this.resultListenerOff?.();
80
+ this.resultListenerOff = undefined;
81
+ }
82
+ /**
83
+ * Flush the logs and stop forwarding
84
+ * @override
85
+ */
86
+ async stop() {
87
+ this.removeListeners();
88
+ await this.sendLogs();
89
+ await super.stop();
90
+ }
65
91
  /**
66
92
  * Send logs to CloudWatch
67
93
  *
68
- * @param copy
69
- * @returns
94
+ * @param copy - send a copy of the buffer and reset it before sending
70
95
  */
71
96
  async sendLogs(copy = false) {
72
97
  if (!this._bufferedLogs.length) {
@@ -93,7 +118,9 @@ export default class CloudWatchLogger extends Service {
93
118
  }
94
119
  }
95
120
  /**
96
- * @inheritdoc
121
+ * Buffer a log line
122
+ * @param level - log level
123
+ * @param args - log arguments
97
124
  */
98
125
  _log(level, ...args) {
99
126
  this._bufferedLogs.push({
@@ -101,16 +128,20 @@ export default class CloudWatchLogger extends Service {
101
128
  timestamp: new Date().getTime()
102
129
  });
103
130
  if (this.parameters.singlePush) {
104
- this.sendLogs(true);
131
+ this.sendLogs(true).catch(() => {
132
+ // Ignore send errors to avoid logging loops
133
+ });
105
134
  }
106
135
  }
107
136
  /**
108
- * @inheritdoc
137
+ * IAM policy required by the service
138
+ * @param accountId - AWS account id
139
+ * @returns the policy statement
109
140
  */
110
141
  getARNPolicy(accountId) {
111
142
  const region = this.parameters.region || "us-east-1";
112
143
  return {
113
- Sid: this.constructor.name + this._name,
144
+ Sid: this.constructor.name + this.getName(),
114
145
  Effect: "Allow",
115
146
  Action: ["logs:*"],
116
147
  Resource: [
@@ -120,7 +151,8 @@ export default class CloudWatchLogger extends Service {
120
151
  };
121
152
  }
122
153
  /**
123
- * @inheritdoc
154
+ * CloudFormation resources for the log group
155
+ * @returns the resources
124
156
  */
125
157
  getCloudFormation() {
126
158
  if (this.parameters.CloudFormationSkip) {
@@ -128,7 +160,7 @@ export default class CloudWatchLogger extends Service {
128
160
  }
129
161
  const resources = {};
130
162
  this.parameters.CloudFormation = this.parameters.CloudFormation || {};
131
- resources[this._name + "LogGroup"] = {
163
+ resources[this.getName() + "LogGroup"] = {
132
164
  Type: "AWS::Logs::LogGroup",
133
165
  Properties: {
134
166
  ...this.parameters.CloudFormation.LogGroup,
@@ -139,5 +171,5 @@ export default class CloudWatchLogger extends Service {
139
171
  return resources;
140
172
  }
141
173
  }
142
- export { CloudWatchLogger };
143
- //# sourceMappingURL=cloudwatchlogger.js.map
174
+ export default CloudWatchLogger;
175
+ //# sourceMappingURL=cloudwatchlogger.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudwatchlogger.service.js","sourceRoot":"","sources":["../../src/services/cloudwatchlogger.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Minimal view of the CloudFormation deployer used by contributors
3
+ *
4
+ * Services only rely on this shape so they do not import the deployer
5
+ */
6
+ export interface CloudFormationDeployerInfo {
7
+ /**
8
+ * Merge the deployment default tags with the resource tags
9
+ * @param tags - resource specific tags
10
+ */
11
+ getDefaultTags(tags?: any): any;
12
+ [key: string]: any;
13
+ }
14
+ /**
15
+ * Interface that allow a Service to define specific AWS permissions
16
+ */
17
+ export interface IAMPolicyContributor {
18
+ /**
19
+ *
20
+ * @param accountId The account where the application is being deployed
21
+ * @param region The region where the application is being deployed
22
+ */
23
+ getARNPolicy: (accountId: string, region: string) => object;
24
+ }
25
+ /**
26
+ * Allow a service to contribute to the CloudFormation template
27
+ */
28
+ export interface CloudFormationContributor {
29
+ /**
30
+ *
31
+ * {@link S3Binary.getCloudFormation}
32
+ * @param deployer The current deployer asking for contribution
33
+ */
34
+ getCloudFormation: (deployer: CloudFormationDeployerInfo) => object;
35
+ }
36
+ //# sourceMappingURL=contributors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contributors.d.ts","sourceRoot":"","sources":["../../src/services/contributors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,iBAAiB,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,MAAM,CAAC;CACrE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contributors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contributors.js","sourceRoot":"","sources":["../../src/services/contributors.ts"],"names":[],"mappings":""}