@contember/client 2.0.0-alpha.3 → 2.0.0-alpha.31
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/api-extractor.json +3 -0
- package/dist/development/index.cjs +11 -38
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +3 -33
- package/dist/development/index.js.map +1 -1
- package/dist/development/{content/upload → src}/GenerateUploadUrlMutationBuilder.cjs +9 -14
- package/dist/development/src/GenerateUploadUrlMutationBuilder.cjs.map +1 -0
- package/dist/development/{content/upload → src}/GenerateUploadUrlMutationBuilder.js +8 -13
- package/dist/development/src/GenerateUploadUrlMutationBuilder.js.map +1 -0
- package/dist/production/index.cjs +11 -38
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +3 -33
- package/dist/production/index.js.map +1 -1
- package/dist/production/{content/upload → src}/GenerateUploadUrlMutationBuilder.cjs +9 -14
- package/dist/production/src/GenerateUploadUrlMutationBuilder.cjs.map +1 -0
- package/dist/production/{content/upload → src}/GenerateUploadUrlMutationBuilder.js +8 -13
- package/dist/production/src/GenerateUploadUrlMutationBuilder.js.map +1 -0
- package/dist/types/{content/upload/GenerateUploadUrlMutationBuilder.d.ts → GenerateUploadUrlMutationBuilder.d.ts} +1 -2
- package/dist/types/GenerateUploadUrlMutationBuilder.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -14
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -17
- package/src/{content/upload/GenerateUploadUrlMutationBuilder.ts → GenerateUploadUrlMutationBuilder.ts} +3 -7
- package/src/index.ts +2 -19
- package/src/tsconfig.json +7 -1
- package/tests/cases/unit/generateUploadUrlMutationBuilder.spec.ts +79 -0
- package/tests/tsconfig.json +10 -0
- package/tsconfig.json +8 -0
- package/tsdoc.json +6 -0
- package/vitest.config.ts +3 -0
- package/dist/development/content/formatContentApiRelativeUrl.cjs +0 -5
- package/dist/development/content/formatContentApiRelativeUrl.cjs.map +0 -1
- package/dist/development/content/formatContentApiRelativeUrl.js +0 -5
- package/dist/development/content/formatContentApiRelativeUrl.js.map +0 -1
- package/dist/development/content/params/whereToFilter.cjs +0 -17
- package/dist/development/content/params/whereToFilter.cjs.map +0 -1
- package/dist/development/content/params/whereToFilter.js +0 -17
- package/dist/development/content/params/whereToFilter.js.map +0 -1
- package/dist/development/content/replaceGraphQlLiteral.cjs +0 -15
- package/dist/development/content/replaceGraphQlLiteral.cjs.map +0 -1
- package/dist/development/content/replaceGraphQlLiteral.js +0 -15
- package/dist/development/content/replaceGraphQlLiteral.js.map +0 -1
- package/dist/development/content/upload/FileUploadError.cjs +0 -10
- package/dist/development/content/upload/FileUploadError.cjs.map +0 -1
- package/dist/development/content/upload/FileUploadError.js +0 -10
- package/dist/development/content/upload/FileUploadError.js.map +0 -1
- package/dist/development/content/upload/GenerateUploadUrlMutationBuilder.cjs.map +0 -1
- package/dist/development/content/upload/GenerateUploadUrlMutationBuilder.js.map +0 -1
- package/dist/development/content/upload/S3FileUploader.cjs +0 -107
- package/dist/development/content/upload/S3FileUploader.cjs.map +0 -1
- package/dist/development/content/upload/S3FileUploader.js +0 -107
- package/dist/development/content/upload/S3FileUploader.js.map +0 -1
- package/dist/development/graphQlBuilder/GraphQlLiteral.cjs +0 -15
- package/dist/development/graphQlBuilder/GraphQlLiteral.cjs.map +0 -1
- package/dist/development/graphQlBuilder/GraphQlLiteral.js +0 -15
- package/dist/development/graphQlBuilder/GraphQlLiteral.js.map +0 -1
- package/dist/development/graphQlClient/GraphQlClient.cjs +0 -26
- package/dist/development/graphQlClient/GraphQlClient.cjs.map +0 -1
- package/dist/development/graphQlClient/GraphQlClient.js +0 -26
- package/dist/development/graphQlClient/GraphQlClient.js.map +0 -1
- package/dist/development/system/formatSystemApiRelativeUrl.cjs +0 -5
- package/dist/development/system/formatSystemApiRelativeUrl.cjs.map +0 -1
- package/dist/development/system/formatSystemApiRelativeUrl.js +0 -5
- package/dist/development/system/formatSystemApiRelativeUrl.js.map +0 -1
- package/dist/development/tenant/loginMutation.cjs +0 -34
- package/dist/development/tenant/loginMutation.cjs.map +0 -1
- package/dist/development/tenant/loginMutation.js +0 -34
- package/dist/development/tenant/loginMutation.js.map +0 -1
- package/dist/development/tenant/tenantApiRelativeUrl.cjs +0 -5
- package/dist/development/tenant/tenantApiRelativeUrl.cjs.map +0 -1
- package/dist/development/tenant/tenantApiRelativeUrl.js +0 -5
- package/dist/development/tenant/tenantApiRelativeUrl.js.map +0 -1
- package/dist/development/tenant/tenantErrorMessages.cjs +0 -18
- package/dist/development/tenant/tenantErrorMessages.cjs.map +0 -1
- package/dist/development/tenant/tenantErrorMessages.js +0 -18
- package/dist/development/tenant/tenantErrorMessages.js.map +0 -1
- package/dist/development/utils/readFileAsArrayBuffer.cjs +0 -15
- package/dist/development/utils/readFileAsArrayBuffer.cjs.map +0 -1
- package/dist/development/utils/readFileAsArrayBuffer.js +0 -15
- package/dist/development/utils/readFileAsArrayBuffer.js.map +0 -1
- package/dist/production/content/formatContentApiRelativeUrl.cjs +0 -5
- package/dist/production/content/formatContentApiRelativeUrl.cjs.map +0 -1
- package/dist/production/content/formatContentApiRelativeUrl.js +0 -5
- package/dist/production/content/formatContentApiRelativeUrl.js.map +0 -1
- package/dist/production/content/params/whereToFilter.cjs +0 -17
- package/dist/production/content/params/whereToFilter.cjs.map +0 -1
- package/dist/production/content/params/whereToFilter.js +0 -17
- package/dist/production/content/params/whereToFilter.js.map +0 -1
- package/dist/production/content/replaceGraphQlLiteral.cjs +0 -15
- package/dist/production/content/replaceGraphQlLiteral.cjs.map +0 -1
- package/dist/production/content/replaceGraphQlLiteral.js +0 -15
- package/dist/production/content/replaceGraphQlLiteral.js.map +0 -1
- package/dist/production/content/upload/FileUploadError.cjs +0 -10
- package/dist/production/content/upload/FileUploadError.cjs.map +0 -1
- package/dist/production/content/upload/FileUploadError.js +0 -10
- package/dist/production/content/upload/FileUploadError.js.map +0 -1
- package/dist/production/content/upload/GenerateUploadUrlMutationBuilder.cjs.map +0 -1
- package/dist/production/content/upload/GenerateUploadUrlMutationBuilder.js.map +0 -1
- package/dist/production/content/upload/S3FileUploader.cjs +0 -107
- package/dist/production/content/upload/S3FileUploader.cjs.map +0 -1
- package/dist/production/content/upload/S3FileUploader.js +0 -107
- package/dist/production/content/upload/S3FileUploader.js.map +0 -1
- package/dist/production/graphQlBuilder/GraphQlLiteral.cjs +0 -12
- package/dist/production/graphQlBuilder/GraphQlLiteral.cjs.map +0 -1
- package/dist/production/graphQlBuilder/GraphQlLiteral.js +0 -12
- package/dist/production/graphQlBuilder/GraphQlLiteral.js.map +0 -1
- package/dist/production/graphQlClient/GraphQlClient.cjs +0 -26
- package/dist/production/graphQlClient/GraphQlClient.cjs.map +0 -1
- package/dist/production/graphQlClient/GraphQlClient.js +0 -26
- package/dist/production/graphQlClient/GraphQlClient.js.map +0 -1
- package/dist/production/system/formatSystemApiRelativeUrl.cjs +0 -5
- package/dist/production/system/formatSystemApiRelativeUrl.cjs.map +0 -1
- package/dist/production/system/formatSystemApiRelativeUrl.js +0 -5
- package/dist/production/system/formatSystemApiRelativeUrl.js.map +0 -1
- package/dist/production/tenant/loginMutation.cjs +0 -34
- package/dist/production/tenant/loginMutation.cjs.map +0 -1
- package/dist/production/tenant/loginMutation.js +0 -34
- package/dist/production/tenant/loginMutation.js.map +0 -1
- package/dist/production/tenant/tenantApiRelativeUrl.cjs +0 -5
- package/dist/production/tenant/tenantApiRelativeUrl.cjs.map +0 -1
- package/dist/production/tenant/tenantApiRelativeUrl.js +0 -5
- package/dist/production/tenant/tenantApiRelativeUrl.js.map +0 -1
- package/dist/production/tenant/tenantErrorMessages.cjs +0 -18
- package/dist/production/tenant/tenantErrorMessages.cjs.map +0 -1
- package/dist/production/tenant/tenantErrorMessages.js +0 -18
- package/dist/production/tenant/tenantErrorMessages.js.map +0 -1
- package/dist/production/utils/readFileAsArrayBuffer.cjs +0 -15
- package/dist/production/utils/readFileAsArrayBuffer.cjs.map +0 -1
- package/dist/production/utils/readFileAsArrayBuffer.js +0 -15
- package/dist/production/utils/readFileAsArrayBuffer.js.map +0 -1
- package/dist/types/content/formatContentApiRelativeUrl.d.ts +0 -2
- package/dist/types/content/formatContentApiRelativeUrl.d.ts.map +0 -1
- package/dist/types/content/index.d.ts +0 -5
- package/dist/types/content/index.d.ts.map +0 -1
- package/dist/types/content/params/index.d.ts +0 -2
- package/dist/types/content/params/index.d.ts.map +0 -1
- package/dist/types/content/params/whereToFilter.d.ts +0 -4
- package/dist/types/content/params/whereToFilter.d.ts.map +0 -1
- package/dist/types/content/replaceGraphQlLiteral.d.ts +0 -6
- package/dist/types/content/replaceGraphQlLiteral.d.ts.map +0 -1
- package/dist/types/content/upload/FileUploadError.d.ts +0 -9
- package/dist/types/content/upload/FileUploadError.d.ts.map +0 -1
- package/dist/types/content/upload/FileUploadProgress.d.ts +0 -4
- package/dist/types/content/upload/FileUploadProgress.d.ts.map +0 -1
- package/dist/types/content/upload/FileUploader.d.ts +0 -15
- package/dist/types/content/upload/FileUploader.d.ts.map +0 -1
- package/dist/types/content/upload/GenerateUploadUrlMutationBuilder.d.ts.map +0 -1
- package/dist/types/content/upload/S3FileUploader.d.ts +0 -33
- package/dist/types/content/upload/S3FileUploader.d.ts.map +0 -1
- package/dist/types/content/upload/SwitchFileUploader.d.ts +0 -13
- package/dist/types/content/upload/SwitchFileUploader.d.ts.map +0 -1
- package/dist/types/content/upload/UploadedFileMetadata.d.ts +0 -4
- package/dist/types/content/upload/UploadedFileMetadata.d.ts.map +0 -1
- package/dist/types/content/upload/index.d.ts +0 -8
- package/dist/types/content/upload/index.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/index.d.ts +0 -2
- package/dist/types/crudQueryBuilder/index.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/types.d.ts +0 -4
- package/dist/types/crudQueryBuilder/types.d.ts.map +0 -1
- package/dist/types/graphQlBuilder/GraphQlLiteral.d.ts +0 -9
- package/dist/types/graphQlBuilder/GraphQlLiteral.d.ts.map +0 -1
- package/dist/types/graphQlBuilder/QueryBuilder.d.ts +0 -11
- package/dist/types/graphQlBuilder/QueryBuilder.d.ts.map +0 -1
- package/dist/types/graphQlBuilder/index.d.ts +0 -3
- package/dist/types/graphQlBuilder/index.d.ts.map +0 -1
- package/dist/types/graphQlClient/GraphQlClient.d.ts +0 -17
- package/dist/types/graphQlClient/GraphQlClient.d.ts.map +0 -1
- package/dist/types/graphQlClient/index.d.ts +0 -4
- package/dist/types/graphQlClient/index.d.ts.map +0 -1
- package/dist/types/system/events/RelationFilter.d.ts +0 -5
- package/dist/types/system/events/RelationFilter.d.ts.map +0 -1
- package/dist/types/system/events/SystemEvent.d.ts +0 -10
- package/dist/types/system/events/SystemEvent.d.ts.map +0 -1
- package/dist/types/system/events/TreeFilter.d.ts +0 -7
- package/dist/types/system/events/TreeFilter.d.ts.map +0 -1
- package/dist/types/system/events/index.d.ts +0 -4
- package/dist/types/system/events/index.d.ts.map +0 -1
- package/dist/types/system/formatSystemApiRelativeUrl.d.ts +0 -2
- package/dist/types/system/formatSystemApiRelativeUrl.d.ts.map +0 -1
- package/dist/types/system/index.d.ts +0 -3
- package/dist/types/system/index.d.ts.map +0 -1
- package/dist/types/tenant/index.d.ts +0 -4
- package/dist/types/tenant/index.d.ts.map +0 -1
- package/dist/types/tenant/loginMutation.d.ts +0 -32
- package/dist/types/tenant/loginMutation.d.ts.map +0 -1
- package/dist/types/tenant/tenantApiRelativeUrl.d.ts +0 -2
- package/dist/types/tenant/tenantApiRelativeUrl.d.ts.map +0 -1
- package/dist/types/tenant/tenantErrorMessages.d.ts +0 -5
- package/dist/types/tenant/tenantErrorMessages.d.ts.map +0 -1
- package/dist/types/utils/index.d.ts +0 -3
- package/dist/types/utils/index.d.ts.map +0 -1
- package/dist/types/utils/isEmptyObject.d.ts +0 -2
- package/dist/types/utils/isEmptyObject.d.ts.map +0 -1
- package/dist/types/utils/readFileAsArrayBuffer.d.ts +0 -2
- package/dist/types/utils/readFileAsArrayBuffer.d.ts.map +0 -1
- package/src/content/formatContentApiRelativeUrl.ts +0 -2
- package/src/content/index.ts +0 -4
- package/src/content/params/index.ts +0 -1
- package/src/content/params/whereToFilter.ts +0 -19
- package/src/content/replaceGraphQlLiteral.ts +0 -22
- package/src/content/upload/FileUploadError.ts +0 -10
- package/src/content/upload/FileUploadProgress.ts +0 -3
- package/src/content/upload/FileUploader.ts +0 -19
- package/src/content/upload/S3FileUploader.ts +0 -150
- package/src/content/upload/SwitchFileUploader.ts +0 -40
- package/src/content/upload/UploadedFileMetadata.ts +0 -3
- package/src/content/upload/index.ts +0 -7
- package/src/crudQueryBuilder/index.ts +0 -1
- package/src/crudQueryBuilder/types.ts +0 -8
- package/src/graphQlBuilder/GraphQlLiteral.ts +0 -14
- package/src/graphQlBuilder/QueryBuilder.ts +0 -13
- package/src/graphQlBuilder/index.ts +0 -2
- package/src/graphQlClient/GraphQlClient.ts +0 -39
- package/src/graphQlClient/index.ts +0 -8
- package/src/system/events/RelationFilter.ts +0 -4
- package/src/system/events/SystemEvent.ts +0 -9
- package/src/system/events/TreeFilter.ts +0 -7
- package/src/system/events/index.ts +0 -3
- package/src/system/formatSystemApiRelativeUrl.ts +0 -1
- package/src/system/index.ts +0 -2
- package/src/tenant/index.ts +0 -3
- package/src/tenant/loginMutation.ts +0 -61
- package/src/tenant/tenantApiRelativeUrl.ts +0 -1
- package/src/tenant/tenantErrorMessages.ts +0 -14
- package/src/utils/index.ts +0 -2
- package/src/utils/isEmptyObject.ts +0 -9
- package/src/utils/readFileAsArrayBuffer.ts +0 -12
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import pLimit from 'p-limit'
|
|
2
|
-
import { readFileAsArrayBuffer } from '../../utils'
|
|
3
|
-
import { FileUploadError } from './FileUploadError'
|
|
4
|
-
import type { FileUploader, FileUploaderInitializeOptions } from './FileUploader'
|
|
5
|
-
import { GenerateUploadUrlMutationBuilder } from './GenerateUploadUrlMutationBuilder'
|
|
6
|
-
import type { UploadedFileMetadata } from './UploadedFileMetadata'
|
|
7
|
-
|
|
8
|
-
interface S3UploadState {
|
|
9
|
-
request?: XMLHttpRequest
|
|
10
|
-
alias: number
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
class S3FileUploader implements FileUploader<S3FileUploader.SuccessMetadata> {
|
|
14
|
-
private readonly uploadState: WeakMap<File, S3UploadState>
|
|
15
|
-
|
|
16
|
-
public constructor(public readonly options: S3FileUploader.Options = {}) {
|
|
17
|
-
this.uploadState = new WeakMap()
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
private generateNewAlias = (() => {
|
|
21
|
-
let alias = 1
|
|
22
|
-
return () => alias++
|
|
23
|
-
})()
|
|
24
|
-
|
|
25
|
-
private static formatFullAlias(alias: number) {
|
|
26
|
-
return `file${alias}`
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public async upload(
|
|
30
|
-
files: Map<File, UploadedFileMetadata>,
|
|
31
|
-
options: FileUploaderInitializeOptions,
|
|
32
|
-
) {
|
|
33
|
-
const parameters: GenerateUploadUrlMutationBuilder.MutationParameters = {}
|
|
34
|
-
|
|
35
|
-
for (const [file, metadata] of files) {
|
|
36
|
-
if (this.uploadState.has(file)) {
|
|
37
|
-
const uploadState = this.uploadState.get(file)!
|
|
38
|
-
uploadState.request?.abort()
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const alias = this.generateNewAlias()
|
|
42
|
-
this.uploadState.set(file, {
|
|
43
|
-
alias,
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
const uploadOptions = this.options.getUploadOptions?.(file)
|
|
47
|
-
|
|
48
|
-
parameters[S3FileUploader.formatFullAlias(alias)] = {
|
|
49
|
-
contentType: uploadOptions?.fileType ?? file.type,
|
|
50
|
-
prefix: uploadOptions?.filePrefix,
|
|
51
|
-
suffix: uploadOptions?.fileSuffix,
|
|
52
|
-
size: uploadOptions?.fileSize,
|
|
53
|
-
extension: uploadOptions?.fileExtension,
|
|
54
|
-
fileName: uploadOptions?.fileName,
|
|
55
|
-
expiration: uploadOptions?.fileExpiration,
|
|
56
|
-
acl: uploadOptions?.fileAcl,
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
metadata.abortSignal.addEventListener('abort', () => {
|
|
60
|
-
this.uploadState.get(file)?.request?.abort()
|
|
61
|
-
})
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const mutation = GenerateUploadUrlMutationBuilder.buildQuery(parameters)
|
|
65
|
-
try {
|
|
66
|
-
const responseData = await options.contentApiClient.execute<GenerateUploadUrlMutationBuilder.MutationResponse>(mutation.query, { variables: mutation.variables })
|
|
67
|
-
const limit = pLimit(this.options.concurrency ?? 5)
|
|
68
|
-
const promises: Promise<void>[] = []
|
|
69
|
-
for (const [file] of files) {
|
|
70
|
-
promises.push(limit(() => this.uploadSingleFile(file, responseData, options)))
|
|
71
|
-
}
|
|
72
|
-
await Promise.all(promises)
|
|
73
|
-
} catch (error) {
|
|
74
|
-
if (error instanceof FileUploadError) {
|
|
75
|
-
const fileUploadError = error
|
|
76
|
-
options.onError(Array.from(files).map(([file]) => [file, fileUploadError]))
|
|
77
|
-
|
|
78
|
-
} else {
|
|
79
|
-
throw error
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
private uploadSingleFile(
|
|
85
|
-
file: File,
|
|
86
|
-
responseData: GenerateUploadUrlMutationBuilder.MutationResponse,
|
|
87
|
-
{ onProgress, onError, onSuccess }: FileUploaderInitializeOptions,
|
|
88
|
-
) {
|
|
89
|
-
return new Promise<void>(async (resolve, reject) => {
|
|
90
|
-
const fileState = this.uploadState.get(file)!
|
|
91
|
-
const datumBody = responseData[S3FileUploader.formatFullAlias(fileState.alias)]
|
|
92
|
-
const uploadRequestBody = await readFileAsArrayBuffer(file)
|
|
93
|
-
const xhr = new XMLHttpRequest()
|
|
94
|
-
|
|
95
|
-
fileState.request = xhr
|
|
96
|
-
|
|
97
|
-
xhr.open(datumBody.method, datumBody.url)
|
|
98
|
-
|
|
99
|
-
for (const header of datumBody.headers) {
|
|
100
|
-
xhr.setRequestHeader(header.key, header.value)
|
|
101
|
-
}
|
|
102
|
-
xhr.addEventListener('load', () => {
|
|
103
|
-
const successMetadata: S3FileUploader.SuccessMetadata = {
|
|
104
|
-
fileUrl: datumBody.publicUrl,
|
|
105
|
-
}
|
|
106
|
-
onSuccess([[file, successMetadata]])
|
|
107
|
-
resolve()
|
|
108
|
-
})
|
|
109
|
-
xhr.addEventListener('error', e => {
|
|
110
|
-
onError([file])
|
|
111
|
-
reject(e)
|
|
112
|
-
})
|
|
113
|
-
xhr.upload?.addEventListener('progress', e => {
|
|
114
|
-
onProgress([
|
|
115
|
-
[
|
|
116
|
-
file,
|
|
117
|
-
{
|
|
118
|
-
progress: e.loaded / e.total,
|
|
119
|
-
},
|
|
120
|
-
],
|
|
121
|
-
])
|
|
122
|
-
})
|
|
123
|
-
xhr.send(uploadRequestBody)
|
|
124
|
-
})
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
namespace S3FileUploader {
|
|
129
|
-
export interface SuccessMetadata {
|
|
130
|
-
fileUrl: string
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export interface Options {
|
|
134
|
-
getUploadOptions?: (file: File) => S3UploadOptions
|
|
135
|
-
concurrency?: number
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export interface S3UploadOptions {
|
|
139
|
-
fileType?: GenerateUploadUrlMutationBuilder.FileParameters['contentType']
|
|
140
|
-
fileExpiration?: number
|
|
141
|
-
fileSize?: number
|
|
142
|
-
filePrefix?: string
|
|
143
|
-
fileSuffix?: string
|
|
144
|
-
fileName?: string
|
|
145
|
-
fileExtension?: string
|
|
146
|
-
fileAcl?: GenerateUploadUrlMutationBuilder.Acl
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
export { S3FileUploader }
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { FileUploader, FileUploaderInitializeOptions } from './FileUploader'
|
|
2
|
-
import type { UploadedFileMetadata } from './UploadedFileMetadata'
|
|
3
|
-
|
|
4
|
-
class SwitchFileUploader implements FileUploader {
|
|
5
|
-
public constructor(private readonly subUploaders: SwitchFileUploader.SubUploaders) {}
|
|
6
|
-
|
|
7
|
-
public async upload(files: Map<File, UploadedFileMetadata>, options: FileUploaderInitializeOptions) {
|
|
8
|
-
const fileKinds: Map<FileUploader, Map<File, UploadedFileMetadata>> = new Map()
|
|
9
|
-
const unhandledFiles: Array<[File, any]> = []
|
|
10
|
-
|
|
11
|
-
fileLoop: for (const [file, metadata] of files) {
|
|
12
|
-
for (const [predicate, uploader] of this.subUploaders) {
|
|
13
|
-
if (predicate(file)) {
|
|
14
|
-
let nestedMap = fileKinds.get(uploader)
|
|
15
|
-
if (nestedMap === undefined) {
|
|
16
|
-
fileKinds.set(uploader, (nestedMap = new Map()))
|
|
17
|
-
}
|
|
18
|
-
nestedMap.set(file, metadata)
|
|
19
|
-
continue fileLoop
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
unhandledFiles.push([file, undefined])
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (unhandledFiles.length && options.onError) {
|
|
26
|
-
options.onError(unhandledFiles)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
for (const [uploader, files] of fileKinds) {
|
|
30
|
-
uploader.upload(files, options) // Deliberately no await
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
namespace SwitchFileUploader {
|
|
36
|
-
export type FilePredicate = (file: File) => boolean
|
|
37
|
-
export type SubUploaders = Iterable<[FilePredicate, FileUploader]>
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export { SwitchFileUploader }
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './FileUploader'
|
|
2
|
-
export * from './FileUploadError'
|
|
3
|
-
export * from './FileUploadProgress'
|
|
4
|
-
export * from './GenerateUploadUrlMutationBuilder'
|
|
5
|
-
export * from './UploadedFileMetadata'
|
|
6
|
-
export * from './S3FileUploader'
|
|
7
|
-
export * from './UploadedFileMetadata'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './types'
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @deprecated Directly use the value instead.
|
|
3
|
-
*/
|
|
4
|
-
export class GraphQlLiteral<Value extends string = string> {
|
|
5
|
-
constructor(public readonly value: Value) {
|
|
6
|
-
if (import.meta.env.DEV) {
|
|
7
|
-
console.warn('GraphQlLiteral is deprecated, use the value directly instead.')
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public toString() {
|
|
12
|
-
return `Literal(${this.value})`
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { GraphQlLiteral } from './GraphQlLiteral'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export namespace QueryBuilder {
|
|
5
|
-
export interface Object {
|
|
6
|
-
[key: string]: Value
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface List extends Array<Value> {}
|
|
10
|
-
|
|
11
|
-
export type AtomicValue = string | null | number | boolean | GraphQlLiteral
|
|
12
|
-
export type Value = AtomicValue | Object | List
|
|
13
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { GraphQlClient as BaseGraphQLClient, GraphQlClientRequestOptions as BaseGraphQlClientRequestOptions } from '@contember/graphql-client'
|
|
2
|
-
|
|
3
|
-
export interface GraphQlClientRequestOptions extends BaseGraphQlClientRequestOptions {
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated use apiToken
|
|
6
|
-
*/
|
|
7
|
-
apiTokenOverride?: string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export type GraphQlClientFailedRequestMetadata = Pick<Response, 'status' | 'statusText'> & {
|
|
11
|
-
responseText: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export class GraphQlClient extends BaseGraphQLClient {
|
|
15
|
-
/**
|
|
16
|
-
* @deprecated use execute
|
|
17
|
-
*/
|
|
18
|
-
async sendRequest<T = unknown>(query: string, options: GraphQlClientRequestOptions = {}): Promise<T> {
|
|
19
|
-
console.debug(query)
|
|
20
|
-
const response = await this.doExecute(query, {
|
|
21
|
-
...options,
|
|
22
|
-
apiToken: options.apiTokenOverride ?? options.apiToken,
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
if (response.ok) {
|
|
26
|
-
// It may still have errors (e.g. unfilled fields) but as far as the request goes, it is ok.
|
|
27
|
-
return await response.json()
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const failedRequest: GraphQlClientFailedRequestMetadata = {
|
|
31
|
-
status: response.status,
|
|
32
|
-
statusText: response.statusText,
|
|
33
|
-
responseText: await response.text(),
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return Promise.reject(failedRequest)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const formatSystemApiRelativeUrl = (projectSlug: string) => `/system/${projectSlug}`
|
package/src/system/index.ts
DELETED
package/src/tenant/index.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export interface LoginMutationResponse {
|
|
2
|
-
data: {
|
|
3
|
-
signIn: {
|
|
4
|
-
ok: boolean
|
|
5
|
-
errors: Array<{
|
|
6
|
-
endUserMessage: string | null
|
|
7
|
-
code: string
|
|
8
|
-
}>
|
|
9
|
-
result: {
|
|
10
|
-
token: string
|
|
11
|
-
person: {
|
|
12
|
-
id: string
|
|
13
|
-
email: string
|
|
14
|
-
identity: {
|
|
15
|
-
id: string
|
|
16
|
-
projects: Array<{
|
|
17
|
-
project: {
|
|
18
|
-
id: string
|
|
19
|
-
slug: string
|
|
20
|
-
}
|
|
21
|
-
memberships: Array<{
|
|
22
|
-
role: string
|
|
23
|
-
}>
|
|
24
|
-
}>
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
} | null
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export const loginMutation = `
|
|
33
|
-
mutation($email: String!, $password: String!, $expiration: Int) {
|
|
34
|
-
signIn(email: $email, password: $password, expiration: $expiration) {
|
|
35
|
-
ok
|
|
36
|
-
errors {
|
|
37
|
-
endUserMessage
|
|
38
|
-
code
|
|
39
|
-
}
|
|
40
|
-
result {
|
|
41
|
-
token
|
|
42
|
-
person {
|
|
43
|
-
id
|
|
44
|
-
email
|
|
45
|
-
identity {
|
|
46
|
-
id
|
|
47
|
-
projects {
|
|
48
|
-
project {
|
|
49
|
-
id
|
|
50
|
-
slug
|
|
51
|
-
}
|
|
52
|
-
memberships {
|
|
53
|
-
role
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
`
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const tenantApiRelativeUrl = '/tenant'
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export const tenantErrorMessages: { [key: string]: string } = {
|
|
2
|
-
TOO_WEAK: 'Password is too weak.',
|
|
3
|
-
EMAIL_ALREADY_EXISTS: 'Email already exists.',
|
|
4
|
-
UNKNOWN_EMAIL: 'Unknown email.',
|
|
5
|
-
INVALID_PASSWORD: 'Password is invalid.',
|
|
6
|
-
ALREADY_MEMBER: 'User is already a member of this project.',
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const getTenantErrorMessage = (errorCode: string): string => {
|
|
10
|
-
if (errorCode in tenantErrorMessages) {
|
|
11
|
-
return tenantErrorMessages[errorCode]
|
|
12
|
-
}
|
|
13
|
-
return `Unknown error occurred. [${errorCode}]`
|
|
14
|
-
}
|
package/src/utils/index.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export const readFileAsArrayBuffer = (file: File): Promise<string | ArrayBuffer> =>
|
|
2
|
-
new Promise((resolve, reject) => {
|
|
3
|
-
const reader = new FileReader()
|
|
4
|
-
reader.onload = () => {
|
|
5
|
-
if (reader.result === null) {
|
|
6
|
-
reject()
|
|
7
|
-
return
|
|
8
|
-
}
|
|
9
|
-
resolve(reader.result)
|
|
10
|
-
}
|
|
11
|
-
reader.readAsArrayBuffer(file)
|
|
12
|
-
})
|