@flink-app/s3-plugin 0.3.5

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 (165) hide show
  1. package/.flink/generated-schemas.json +311 -0
  2. package/.flink/generatedHandlers.ts +7 -0
  3. package/.flink/generatedRepos.ts +5 -0
  4. package/.flink/schemas/schemas.json +5 -0
  5. package/.flink/schemas/schemas.ts +1 -0
  6. package/.flink/start.ts +4 -0
  7. package/dist/.flink/generatedHandlers.d.ts +1 -0
  8. package/dist/.flink/generatedHandlers.js +7 -0
  9. package/dist/.flink/generatedRepos.d.ts +1 -0
  10. package/dist/.flink/generatedRepos.js +7 -0
  11. package/dist/.flink/schemas/schemas.d.ts +0 -0
  12. package/dist/.flink/schemas/schemas.js +2 -0
  13. package/dist/.flink/schemas/schemas.json +5 -0
  14. package/dist/.flink/start.d.ts +3 -0
  15. package/dist/.flink/start.js +6 -0
  16. package/dist/index.d.ts +4 -0
  17. package/dist/index.js +172 -0
  18. package/dist/s3Client.d.ts +36 -0
  19. package/dist/s3Client.js +233 -0
  20. package/dist/s3PluginContext.d.ts +6 -0
  21. package/dist/s3PluginContext.js +2 -0
  22. package/dist/schemas/ListObjectsResponse.d.ts +5 -0
  23. package/dist/schemas/ListObjectsResponse.js +2 -0
  24. package/dist/schemas/s3ClientOptions.d.ts +7 -0
  25. package/dist/schemas/s3ClientOptions.js +2 -0
  26. package/dist/schemas/s3PluginOptions.d.ts +11 -0
  27. package/dist/schemas/s3PluginOptions.js +2 -0
  28. package/dist/src/Ctx.d.ts +19 -0
  29. package/dist/src/Ctx.js +2 -0
  30. package/dist/src/handlers/HandlebarsTemplateHandler.d.ts +5 -0
  31. package/dist/src/handlers/HandlebarsTemplateHandler.js +63 -0
  32. package/dist/src/handlers/Management/Get.d.ts +7 -0
  33. package/dist/src/handlers/Management/Get.js +53 -0
  34. package/dist/src/handlers/Management/GetManagement.d.ts +8 -0
  35. package/dist/src/handlers/Management/GetManagement.js +53 -0
  36. package/dist/src/handlers/User/DeleteByUserid.d.ts +9 -0
  37. package/dist/src/handlers/User/DeleteByUserid.js +70 -0
  38. package/dist/src/handlers/User/GetByUserid.d.ts +9 -0
  39. package/dist/src/handlers/User/GetByUserid.js +71 -0
  40. package/dist/src/handlers/User/GetList.d.ts +9 -0
  41. package/dist/src/handlers/User/GetList.js +64 -0
  42. package/dist/src/handlers/User/GetMe.d.ts +8 -0
  43. package/dist/src/handlers/User/GetMe.js +81 -0
  44. package/dist/src/handlers/User/Post.d.ts +10 -0
  45. package/dist/src/handlers/User/Post.js +87 -0
  46. package/dist/src/handlers/User/PostLogin.d.ts +10 -0
  47. package/dist/src/handlers/User/PostLogin.js +86 -0
  48. package/dist/src/handlers/User/PutByUserid.d.ts +9 -0
  49. package/dist/src/handlers/User/PutByUserid.js +97 -0
  50. package/dist/src/index.d.ts +4 -0
  51. package/dist/src/index.js +380 -0
  52. package/dist/src/lib/customer.d.ts +6 -0
  53. package/dist/src/lib/customer.js +121 -0
  54. package/dist/src/lib/payment.d.ts +6 -0
  55. package/dist/src/lib/payment.js +113 -0
  56. package/dist/src/managementApiContext.d.ts +7 -0
  57. package/dist/src/managementApiContext.js +2 -0
  58. package/dist/src/models/ManagementApi.d.ts +28 -0
  59. package/dist/src/models/ManagementApi.js +8 -0
  60. package/dist/src/repos/ConnectSessionRepo.d.ts +5 -0
  61. package/dist/src/repos/ConnectSessionRepo.js +26 -0
  62. package/dist/src/repos/ManagementUserRepo.d.ts +5 -0
  63. package/dist/src/repos/ManagementUserRepo.js +26 -0
  64. package/dist/src/reposx/ConnectSessionRepo.d.ts +5 -0
  65. package/dist/src/reposx/ConnectSessionRepo.js +26 -0
  66. package/dist/src/schemas/ConnectSession.d.ts +4 -0
  67. package/dist/src/schemas/ConnectSession.js +2 -0
  68. package/dist/src/schemas/Management/GetReq.d.ts +2 -0
  69. package/dist/src/schemas/Management/GetReq.js +2 -0
  70. package/dist/src/schemas/Management/GetRes.d.ts +3 -0
  71. package/dist/src/schemas/Management/GetRes.js +2 -0
  72. package/dist/src/schemas/ManagementUser.d.ts +6 -0
  73. package/dist/src/schemas/ManagementUser.js +2 -0
  74. package/dist/src/schemas/ManagementUserViewModel.d.ts +4 -0
  75. package/dist/src/schemas/ManagementUserViewModel.js +19 -0
  76. package/dist/src/schemas/ModuleList.d.ts +18 -0
  77. package/dist/src/schemas/ModuleList.js +2 -0
  78. package/dist/src/schemas/User/DeleteByUseridReq.d.ts +2 -0
  79. package/dist/src/schemas/User/DeleteByUseridReq.js +2 -0
  80. package/dist/src/schemas/User/DeleteByUseridRes.d.ts +2 -0
  81. package/dist/src/schemas/User/DeleteByUseridRes.js +2 -0
  82. package/dist/src/schemas/User/GetByUseridReq.d.ts +2 -0
  83. package/dist/src/schemas/User/GetByUseridReq.js +2 -0
  84. package/dist/src/schemas/User/GetByUseridRes.d.ts +3 -0
  85. package/dist/src/schemas/User/GetByUseridRes.js +2 -0
  86. package/dist/src/schemas/User/GetListReq.d.ts +2 -0
  87. package/dist/src/schemas/User/GetListReq.js +2 -0
  88. package/dist/src/schemas/User/GetListRes.d.ts +4 -0
  89. package/dist/src/schemas/User/GetListRes.js +2 -0
  90. package/dist/src/schemas/User/GetMeReq.d.ts +2 -0
  91. package/dist/src/schemas/User/GetMeReq.js +2 -0
  92. package/dist/src/schemas/User/GetMeRes.d.ts +3 -0
  93. package/dist/src/schemas/User/GetMeRes.js +2 -0
  94. package/dist/src/schemas/User/PostLoginReq.d.ts +4 -0
  95. package/dist/src/schemas/User/PostLoginReq.js +2 -0
  96. package/dist/src/schemas/User/PostLoginRes.d.ts +5 -0
  97. package/dist/src/schemas/User/PostLoginRes.js +2 -0
  98. package/dist/src/schemas/User/PostReq.d.ts +3 -0
  99. package/dist/src/schemas/User/PostReq.js +2 -0
  100. package/dist/src/schemas/User/PostRes.d.ts +3 -0
  101. package/dist/src/schemas/User/PostRes.js +2 -0
  102. package/dist/src/schemas/User/PutByUseridReq.d.ts +3 -0
  103. package/dist/src/schemas/User/PutByUseridReq.js +2 -0
  104. package/dist/src/schemas/User/PutByUseridRes.d.ts +3 -0
  105. package/dist/src/schemas/User/PutByUseridRes.js +2 -0
  106. package/dist/src/schemas/createStripeCustomerOptions.d.ts +11 -0
  107. package/dist/src/schemas/createStripeCustomerOptions.js +2 -0
  108. package/dist/src/schemas/customer/connectToStripeConnectOptions.d.ts +3 -0
  109. package/dist/src/schemas/customer/connectToStripeConnectOptions.js +2 -0
  110. package/dist/src/schemas/customer/hasPaymentMethodOptions.d.ts +3 -0
  111. package/dist/src/schemas/customer/hasPaymentMethodOptions.js +2 -0
  112. package/dist/src/schemas/customer/setupCardOptions.d.ts +3 -0
  113. package/dist/src/schemas/customer/setupCardOptions.js +2 -0
  114. package/dist/src/schemas/customer/setupCardResponse.d.ts +4 -0
  115. package/dist/src/schemas/customer/setupCardResponse.js +2 -0
  116. package/dist/src/schemas/customer/setupCardTokenOptions.d.ts +4 -0
  117. package/dist/src/schemas/customer/setupCardTokenOptions.js +2 -0
  118. package/dist/src/schemas/payment/capturePaymentOptions.d.ts +4 -0
  119. package/dist/src/schemas/payment/capturePaymentOptions.js +2 -0
  120. package/dist/src/schemas/payment/confirmPaymentOptions.d.ts +4 -0
  121. package/dist/src/schemas/payment/confirmPaymentOptions.js +2 -0
  122. package/dist/src/schemas/payment/confirmPaymentResponse.d.ts +7 -0
  123. package/dist/src/schemas/payment/confirmPaymentResponse.js +2 -0
  124. package/dist/src/schemas/payment/confirmPaymentTokenOptions.d.ts +4 -0
  125. package/dist/src/schemas/payment/confirmPaymentTokenOptions.js +2 -0
  126. package/dist/src/schemas/payment/createPaymentResponse.d.ts +5 -0
  127. package/dist/src/schemas/payment/createPaymentResponse.js +2 -0
  128. package/dist/src/schemas/stripeAPIToken.d.ts +4 -0
  129. package/dist/src/schemas/stripeAPIToken.js +2 -0
  130. package/dist/src/schemas/stripePluginOptions.d.ts +31 -0
  131. package/dist/src/schemas/stripePluginOptions.js +2 -0
  132. package/dist/src/stripeAPI.d.ts +32 -0
  133. package/dist/src/stripeAPI.js +163 -0
  134. package/dist/src/stripePlguinContext.d.ts +5 -0
  135. package/dist/src/stripePlguinContext.js +2 -0
  136. package/dist/src/stripePluginContext.d.ts +6 -0
  137. package/dist/src/stripePluginContext.js +2 -0
  138. package/dist/src/templates/connect-done.d.ts +1 -0
  139. package/dist/src/templates/connect-done.js +4 -0
  140. package/dist/src/templates/error.d.ts +1 -0
  141. package/dist/src/templates/error.js +4 -0
  142. package/dist/src/templates/master.d.ts +1 -0
  143. package/dist/src/templates/master.js +4 -0
  144. package/dist/src/templates/pay-enter-card.d.ts +1 -0
  145. package/dist/src/templates/pay-enter-card.js +4 -0
  146. package/dist/src/templates/pay-select-card.d.ts +1 -0
  147. package/dist/src/templates/pay-select-card.js +4 -0
  148. package/dist/src/templates/setup-card.d.ts +1 -0
  149. package/dist/src/templates/setup-card.js +4 -0
  150. package/dist/src/templates/setup-done.d.ts +1 -0
  151. package/dist/src/templates/setup-done.js +4 -0
  152. package/dist/src/templates/style.d.ts +1 -0
  153. package/dist/src/templates/style.js +4 -0
  154. package/dist/src/utils/bcrypt.d.ts +2 -0
  155. package/dist/src/utils/bcrypt.js +28 -0
  156. package/nodemon.json +7 -0
  157. package/package.json +34 -0
  158. package/readme.md +57 -0
  159. package/src/index.ts +100 -0
  160. package/src/s3Client.ts +150 -0
  161. package/src/s3PluginContext.ts +8 -0
  162. package/src/schemas/ListObjectsResponse.ts +3 -0
  163. package/src/schemas/s3ClientOptions.ts +7 -0
  164. package/src/schemas/s3PluginOptions.ts +11 -0
  165. package/tsconfig.json +23 -0
