@fixefy/fixefy-ui-utils 0.0.11 → 0.0.12
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/dist-cjs/auth/index.js +40 -0
- package/dist-cjs/auth/index.js.map +1 -0
- package/dist-cjs/aws/aws_lambda_helper.d.ts +5 -0
- package/dist-cjs/aws/aws_lambda_helper.js +68 -0
- package/dist-cjs/aws/aws_lambda_helper.js.map +1 -0
- package/dist-cjs/aws/aws_s3_helper.d.ts +0 -0
- package/dist-cjs/aws/aws_s3_helper.js +243 -0
- package/dist-cjs/aws/aws_s3_helper.js.map +1 -0
- package/dist-cjs/aws/data_models.js +3 -0
- package/dist-cjs/aws/data_models.js.map +1 -0
- package/dist-cjs/aws/index.d.ts +1 -0
- package/dist-cjs/aws/index.js +6 -0
- package/dist-cjs/aws/index.js.map +1 -0
- package/dist-cjs/commander/index.d.ts +33 -0
- package/dist-cjs/commander/index.js +292 -0
- package/dist-cjs/commander/index.js.map +1 -0
- package/dist-cjs/constants/index.js +89 -0
- package/dist-cjs/constants/index.js.map +1 -0
- package/dist-cjs/contents/index.d.ts +0 -0
- package/dist-cjs/contents/index.js +33 -0
- package/dist-cjs/contents/index.js.map +1 -0
- package/{dist-es/types → dist-cjs}/files/index.d.ts +1 -1
- package/dist-cjs/files/index.js +31 -0
- package/dist-cjs/files/index.js.map +1 -0
- package/dist-cjs/{types/graphql → graphql}/index.d.ts +3 -3
- package/dist-cjs/graphql/index.js +338 -0
- package/dist-cjs/graphql/index.js.map +1 -0
- package/dist-cjs/{types/headers → headers}/index.d.ts +1 -1
- package/dist-cjs/headers/index.js +103 -0
- package/dist-cjs/headers/index.js.map +1 -0
- package/dist-cjs/images/index.js +16 -0
- package/dist-cjs/images/index.js.map +1 -0
- package/dist-cjs/index.d.ts +12 -0
- package/dist-cjs/index.js +18 -39
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/json/index.js +154 -0
- package/dist-cjs/json/index.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/{types/page_context → page_context}/index.d.ts +0 -1
- package/dist-cjs/page_context/index.js +511 -0
- package/dist-cjs/page_context/index.js.map +1 -0
- package/dist-cjs/redirect/index.js +19 -0
- package/dist-cjs/redirect/index.js.map +1 -0
- package/dist-cjs/renderer/index.d.ts +0 -0
- package/dist-cjs/renderer/index.js +78 -0
- package/dist-cjs/renderer/index.js.map +1 -0
- package/dist-cjs/resolvers/index.js +38 -0
- package/dist-cjs/resolvers/index.js.map +1 -0
- package/dist-cjs/transform/index.js +44 -0
- package/dist-cjs/transform/index.js.map +1 -0
- package/dist-cjs/types/index.d.ts +39 -11
- package/dist-cjs/types/index.js +3 -0
- package/dist-cjs/types/index.js.map +1 -0
- package/dist-cjs/validate/index.js +56 -0
- package/dist-cjs/validate/index.js.map +1 -0
- package/dist-es/auth/index.js +38 -0
- package/dist-es/auth/index.js.map +1 -0
- package/dist-es/aws/aws_lambda_helper.d.ts +5 -0
- package/dist-es/aws/aws_lambda_helper.js +60 -0
- package/dist-es/aws/aws_lambda_helper.js.map +1 -0
- package/dist-es/aws/aws_s3_helper.d.ts +0 -0
- package/dist-es/aws/aws_s3_helper.js +243 -0
- package/dist-es/aws/aws_s3_helper.js.map +1 -0
- package/dist-es/aws/data_models.js +2 -0
- package/dist-es/aws/data_models.js.map +1 -0
- package/dist-es/aws/index.d.ts +1 -0
- package/dist-es/aws/index.js +3 -0
- package/dist-es/aws/index.js.map +1 -0
- package/dist-es/commander/index.d.ts +33 -0
- package/dist-es/commander/index.js +262 -0
- package/dist-es/commander/index.js.map +1 -0
- package/dist-es/constants/index.js +86 -0
- package/dist-es/constants/index.js.map +1 -0
- package/dist-es/contents/index.d.ts +0 -0
- package/dist-es/contents/index.js +33 -0
- package/dist-es/contents/index.js.map +1 -0
- package/{dist-cjs/types → dist-es}/files/index.d.ts +1 -1
- package/dist-es/files/index.js +26 -0
- package/dist-es/files/index.js.map +1 -0
- package/dist-es/{types/graphql → graphql}/index.d.ts +3 -3
- package/dist-es/graphql/index.js +357 -0
- package/dist-es/graphql/index.js.map +1 -0
- package/dist-es/{types/headers → headers}/index.d.ts +1 -1
- package/dist-es/headers/index.js +91 -0
- package/dist-es/headers/index.js.map +1 -0
- package/dist-es/images/index.js +12 -0
- package/dist-es/images/index.js.map +1 -0
- package/dist-es/index.d.ts +12 -0
- package/dist-es/index.js +15 -39
- package/dist-es/index.js.map +1 -1
- package/dist-es/json/index.js +144 -0
- package/dist-es/json/index.js.map +1 -0
- package/dist-es/package.json +3 -0
- package/dist-es/{types/page_context → page_context}/index.d.ts +0 -1
- package/dist-es/page_context/index.js +529 -0
- package/dist-es/page_context/index.js.map +1 -0
- package/dist-es/redirect/index.js +16 -0
- package/dist-es/redirect/index.js.map +1 -0
- package/dist-es/renderer/index.d.ts +0 -0
- package/dist-es/renderer/index.js +78 -0
- package/dist-es/renderer/index.js.map +1 -0
- package/dist-es/resolvers/index.js +34 -0
- package/dist-es/resolvers/index.js.map +1 -0
- package/dist-es/transform/index.js +39 -0
- package/dist-es/transform/index.js.map +1 -0
- package/dist-es/types/index.d.ts +39 -11
- package/dist-es/types/index.js +2 -0
- package/dist-es/types/index.js.map +1 -0
- package/dist-es/validate/index.js +48 -0
- package/dist-es/validate/index.js.map +1 -0
- package/dist-types/auth/index.d.ts +2 -0
- package/dist-types/aws/aws_lambda_helper.d.ts +5 -0
- package/dist-types/aws/aws_s3_helper.d.ts +0 -0
- package/dist-types/aws/data_models.d.ts +21 -0
- package/dist-types/aws/index.d.ts +1 -0
- package/dist-types/commander/index.d.ts +33 -0
- package/dist-types/constants/index.d.ts +6 -0
- package/dist-types/contents/index.d.ts +0 -0
- package/dist-types/files/index.d.ts +2 -0
- package/dist-types/graphql/index.d.ts +38 -0
- package/dist-types/headers/index.d.ts +12 -0
- package/dist-types/images/index.d.ts +4 -0
- package/dist-types/index.d.ts +12 -0
- package/dist-types/json/index.d.ts +7 -0
- package/dist-types/page_context/index.d.ts +247 -0
- package/dist-types/redirect/index.d.ts +2 -0
- package/dist-types/renderer/index.d.ts +0 -0
- package/dist-types/resolvers/index.d.ts +11 -0
- package/dist-types/transform/index.d.ts +2 -0
- package/{dist-cjs/types → dist-types}/types/index.d.ts +5 -5
- package/dist-types/validate/index.d.ts +5 -0
- package/package.json +12 -17
- package/dist-cjs/types/commander/index.d.ts +0 -33
- package/dist-es/types/commander/index.d.ts +0 -33
- package/dist-es/types/types/index.d.ts +0 -39
- /package/dist-cjs/{types/auth → auth}/index.d.ts +0 -0
- /package/dist-cjs/{types/aws → aws}/data_models.d.ts +0 -0
- /package/dist-cjs/{types/constants → constants}/index.d.ts +0 -0
- /package/dist-cjs/{types/images → images}/index.d.ts +0 -0
- /package/dist-cjs/{types/json → json}/index.d.ts +0 -0
- /package/dist-cjs/{types/redirect → redirect}/index.d.ts +0 -0
- /package/dist-cjs/{types/resolvers → resolvers}/index.d.ts +0 -0
- /package/dist-cjs/{types/transform → transform}/index.d.ts +0 -0
- /package/dist-cjs/{types/validate → validate}/index.d.ts +0 -0
- /package/dist-es/{types/auth → auth}/index.d.ts +0 -0
- /package/dist-es/{types/aws → aws}/data_models.d.ts +0 -0
- /package/dist-es/{types/constants → constants}/index.d.ts +0 -0
- /package/dist-es/{types/images → images}/index.d.ts +0 -0
- /package/dist-es/{types/json → json}/index.d.ts +0 -0
- /package/dist-es/{types/redirect → redirect}/index.d.ts +0 -0
- /package/dist-es/{types/resolvers → resolvers}/index.d.ts +0 -0
- /package/dist-es/{types/transform → transform}/index.d.ts +0 -0
- /package/dist-es/{types/validate → validate}/index.d.ts +0 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//import { ListObjectOutput } from './data_models'
|
|
3
|
+
//import { SignedUrl } from './data_models'
|
|
4
|
+
//import AWS from 'aws-sdk'
|
|
5
|
+
//import PaginationHelper from './pagination_helper'
|
|
6
|
+
//const s3Credentials: AWS.Credentials = new AWS.Credentials( { accessKeyId: process.env.AWS_S3_ACCESS_KEY || '', secretAccessKey: process.env.AWS_S3_SECRET_KEY || '' } ),
|
|
7
|
+
// awsS3: AWS.S3 = new AWS.S3( { credentials: s3Credentials } )
|
|
8
|
+
//const AwsS3Helper = {
|
|
9
|
+
//copyMyReport: async ( args: any ): Promise<any> => {
|
|
10
|
+
// const { data: { from, to } }: { data: { from: string, to: string } } = args
|
|
11
|
+
// // set the params
|
|
12
|
+
// const prefixFrom = `fixefy-reports${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}/${ctx.workspace?.readable_id}/${ctx.user?.username}/${from}`,
|
|
13
|
+
// prefixTo = `${ctx.workspace?.readable_id}/${ctx.user?.username}/${to}`,
|
|
14
|
+
// params: any = { Bucket: `fixefy-reports${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}`, CopySource: prefixFrom, Key: prefixTo }
|
|
15
|
+
// const rv: any = await awsS3.copyObject( params ).promise()
|
|
16
|
+
// // notify
|
|
17
|
+
// NotifyHelper.notify( parent, { data: { payload: rv } }, ctx, info, rest )
|
|
18
|
+
// return rv
|
|
19
|
+
//},
|
|
20
|
+
//createBucket: async ( args: any ): Promise<AWS.S3.Types.CreateBucketOutput> => {
|
|
21
|
+
// const { data: { name } }: { data: { name: string } } = args,
|
|
22
|
+
// params: AWS.S3.Types.CreateBucketRequest = { Bucket: name }
|
|
23
|
+
// // create bucket
|
|
24
|
+
// const rv = await awsS3.createBucket( params ).promise()
|
|
25
|
+
// // notify
|
|
26
|
+
// NotifyHelper.notify( parent, { data: { payload: rv } }, ctx, info, rest )
|
|
27
|
+
// return rv
|
|
28
|
+
//},
|
|
29
|
+
//deleteBucket: async ( args: any ): Promise<any> => {
|
|
30
|
+
// const { data: { name } }: { data: { name: string } } = args,
|
|
31
|
+
// params: AWS.S3.Types.DeleteBucketRequest = { Bucket: name }
|
|
32
|
+
// const rv: any = await awsS3.deleteBucket( params ).promise()
|
|
33
|
+
// // notify
|
|
34
|
+
// NotifyHelper.notify( parent, { data: { payload: rv } }, ctx, info, rest )
|
|
35
|
+
// return rv
|
|
36
|
+
//},
|
|
37
|
+
//deleteMyReport: async ( args: any ): Promise<any> => {
|
|
38
|
+
// const { data: { is_notify: isNotify = true, name } }: { data: { is_notify: boolean, name: string } } = args
|
|
39
|
+
// // set the prefix
|
|
40
|
+
// const prefix = `${ctx.workspace?.readable_id}/${ctx.user?.username}/${name}`
|
|
41
|
+
// // set the params
|
|
42
|
+
// const params: AWS.S3.Types.DeleteObjectRequest = { Bucket: `fixefy-reports${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}`, Key: prefix }
|
|
43
|
+
// // delete object
|
|
44
|
+
// const rv: any = await awsS3.deleteObject( params ).promise()
|
|
45
|
+
// // input check - if is_notify
|
|
46
|
+
// if ( isNotify ) {
|
|
47
|
+
// // notify
|
|
48
|
+
// NotifyHelper.notify( parent, { data: { payload: rv } }, ctx, info, rest )
|
|
49
|
+
// }
|
|
50
|
+
// return rv
|
|
51
|
+
//},
|
|
52
|
+
//deleteMyReports: async ( args: any ): Promise<any> => {
|
|
53
|
+
// const { data: { names } }: { data: { names: Array<string> } } = args
|
|
54
|
+
// // set the prefix
|
|
55
|
+
// const prefix = `${ctx.workspace?.readable_id}/${ctx.user?.username}`
|
|
56
|
+
// const promises: Array<Promise<any>> = []
|
|
57
|
+
// let currentPromise: Promise<any>
|
|
58
|
+
// for ( const name of names ) {
|
|
59
|
+
// currentPromise = AwsS3Helper.deleteMyReport( parent, { data: { is_notify: false, name } }, ctx, info, rest )
|
|
60
|
+
// promises.push( currentPromise )
|
|
61
|
+
// }
|
|
62
|
+
// const resultArray: Array<any> = await Promise.all( promises ),
|
|
63
|
+
// rv: any = {}
|
|
64
|
+
// // set the params
|
|
65
|
+
// const params: AWS.S3.Types.DeleteObjectRequest = { Bucket: `fixefy-reports${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}`, Key: prefix }
|
|
66
|
+
// for ( let i = 0; i < resultArray.length; ++i ) {
|
|
67
|
+
// rv[ names[ i ] ] = resultArray[ i ]
|
|
68
|
+
// }
|
|
69
|
+
// // notify
|
|
70
|
+
// NotifyHelper.notify( parent, { data: { payload: rv } }, ctx, info, rest )
|
|
71
|
+
// return rv
|
|
72
|
+
//},
|
|
73
|
+
// deleteBucket: async (parent: any, args: any, ctx: Context, info: any, rest: any): Promise<DeleteBucketCommandOutput> => {
|
|
74
|
+
// const { data: { name } } = args
|
|
75
|
+
// // create the delete command
|
|
76
|
+
// const command: DeleteBucketCommand = new DeleteBucketCommand({ Bucket: name })
|
|
77
|
+
// // delete bucket
|
|
78
|
+
// const rv: DeleteBucketCommandOutput = await s3.deleteBucket((command)
|
|
79
|
+
// return rv
|
|
80
|
+
// },
|
|
81
|
+
// deleteFile: async (parent: any, args: any, ctx: Context, info: any, rest: any): Promise<DeleteObjectCommandOutput> => {
|
|
82
|
+
// const { data: { bucket_name, name } } = args
|
|
83
|
+
// // create the delete command
|
|
84
|
+
// const command: DeleteObjectCommand = new DeleteObjectCommand({ Bucket: bucket_name, Key: name })
|
|
85
|
+
// // delete bucket
|
|
86
|
+
// const rv: DeleteObjectCommandOutput = await s3Client.send(command)
|
|
87
|
+
// return rv
|
|
88
|
+
// },
|
|
89
|
+
// downloadObject: async ( args: any ): Promise<AWS.S3.Types.GetObjectOutput> => {
|
|
90
|
+
// const { data: { bucket_name, name } } = args,
|
|
91
|
+
// params: AWS.S3.Types.GetObjectRequest = { Bucket: bucket_name, Key: name }
|
|
92
|
+
// const rv: AWS.S3.Types.GetObjectOutput = await s3.getObject( params ).promise()
|
|
93
|
+
// return rv
|
|
94
|
+
// },
|
|
95
|
+
//getBucketEnvSuffix: (args: any): string => {
|
|
96
|
+
// const{ env } = args
|
|
97
|
+
// let rv: string
|
|
98
|
+
// switch ( env ) {
|
|
99
|
+
// case 'local':
|
|
100
|
+
// rv = '-dev'
|
|
101
|
+
// break
|
|
102
|
+
// case 'prod':
|
|
103
|
+
// rv = ''
|
|
104
|
+
// break
|
|
105
|
+
// default:
|
|
106
|
+
// rv = `-${env}`
|
|
107
|
+
// break
|
|
108
|
+
// }
|
|
109
|
+
// return rv
|
|
110
|
+
//},
|
|
111
|
+
//getFuegoUploadUrl: ( args: any ): SignedUrl => {
|
|
112
|
+
// const { username, workspace, where: { expires_in, name } } = args
|
|
113
|
+
// if( name == null || name.length == 0 ) throw new Error( 'name is an empty string' )
|
|
114
|
+
// const currentPrefix = `${workspace}/${username}/${name}`,
|
|
115
|
+
// currentParams: unknown = { Bucket: `fixefy-fuegos${AwsS3Helper.getBucketEnvSuffix( args )}`, Key: currentPrefix, Expires: expires_in || 3600 },
|
|
116
|
+
// url: string = awsS3.getSignedUrl( 'putObject', currentParams ),
|
|
117
|
+
// rv: SignedUrl = { name, url }
|
|
118
|
+
// return rv
|
|
119
|
+
//},
|
|
120
|
+
//getReportDownloadUrl: ( args: any ): string => {
|
|
121
|
+
// const { where: { expires_in, name } }: { where: { expires_in: string, name: string } } = args,
|
|
122
|
+
// prefix = `${ctx.workspace?.readable_id}/${ctx.user?.username}/${name}`,
|
|
123
|
+
// params: any = { Bucket: `fixefy-reports${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}`, Key: prefix, Expires: expires_in || 3600 }
|
|
124
|
+
// // get the signed url
|
|
125
|
+
// const rv: string = awsS3.getSignedUrl( 'getObject', params )
|
|
126
|
+
// return rv
|
|
127
|
+
//},
|
|
128
|
+
//getMyReports: async ( args: any ): Promise<Array<ListObjectOutput>> => {
|
|
129
|
+
// // set limits
|
|
130
|
+
// PaginationHelper.limitPagination( parent, args, ctx, info, rest )
|
|
131
|
+
// const prefix = `${ctx.workspace?.readable_id}/${ctx.user?.username}/`,
|
|
132
|
+
// params: AWS.S3.ListObjectsV2Request = { Bucket: `fixefy-reports${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}`, Prefix: prefix },
|
|
133
|
+
// result: AWS.S3.ListObjectsV2Output = await awsS3.listObjectsV2( params ).promise(),
|
|
134
|
+
// rv: Array<ListObjectOutput> = []
|
|
135
|
+
// let headParams: AWS.S3.Types.HeadObjectRequest,
|
|
136
|
+
// headResult: AWS.S3.Types.HeadObjectOutput,
|
|
137
|
+
// currentObject: ListObjectOutput,
|
|
138
|
+
// currentFileName: Maybe<string>,
|
|
139
|
+
// currentUrl: Maybe<string>
|
|
140
|
+
// for ( const content of result?.Contents || [] ) {
|
|
141
|
+
// // input check - if key is invalid - continue loop
|
|
142
|
+
// if ( ValidateHelper.isStringValid( content?.Key ) == false )
|
|
143
|
+
// continue
|
|
144
|
+
// currentFileName = content?.Key?.split( '/' ).pop()
|
|
145
|
+
// // input check - if file_name is invalid - continue loop
|
|
146
|
+
// if ( ValidateHelper.isStringValid( currentFileName ) == false )
|
|
147
|
+
// continue
|
|
148
|
+
// currentUrl = AwsS3Helper.getReportDownloadUrl( parent, { where: { name: currentFileName } }, ctx, info, rest )
|
|
149
|
+
// currentObject = { name: currentFileName, size: content.Size, updated_at: content.LastModified?.getTime(), url: currentUrl }
|
|
150
|
+
// headParams = { Bucket: `fixefy-reports${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}`, Key: content.Key as string }
|
|
151
|
+
// headResult = await awsS3.headObject( headParams ).promise()
|
|
152
|
+
// // input check - if headResult.Metadata is valid
|
|
153
|
+
// if ( ValidateHelper.isObjectValid( headResult?.Metadata ) ) {
|
|
154
|
+
// currentObject.description = headResult?.Metadata?.description
|
|
155
|
+
// currentObject.report = headResult?.Metadata?.report
|
|
156
|
+
// currentObject.title = headResult?.Metadata?.title
|
|
157
|
+
// currentObject.updated_by = headResult?.Metadata?.updated_by
|
|
158
|
+
// }
|
|
159
|
+
// rv.push( currentObject )
|
|
160
|
+
// }
|
|
161
|
+
// return rv
|
|
162
|
+
//},
|
|
163
|
+
//listObjectsV2: async ( args: any ): Promise<AWS.S3.ListObjectsV2Output> => {
|
|
164
|
+
// // set first/last limits
|
|
165
|
+
// PaginationHelper.limitPagination( parent, args, ctx, info, rest )
|
|
166
|
+
// const { where: { bucket_name }, first, skip } = args
|
|
167
|
+
// const params: AWS.S3.ListObjectsV2Request = { Bucket: `${bucket_name}${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}`, MaxKeys: first, StartAfter: `${skip}` }
|
|
168
|
+
// const rv: AWS.S3.ListObjectsV2Output = await awsS3.listObjectsV2( params ).promise()
|
|
169
|
+
// return rv
|
|
170
|
+
//},
|
|
171
|
+
//moveMyReport: async ( args: any ): Promise<never> => {
|
|
172
|
+
// throw new ApolloError( 'not yet implemented' )
|
|
173
|
+
//},
|
|
174
|
+
//renameMyReport: async ( args: any ): Promise<any> => {
|
|
175
|
+
// const { data: { from } }: { data: { from: string } } = args
|
|
176
|
+
// const copyResult: any = await AwsS3Helper.copyMyReport( parent, args, ctx, info, rest ),
|
|
177
|
+
// rv: any = await AwsS3Helper.deleteMyReport( parent, { data: { name: from } }, ctx, info, rest )
|
|
178
|
+
// // notify
|
|
179
|
+
// NotifyHelper.notify( parent, { data: { payload: rv } }, ctx, info, rest )
|
|
180
|
+
// return rv
|
|
181
|
+
//},
|
|
182
|
+
// toListObject: ( args: any ): ListObject => {
|
|
183
|
+
// const result: AWS.S3.ListObjectsV2Output = args.data.result,
|
|
184
|
+
// rv: ListObject = {
|
|
185
|
+
// common_prefixes: AwsHelper.toListObjectCommonPrefixArray( parent, { data: { prefixes: result.CommonPrefixes } }, ctx, info, rest ),
|
|
186
|
+
// contents: AwsHelper.toListObjectContentArray( parent, { data: { contents: result.Contents } }, ctx, info, rest ),
|
|
187
|
+
// is_truncated: result.IsTruncated,
|
|
188
|
+
// key_count: result.KeyCount,
|
|
189
|
+
// max_keys: result.MaxKeys,
|
|
190
|
+
// name: result.Name,
|
|
191
|
+
// prefix: result.Prefix,
|
|
192
|
+
// start_after: result.StartAfter,
|
|
193
|
+
// }
|
|
194
|
+
// return rv
|
|
195
|
+
// },
|
|
196
|
+
// toListObjectCommonPrefixArray: ( args: any ): Array<ListObjectCommonPrefix> => {
|
|
197
|
+
// const prefixes: Array<AWS.S3.Types.CommonPrefix> = args.data.prefixes,
|
|
198
|
+
// rv: Array<ListObjectCommonPrefix> = prefixes.map( p => { return { prefix: p.Prefix } } )
|
|
199
|
+
// return rv
|
|
200
|
+
// },
|
|
201
|
+
// toListObjectContentArray: ( args: any ): Array<ListObjectContent> => {
|
|
202
|
+
// const contents: Array<AWS.S3.Types.Object> = args.data.contents,
|
|
203
|
+
// rv: Array<ListObjectContent> = contents.map( c => {
|
|
204
|
+
// return {
|
|
205
|
+
// e_tag: c.ETag,
|
|
206
|
+
// name: c.Key,
|
|
207
|
+
// last_modified: c.LastModified != null ? new Date( c.LastModified ).getTime() : undefined,
|
|
208
|
+
// size: c.Size,
|
|
209
|
+
// storage_class: c.StorageClass,
|
|
210
|
+
// } } )
|
|
211
|
+
// return rv
|
|
212
|
+
// },
|
|
213
|
+
//uploadObject: async ( args: any ): Promise<AWS.S3.ManagedUpload.SendData> => {
|
|
214
|
+
// const { data: { bucket_name, content, description = '', file_name: fileName, name, title = '' } }: { data: { bucket_name: string, content: string, description: string, file_name: string, name: string, title: string } } = args
|
|
215
|
+
// const params: AWS.S3.Types.PutObjectRequest = {
|
|
216
|
+
// Bucket: `${bucket_name}${AwsS3Helper.getBucketEnvSuffix( parent, args, ctx, info, rest )}`,
|
|
217
|
+
// Key: fileName,
|
|
218
|
+
// Body: content,
|
|
219
|
+
// Metadata: {
|
|
220
|
+
// description,
|
|
221
|
+
// name,
|
|
222
|
+
// //report: report?.readable_id,
|
|
223
|
+
// title,
|
|
224
|
+
// updated_by: ctx.user.username
|
|
225
|
+
// }
|
|
226
|
+
// }
|
|
227
|
+
// const rv: AWS.S3.ManagedUpload.SendData = await awsS3.upload( params ).promise()
|
|
228
|
+
// // notify
|
|
229
|
+
// NotifyHelper.notify( parent, { data: { payload: rv } }, ctx, info, rest )
|
|
230
|
+
// return rv
|
|
231
|
+
//},
|
|
232
|
+
// validateCreateFolder: async (parent: any, args: any, ctx: Context, info: any, rest: any): Promise<any> => {
|
|
233
|
+
// let { data: { bucket_name, name } } = args
|
|
234
|
+
// if (name == null) throw new ApolloError('name cannot be null')
|
|
235
|
+
// name = name.trim()
|
|
236
|
+
// if (ValidateHelper.isStringValid(name) == false) throw new ApolloError('name must contain at least one non-space character')
|
|
237
|
+
// if (name.includes('/')) throw new ApolloError('name cannot contain slashes')
|
|
238
|
+
// // const headRes = await s3.headObject({ Bucket: bucket_name, Key: name }, () => { })).promise()
|
|
239
|
+
// // if(headRes. )
|
|
240
|
+
// },
|
|
241
|
+
//}
|
|
242
|
+
//export { AwsS3Helper }
|
|
243
|
+
//# sourceMappingURL=aws_s3_helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws_s3_helper.js","sourceRoot":"","sources":["../../src/aws/aws_s3_helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data_models.js","sourceRoot":"","sources":["../../src/aws/data_models.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './aws_lambda_helper';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,iCAAiC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Maybe } from '@fixefy/fixefy-entities';
|
|
2
|
+
export declare const buildCode: (obj: any, level: number | undefined, name: string) => string[];
|
|
3
|
+
export declare const copyToClipboard: (str: string) => void;
|
|
4
|
+
export declare const convertToString: (input: any) => Maybe<string>;
|
|
5
|
+
export declare const determineIconByEvent: (event: {
|
|
6
|
+
type: string;
|
|
7
|
+
}) => string | undefined;
|
|
8
|
+
export declare const formatNumberWithCommas: (number: number) => string;
|
|
9
|
+
export declare const getNormalizationKeyForEntity: (entity_type: string) => string;
|
|
10
|
+
export declare const getStringValueByValueType: ({ value, name }: {
|
|
11
|
+
value: any;
|
|
12
|
+
name: string;
|
|
13
|
+
}) => any;
|
|
14
|
+
export declare const getVal: (val: any) => any;
|
|
15
|
+
export declare const isInServer: () => boolean;
|
|
16
|
+
export declare const isValidTimestamp: (_timestamp: any) => boolean;
|
|
17
|
+
export declare const lineString: (level: any, name?: string) => string;
|
|
18
|
+
export declare const makeString: (len?: number) => string;
|
|
19
|
+
export declare const nest: ({ items }: {
|
|
20
|
+
items: Array<any>;
|
|
21
|
+
}) => any[];
|
|
22
|
+
export declare const normalizeTimestamp: (timestamp: any, options: any) => string;
|
|
23
|
+
export declare const normalizeStringBodyRaw: (key: string, body: any) => any;
|
|
24
|
+
export declare const titleCase: (str?: string) => string;
|
|
25
|
+
export declare const toCamelCase: (inputArray: Maybe<Array<any>>) => string;
|
|
26
|
+
export declare const toCamelCaseString: (input: string) => string;
|
|
27
|
+
export declare const toCurrency: (input: string | number) => string | number;
|
|
28
|
+
export declare const toInitials: (str: string) => string | undefined;
|
|
29
|
+
export declare const toPascalCase: (string: string, title?: boolean) => string;
|
|
30
|
+
export declare const toWords: (input: Maybe<string>) => RegExpMatchArray | null | undefined;
|
|
31
|
+
export declare const trimRuleCode: (input: any) => string;
|
|
32
|
+
export declare const useStatePromisify: (_state: any) => any[];
|
|
33
|
+
export declare const getScoreColor: (value: number) => "bad" | "low" | "medium" | "high" | "excellent";
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { EntityTypes } from '../';
|
|
2
|
+
import { format } from 'date-fns';
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import NumericHelper from '@fixefy/fixefy-numeric';
|
|
5
|
+
export const buildCode = (obj, level = 0, name) => {
|
|
6
|
+
const toRender = [];
|
|
7
|
+
const keys = Object.keys(obj);
|
|
8
|
+
if (keys.length < 1) {
|
|
9
|
+
toRender.push(lineString(level, name) + '{}');
|
|
10
|
+
return toRender;
|
|
11
|
+
}
|
|
12
|
+
toRender.push(lineString(level, name) + '{');
|
|
13
|
+
keys.forEach((key) => {
|
|
14
|
+
if (key === '__typename')
|
|
15
|
+
return;
|
|
16
|
+
if (typeof obj[key] === 'object' && obj[key] !== null) {
|
|
17
|
+
toRender.push(...buildCode(obj[key], level + 1, key));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const val = getVal(obj[key]);
|
|
21
|
+
toRender.push(lineString(level + 1, key) + val);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
toRender.push(lineString(level) + '}');
|
|
25
|
+
return toRender;
|
|
26
|
+
};
|
|
27
|
+
export const copyToClipboard = (str) => {
|
|
28
|
+
if (window == undefined)
|
|
29
|
+
return;
|
|
30
|
+
const el = document.createElement('textarea');
|
|
31
|
+
el.value = str;
|
|
32
|
+
el.setAttribute('readonly', '');
|
|
33
|
+
el.style.position = 'absolute';
|
|
34
|
+
el.style.left = '-9999px';
|
|
35
|
+
document.body.appendChild(el);
|
|
36
|
+
el.select();
|
|
37
|
+
document.execCommand('copy');
|
|
38
|
+
document.body.removeChild(el);
|
|
39
|
+
};
|
|
40
|
+
export const convertToString = (input) => {
|
|
41
|
+
if (input) {
|
|
42
|
+
return typeof input === 'string' ? input : String(input);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export const determineIconByEvent = (event) => {
|
|
49
|
+
let rv;
|
|
50
|
+
if (event) {
|
|
51
|
+
switch (event.type) {
|
|
52
|
+
case 'charged':
|
|
53
|
+
rv = '../../static/images/transactions/billing.svg';
|
|
54
|
+
break;
|
|
55
|
+
case 'packed':
|
|
56
|
+
rv = '../../static/images/transactions/system.svg';
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
rv = '../../static/images/transactions/user.svg';
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return rv;
|
|
64
|
+
};
|
|
65
|
+
export const formatNumberWithCommas = (number) => {
|
|
66
|
+
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
67
|
+
};
|
|
68
|
+
export const getNormalizationKeyForEntity = (entity_type) => {
|
|
69
|
+
let rv;
|
|
70
|
+
switch (entity_type.toLowerCase()) {
|
|
71
|
+
case EntityTypes.User:
|
|
72
|
+
rv = 'username';
|
|
73
|
+
break;
|
|
74
|
+
case EntityTypes.Pricing:
|
|
75
|
+
rv = 'value';
|
|
76
|
+
break;
|
|
77
|
+
case EntityTypes.Metadata:
|
|
78
|
+
rv = 'title';
|
|
79
|
+
break;
|
|
80
|
+
case EntityTypes.Transaction:
|
|
81
|
+
case EntityTypes.Transmission:
|
|
82
|
+
rv = 'readable_id';
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
rv = 'title';
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
return rv;
|
|
89
|
+
};
|
|
90
|
+
export const getStringValueByValueType = ({ value, name }) => {
|
|
91
|
+
let rv;
|
|
92
|
+
let entity_type;
|
|
93
|
+
let roundedValue;
|
|
94
|
+
let formattedValue;
|
|
95
|
+
switch (typeof value) {
|
|
96
|
+
case 'boolean':
|
|
97
|
+
rv = value === true ? 'YES' : 'NO';
|
|
98
|
+
break;
|
|
99
|
+
case 'number':
|
|
100
|
+
if (isValidTimestamp(value)) {
|
|
101
|
+
rv = normalizeTimestamp(value, false);
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
roundedValue = Number(value) === value && value % 1 === 0 ? value : value.toFixed(2);
|
|
105
|
+
formattedValue = name === 'variance' ? `${(roundedValue * 100).toFixed(1)}%` : roundedValue;
|
|
106
|
+
rv = formattedValue;
|
|
107
|
+
break;
|
|
108
|
+
case 'object':
|
|
109
|
+
if (Array.isArray(value)) {
|
|
110
|
+
rv = value.join(', ');
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
entity_type = value && value.__typename && value.__typename.toLowerCase();
|
|
114
|
+
rv = titleCase(value[getNormalizationKeyForEntity(entity_type)]);
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
case 'string':
|
|
118
|
+
rv = titleCase(value);
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
return rv;
|
|
122
|
+
};
|
|
123
|
+
export const getVal = (val) => {
|
|
124
|
+
if (typeof val === 'number')
|
|
125
|
+
return val;
|
|
126
|
+
if (typeof val === 'string')
|
|
127
|
+
return `"${val}"`;
|
|
128
|
+
return val;
|
|
129
|
+
};
|
|
130
|
+
// export const isNumeric = (n) => {
|
|
131
|
+
// return !isNaN(parseFloat(n)) && isFinite(n);
|
|
132
|
+
// };
|
|
133
|
+
// determine if the current state is in the next server or not
|
|
134
|
+
export const isInServer = () => typeof window === 'undefined';
|
|
135
|
+
// export const isValidDate = (d) => {
|
|
136
|
+
// return d instanceof Date && !isNaN(Number(d));
|
|
137
|
+
// };
|
|
138
|
+
export const isValidTimestamp = (_timestamp) => {
|
|
139
|
+
const parsedNumber = typeof _timestamp == 'string' ? parseInt(_timestamp) : _timestamp;
|
|
140
|
+
const newTimestamp = new Date(parsedNumber).getTime();
|
|
141
|
+
const rv = NumericHelper.isFloat(newTimestamp) && newTimestamp.toString().length >= 10;
|
|
142
|
+
return rv;
|
|
143
|
+
};
|
|
144
|
+
export const lineString = (level, name) => {
|
|
145
|
+
let str = '';
|
|
146
|
+
for (let i = 0; i < level; i++) {
|
|
147
|
+
str += ' ';
|
|
148
|
+
}
|
|
149
|
+
if (name) {
|
|
150
|
+
str += name + ': ';
|
|
151
|
+
}
|
|
152
|
+
return str;
|
|
153
|
+
};
|
|
154
|
+
export const makeString = (len = 5) => {
|
|
155
|
+
let text = '';
|
|
156
|
+
const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
157
|
+
for (let i = 0; i < len; i++)
|
|
158
|
+
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
|
159
|
+
return text;
|
|
160
|
+
};
|
|
161
|
+
// takes flat array of objects (with parent and child structure) and makes it a nested hierarchical tree array
|
|
162
|
+
export const nest = ({ items }) => {
|
|
163
|
+
const mappedArray = Object.create(null);
|
|
164
|
+
items.forEach((item) => (mappedArray[item.id] = { ...item, children: [] }));
|
|
165
|
+
const nestedArray = [];
|
|
166
|
+
items.forEach((item) => {
|
|
167
|
+
if (item) {
|
|
168
|
+
if (item.parent)
|
|
169
|
+
mappedArray[item.parent] && mappedArray[item.parent].children.push(mappedArray[item.id]);
|
|
170
|
+
else
|
|
171
|
+
nestedArray.push(mappedArray[item.id]);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
return nestedArray;
|
|
175
|
+
};
|
|
176
|
+
// timestamp
|
|
177
|
+
export const normalizeTimestamp = (timestamp, options) => {
|
|
178
|
+
const { dateOnly, format: _format } = options || {};
|
|
179
|
+
const _timestamp = typeof timestamp == 'string' ? parseInt(timestamp) : timestamp;
|
|
180
|
+
const rv = format(new Date(_timestamp), _format ? _format : dateOnly ? 'dd/MM/yyyy' : 'dd/MM/yyyy hh:mm');
|
|
181
|
+
return rv;
|
|
182
|
+
};
|
|
183
|
+
export const normalizeStringBodyRaw = (key, body) => {
|
|
184
|
+
return typeof body[key] === 'string' && (key === 'body' || key === 'raw') ? JSON.parse(body[key]) : body[key];
|
|
185
|
+
};
|
|
186
|
+
export const titleCase = (str = '') => {
|
|
187
|
+
return str && toPascalCase(str.toString(), true);
|
|
188
|
+
};
|
|
189
|
+
export const toCamelCase = (inputArray) => {
|
|
190
|
+
let result = '';
|
|
191
|
+
for (let i = 0, len = inputArray?.length ?? 0; i < len; i++) {
|
|
192
|
+
const currentStr = inputArray?.at(i);
|
|
193
|
+
let tempStr = currentStr.toLowerCase();
|
|
194
|
+
if (i != 0) {
|
|
195
|
+
// convert first letter to upper case (the word is in lowercase)
|
|
196
|
+
tempStr = tempStr.substr(0, 1).toUpperCase() + tempStr.substr(1);
|
|
197
|
+
}
|
|
198
|
+
result += tempStr;
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
201
|
+
};
|
|
202
|
+
export const toCamelCaseString = (input) => {
|
|
203
|
+
const words = toWords(input);
|
|
204
|
+
return toCamelCase(words);
|
|
205
|
+
};
|
|
206
|
+
export const toCurrency = (input) => {
|
|
207
|
+
return input ? input.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') : input;
|
|
208
|
+
};
|
|
209
|
+
export const toInitials = (str) => {
|
|
210
|
+
if (str === '')
|
|
211
|
+
return str;
|
|
212
|
+
const matches = str.match(/\b(\w)/g);
|
|
213
|
+
return matches?.join('').toUpperCase();
|
|
214
|
+
};
|
|
215
|
+
export const toPascalCase = (string, title = false) => {
|
|
216
|
+
return (string && string.replace(/(_[a-z])?(^[a-z])?(_|\s[a-z])?/g, ($1) => $1.toUpperCase().replace('_', title ? ' ' : '')));
|
|
217
|
+
};
|
|
218
|
+
export const toWords = (input) => {
|
|
219
|
+
input = convertToString(input);
|
|
220
|
+
const regex = /[A-Z\xC0-\xD6\xD8-\xDE]?[a-z\xDF-\xF6\xF8-\xFF]+|[A-Z\xC0-\xD6\xD8-\xDE]+(?![a-z\xDF-\xF6\xF8-\xFF])|\d+/g;
|
|
221
|
+
return input?.match(regex);
|
|
222
|
+
};
|
|
223
|
+
export const trimRuleCode = (input) => {
|
|
224
|
+
const stringefied = typeof input == 'string' ? input : JSON.stringify(input);
|
|
225
|
+
const match = stringefied.substring(stringefied.indexOf('{') + 1, stringefied.lastIndexOf('}'));
|
|
226
|
+
return match ? match : '';
|
|
227
|
+
};
|
|
228
|
+
export const useStatePromisify = (_state) => {
|
|
229
|
+
const [state, setState] = useState(_state);
|
|
230
|
+
const resolverRef = useRef(null);
|
|
231
|
+
useEffect(() => {
|
|
232
|
+
if (resolverRef.current) {
|
|
233
|
+
resolverRef.current(state);
|
|
234
|
+
resolverRef.current = null;
|
|
235
|
+
}
|
|
236
|
+
}, [resolverRef, state]);
|
|
237
|
+
const handleSetState = useCallback((stateAction) => {
|
|
238
|
+
setState(stateAction);
|
|
239
|
+
return new Promise((resolve) => {
|
|
240
|
+
resolverRef.current = resolve;
|
|
241
|
+
});
|
|
242
|
+
}, [setState]);
|
|
243
|
+
return [state, handleSetState];
|
|
244
|
+
};
|
|
245
|
+
export const getScoreColor = (value) => {
|
|
246
|
+
if (value <= 20) {
|
|
247
|
+
return 'bad';
|
|
248
|
+
}
|
|
249
|
+
else if (value <= 40) {
|
|
250
|
+
return 'low';
|
|
251
|
+
}
|
|
252
|
+
else if (value <= 60) {
|
|
253
|
+
return 'medium';
|
|
254
|
+
}
|
|
255
|
+
else if (value <= 80) {
|
|
256
|
+
return 'high';
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
return 'excellent';
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commander/index.tsx"],"names":[],"mappings":"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"}
|