@@ -0,0 +1,150 @@
1
+ import AWS from "aws-sdk";
2
+ import S3, { ManagedUpload, ObjectIdentifierList } from "aws-sdk/clients/s3";
3
+ import https from "https";
4
+
5
+ import { ListObjectResponse } from "./schemas/ListObjectsResponse";
6
+ import { s3ClientOptions } from "./schemas/s3ClientOptions";
7
+
8
+ class S3Client {
9
+ private s3Bucket: string;
10
+ private awsAccessKeyId: string;
11
+ private awsSecretAccessKey: string;
12
+ private s3Endpoint: string | undefined;
13
+ private s3Acl: string | undefined;
14
+ public s3: AWS.S3;
15
+
16
+ constructor(options: s3ClientOptions) {
17
+ this.s3Bucket = options.bucket;
18
+ this.awsAccessKeyId = options.accessKeyId;
19
+ this.awsSecretAccessKey = options.secretAccessKey;
20
+ this.s3Endpoint = options.endpoint;
21
+ this.s3Acl = options.s3Acl;
22
+
23
+ this.s3 = new AWS.S3({
24
+ accessKeyId: this.awsAccessKeyId,
25
+ secretAccessKey: this.awsSecretAccessKey,
26
+ sslEnabled: true,
27
+ httpOptions: {
28
+ agent: new https.Agent({ keepAlive: true }),
29
+ },
30
+ // @ts-ignore
31
+ endpoint: this.s3Endpoint ? new AWS.Endpoint(this.s3Endpoint) : undefined,
32
+ });
33
+ }
34
+
35
+ async checkIfExists(fileName: string) {
36
+ const params = {
37
+ Bucket: this.s3Bucket,
38
+ Key: fileName,
39
+ };
40
+ try {
41
+ await this.s3.headObject(params).promise();
42
+ return true;
43
+ } catch (err) {
44
+ return false;
45
+ }
46
+ }
47
+
48
+ async uploadFile(fileName: string, data: Buffer, mime?: string): Promise<ManagedUpload.SendData> {
49
+ const params: S3.Types.PutObjectRequest = {
50
+ Bucket: this.s3Bucket,
51
+ Key: fileName,
52
+ ContentType: mime,
53
+ Body: data,
54
+ ACL: this.s3Acl,
55
+ };
56
+ return this.s3.upload(params).promise();
57
+ }
58
+
59
+ async getSignedUrl(key: string, expires = 60 * 1000) {
60
+ const params = {
61
+ Bucket: this.s3Bucket,
62
+ Key: key,
63
+ Expires: expires / 1000, // Note: AWS sets expires in seconds
64
+ };
65
+
66
+ return new Promise((resolve, reject) =>
67
+ this.s3.getSignedUrl("getObject", params, (err, url) => {
68
+ if (err) {
69
+ reject(err);
70
+ }
71
+ resolve(url);
72
+ })
73
+ );
74
+ }
75
+
76
+ async deleteObject(file: string, version?: string) {
77
+ const params = {
78
+ Bucket: this.s3Bucket,
79
+ Key: file,
80
+ VersionId: version,
81
+ };
82
+
83
+ return this.s3.deleteObject(params).promise();
84
+ }
85
+
86
+ /**
87
+ * Delete files from s3 bucket
88
+ *
89
+ * @param {Array<Object>} files
90
+ *
91
+ * @returns {Promise}
92
+ */
93
+ async deleteObjects(files: ObjectIdentifierList) {
94
+ const params: S3.Types.DeleteObjectsRequest = {
95
+ Bucket: this.s3Bucket,
96
+ Delete: {
97
+ Objects: files,
98
+ Quiet: false,
99
+ },
100
+ };
101
+
102
+ return this.s3.deleteObjects(params).promise();
103
+ }
104
+
105
+ async getObject(key: string) {
106
+ try {
107
+ const file = await this.s3.getObject({ Bucket: this.s3Bucket, Key: key }).promise();
108
+
109
+ if (!file.Body) {
110
+ throw new Error("Missing file body");
111
+ }
112
+
113
+ return {
114
+ data: file.Body,
115
+ mimetype: file.ContentType,
116
+ };
117
+ } catch (err) {
118
+ throw `File ${key} does not exist`;
119
+ }
120
+ }
121
+
122
+ async getObjects(): Promise<ListObjectResponse> {
123
+ try {
124
+ const { Contents } = await this.s3.listObjects({ Bucket: this.s3Bucket, MaxKeys: 2000 }).promise();
125
+
126
+ const files: { key: string }[] = [];
127
+
128
+ Contents?.forEach(({ Key }) => {
129
+ if (Key) files.push({ key: Key });
130
+ });
131
+
132
+ return { files };
133
+ } catch (err) {
134
+ throw err;
135
+ }
136
+ }
137
+
138
+ /**
139
+ * This use only for unit tests
140
+ */
141
+ async deleteBucket() {
142
+ try {
143
+ await this.s3.deleteBucket({ Bucket: this.s3Bucket }).promise();
144
+ } catch (err) {
145
+ throw err;
146
+ }
147
+ }
148
+ }
149
+
150
+ export default S3Client;
@@ -0,0 +1,8 @@
1
+ import { FlinkRepo } from "@flink-app/flink";
2
+ import S3Client from "./s3Client";
3
+
4
+ export interface s3PluginContext {
5
+ s3Plugin: {
6
+ s3Client: S3Client;
7
+ };
8
+ }
@@ -0,0 +1,3 @@
1
+ export type ListObjectResponse = {
2
+ files: { key: string }[]; //TODO: This will possible to improve, if need pagination, and more data from the objects
3
+ };
@@ -0,0 +1,7 @@
1
+ export interface s3ClientOptions {
2
+ accessKeyId: string;
3
+ secretAccessKey: string;
4
+ bucket: string;
5
+ s3Acl?: string;
6
+ endpoint?: string;
7
+ }
@@ -0,0 +1,11 @@
1
+ export interface s3PluginOptions {
2
+ accessKeyId: string;
3
+ secretAccessKey: string;
4
+ bucket: string;
5
+ s3Acl?: string;
6
+ endpoint?: string;
7
+ maxFileSize?: number;
8
+ enableUpload: boolean;
9
+ uploadUrl?: string;
10
+ uploadPermissionRequired?: string;
11
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es5",
4
+ "lib": ["esnext", "es2016"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "esModuleInterop": true,
8
+ "allowSyntheticDefaultImports": true,
9
+ "strict": true,
10
+ "forceConsistentCasingInFileNames": true,
11
+ "module": "commonjs",
12
+ "moduleResolution": "node",
13
+ "resolveJsonModule": true,
14
+ "isolatedModules": true,
15
+ "noEmit": false,
16
+ "declaration": true,
17
+ "experimentalDecorators": true,
18
+ "checkJs": true,
19
+ "outDir": "dist"
20
+ },
21
+ "include": ["./src/*"],
22
+ "exclude": ["./node_modules/*"]
23
+ }