@decaf-ts/integrations 0.1.3 → 0.2.0

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 (172) hide show
  1. package/dist/integrations.cjs +1 -1
  2. package/docker/azure-blob-compose.yml +21 -0
  3. package/docker/gcs-blob-compose.yml +21 -0
  4. package/docker/ipfs-compose.yml +25 -0
  5. package/docker/minio-compose.yml +25 -0
  6. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +293 -0
  7. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -0
  8. package/lib/cjs/blob/azure/index.cjs +24 -0
  9. package/lib/cjs/blob/azure/index.cjs.map +1 -0
  10. package/lib/cjs/blob/core/BlobErrors.cjs +74 -0
  11. package/lib/cjs/blob/core/BlobErrors.cjs.map +1 -0
  12. package/lib/cjs/blob/core/BlobKey.cjs +37 -0
  13. package/lib/cjs/blob/core/BlobKey.cjs.map +1 -0
  14. package/lib/cjs/blob/core/BlobStoreFactory.cjs +57 -0
  15. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -0
  16. package/lib/cjs/blob/core/BlobStoreService.cjs +42 -0
  17. package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -0
  18. package/lib/cjs/blob/core/BlobTypes.cjs +4 -0
  19. package/lib/cjs/blob/core/BlobTypes.cjs.map +1 -0
  20. package/lib/cjs/blob/core/BlobValue.cjs +72 -0
  21. package/lib/cjs/blob/core/BlobValue.cjs.map +1 -0
  22. package/lib/cjs/blob/core/index.cjs +29 -0
  23. package/lib/cjs/blob/core/index.cjs.map +1 -0
  24. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +272 -0
  25. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -0
  26. package/lib/cjs/blob/gcp/index.cjs +24 -0
  27. package/lib/cjs/blob/gcp/index.cjs.map +1 -0
  28. package/lib/cjs/blob/index.cjs +25 -0
  29. package/lib/cjs/blob/index.cjs.map +1 -0
  30. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +182 -0
  31. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +1 -0
  32. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +27 -0
  33. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +1 -0
  34. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +35 -0
  35. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +1 -0
  36. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +45 -0
  37. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +1 -0
  38. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +35 -0
  39. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +1 -0
  40. package/lib/cjs/blob/ipfs/index.cjs +28 -0
  41. package/lib/cjs/blob/ipfs/index.cjs.map +1 -0
  42. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +288 -0
  43. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +1 -0
  44. package/lib/cjs/blob/local/index.cjs +24 -0
  45. package/lib/cjs/blob/local/index.cjs.map +1 -0
  46. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +146 -0
  47. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +1 -0
  48. package/lib/cjs/blob/memory/index.cjs +24 -0
  49. package/lib/cjs/blob/memory/index.cjs.map +1 -0
  50. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +14 -0
  51. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +1 -0
  52. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +14 -0
  53. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +1 -0
  54. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +322 -0
  55. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -0
  56. package/lib/cjs/blob/s3/index.cjs +26 -0
  57. package/lib/cjs/blob/s3/index.cjs.map +1 -0
  58. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  59. package/lib/cjs/docker/DockerComposeService.cjs.map +1 -1
  60. package/lib/cjs/index.cjs +3 -3
  61. package/lib/esm/blob/azure/AzureBlobStoreService.js +288 -0
  62. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -0
  63. package/lib/esm/blob/azure/index.js +7 -0
  64. package/lib/esm/blob/azure/index.js.map +1 -0
  65. package/lib/esm/blob/core/BlobErrors.js +61 -0
  66. package/lib/esm/blob/core/BlobErrors.js.map +1 -0
  67. package/lib/esm/blob/core/BlobKey.js +32 -0
  68. package/lib/esm/blob/core/BlobKey.js.map +1 -0
  69. package/lib/esm/blob/core/BlobStoreFactory.js +52 -0
  70. package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -0
  71. package/lib/esm/blob/core/BlobStoreService.js +37 -0
  72. package/lib/esm/blob/core/BlobStoreService.js.map +1 -0
  73. package/lib/esm/blob/core/BlobTypes.js +2 -0
  74. package/lib/esm/blob/core/BlobTypes.js.map +1 -0
  75. package/lib/esm/blob/core/BlobValue.js +66 -0
  76. package/lib/esm/blob/core/BlobValue.js.map +1 -0
  77. package/lib/esm/blob/core/index.js +12 -0
  78. package/lib/esm/blob/core/index.js.map +1 -0
  79. package/lib/esm/blob/gcp/GcsBlobStoreService.js +267 -0
  80. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -0
  81. package/lib/esm/blob/gcp/index.js +7 -0
  82. package/lib/esm/blob/gcp/index.js.map +1 -0
  83. package/lib/esm/blob/index.js +8 -0
  84. package/lib/esm/blob/index.js.map +1 -0
  85. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +177 -0
  86. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +1 -0
  87. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +23 -0
  88. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +1 -0
  89. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +30 -0
  90. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +1 -0
  91. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +40 -0
  92. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +1 -0
  93. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +30 -0
  94. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +1 -0
  95. package/lib/esm/blob/ipfs/index.js +11 -0
  96. package/lib/esm/blob/ipfs/index.js.map +1 -0
  97. package/lib/esm/blob/local/LocalBlobStoreService.js +283 -0
  98. package/lib/esm/blob/local/LocalBlobStoreService.js.map +1 -0
  99. package/lib/esm/blob/local/index.js +7 -0
  100. package/lib/esm/blob/local/index.js.map +1 -0
  101. package/lib/esm/blob/memory/MemoryBlobStoreService.js +141 -0
  102. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +1 -0
  103. package/lib/esm/blob/memory/index.js +7 -0
  104. package/lib/esm/blob/memory/index.js.map +1 -0
  105. package/lib/esm/blob/s3/MinioBlobStoreService.js +9 -0
  106. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +1 -0
  107. package/lib/esm/blob/s3/R2BlobStoreService.js +9 -0
  108. package/lib/esm/blob/s3/R2BlobStoreService.js.map +1 -0
  109. package/lib/esm/blob/s3/S3BlobStoreService.js +317 -0
  110. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -0
  111. package/lib/esm/blob/s3/index.js +9 -0
  112. package/lib/esm/blob/s3/index.js.map +1 -0
  113. package/lib/esm/docker/DockerComposeService.js +2 -2
  114. package/lib/esm/docker/DockerComposeService.js.map +1 -1
  115. package/lib/esm/index.js +3 -3
  116. package/lib/types/blob/azure/AzureBlobStoreService.d.cts +25 -0
  117. package/lib/types/blob/azure/AzureBlobStoreService.d.mts +25 -0
  118. package/lib/types/blob/azure/index.d.cts +6 -0
  119. package/lib/types/blob/azure/index.d.mts +6 -0
  120. package/lib/types/blob/core/BlobErrors.d.cts +14 -0
  121. package/lib/types/blob/core/BlobErrors.d.mts +14 -0
  122. package/lib/types/blob/core/BlobKey.d.cts +9 -0
  123. package/lib/types/blob/core/BlobKey.d.mts +9 -0
  124. package/lib/types/blob/core/BlobStoreFactory.d.cts +5 -0
  125. package/lib/types/blob/core/BlobStoreFactory.d.mts +5 -0
  126. package/lib/types/blob/core/BlobStoreService.d.cts +28 -0
  127. package/lib/types/blob/core/BlobStoreService.d.mts +28 -0
  128. package/lib/types/blob/core/BlobTypes.d.cts +122 -0
  129. package/lib/types/blob/core/BlobTypes.d.mts +122 -0
  130. package/lib/types/blob/core/BlobValue.d.cts +13 -0
  131. package/lib/types/blob/core/BlobValue.d.mts +13 -0
  132. package/lib/types/blob/core/index.d.cts +11 -0
  133. package/lib/types/blob/core/index.d.mts +11 -0
  134. package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +25 -0
  135. package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +25 -0
  136. package/lib/types/blob/gcp/index.d.cts +6 -0
  137. package/lib/types/blob/gcp/index.d.mts +6 -0
  138. package/lib/types/blob/index.d.cts +7 -0
  139. package/lib/types/blob/index.d.mts +7 -0
  140. package/lib/types/blob/ipfs/IpfsBlobStoreService.d.cts +26 -0
  141. package/lib/types/blob/ipfs/IpfsBlobStoreService.d.mts +26 -0
  142. package/lib/types/blob/ipfs/IpfsKeyIndex.d.cts +9 -0
  143. package/lib/types/blob/ipfs/IpfsKeyIndex.d.mts +9 -0
  144. package/lib/types/blob/ipfs/LocalJsonIpfsKeyIndex.d.cts +11 -0
  145. package/lib/types/blob/ipfs/LocalJsonIpfsKeyIndex.d.mts +11 -0
  146. package/lib/types/blob/ipfs/MemoryIpfsKeyIndex.d.cts +15 -0
  147. package/lib/types/blob/ipfs/MemoryIpfsKeyIndex.d.mts +15 -0
  148. package/lib/types/blob/ipfs/PostgresIpfsKeyIndex.d.cts +11 -0
  149. package/lib/types/blob/ipfs/PostgresIpfsKeyIndex.d.mts +11 -0
  150. package/lib/types/blob/ipfs/index.d.cts +10 -0
  151. package/lib/types/blob/ipfs/index.d.mts +10 -0
  152. package/lib/types/blob/local/LocalBlobStoreService.d.cts +30 -0
  153. package/lib/types/blob/local/LocalBlobStoreService.d.mts +30 -0
  154. package/lib/types/blob/local/index.d.cts +6 -0
  155. package/lib/types/blob/local/index.d.mts +6 -0
  156. package/lib/types/blob/memory/MemoryBlobStoreService.d.cts +28 -0
  157. package/lib/types/blob/memory/MemoryBlobStoreService.d.mts +28 -0
  158. package/lib/types/blob/memory/index.d.cts +6 -0
  159. package/lib/types/blob/memory/index.d.mts +6 -0
  160. package/lib/types/blob/s3/MinioBlobStoreService.d.cts +8 -0
  161. package/lib/types/blob/s3/MinioBlobStoreService.d.mts +8 -0
  162. package/lib/types/blob/s3/R2BlobStoreService.d.cts +8 -0
  163. package/lib/types/blob/s3/R2BlobStoreService.d.mts +8 -0
  164. package/lib/types/blob/s3/S3BlobStoreService.d.cts +25 -0
  165. package/lib/types/blob/s3/S3BlobStoreService.d.mts +25 -0
  166. package/lib/types/blob/s3/index.d.cts +8 -0
  167. package/lib/types/blob/s3/index.d.mts +8 -0
  168. package/lib/types/docker/DockerComposeService.d.cts +6 -0
  169. package/lib/types/docker/DockerComposeService.d.mts +6 -0
  170. package/lib/types/index.d.cts +2 -2
  171. package/lib/types/index.d.mts +2 -2
  172. package/package.json +88 -6
@@ -0,0 +1,317 @@
1
+ /**
2
+ * @module integrations/blob/s3/service
3
+ * @summary S3-compatible blob store service.
4
+ * @description Blob store backed by AWS S3, MinIO, and Cloudflare R2 via the AWS SDK v3 S3Client.
5
+ */
6
+ import { CopyObjectCommand, CreateBucketCommand, DeleteObjectCommand, GetObjectCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client, } from "@aws-sdk/client-s3";
7
+ import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
8
+ import { AuthorizationError, ConnectionError, ForbiddenError, UnsupportedError, } from "@decaf-ts/core";
9
+ import { ConflictError, InternalError, NotFoundError, ValidationError, } from "@decaf-ts/db-decorators";
10
+ import { BlobStoreService } from "./../core/BlobStoreService.js";
11
+ import { collectToBuffer, computeSha256, toAsyncIterable } from "./../core/BlobValue.js";
12
+ export class S3BlobStoreService extends BlobStoreService {
13
+ async initialize(...args) {
14
+ const { log } = (await this.logCtx(args, "initialize", true)).for(this.initialize);
15
+ const config = this.getConfigFromArgs(...args);
16
+ if (!config.bucket) {
17
+ throw new InternalError("S3BlobStoreService requires a bucket");
18
+ }
19
+ const clientConfig = {
20
+ region: config.region,
21
+ endpoint: config.endpoint,
22
+ forcePathStyle: config.forcePathStyle,
23
+ maxAttempts: config.maxRetries,
24
+ };
25
+ if (config.credentials) {
26
+ clientConfig.credentials = {
27
+ accessKeyId: config.credentials.accessKeyId,
28
+ secretAccessKey: config.credentials.secretAccessKey,
29
+ sessionToken: config.credentials.sessionToken,
30
+ };
31
+ }
32
+ const client = new S3Client(clientConfig);
33
+ this._config = config;
34
+ this._client = client;
35
+ if (config.autoCreateBucket) {
36
+ await this.ensureBucket(log);
37
+ }
38
+ log.verbose(`Initialized S3 blob store ${config.sourceId}`);
39
+ return { config, client };
40
+ }
41
+ async put(key, value, options = {}, ...args) {
42
+ const { log } = (await this.logCtx(args, "put", true)).for(this.put);
43
+ log.verbose(`Putting blob ${key}`);
44
+ const objectKey = this.physicalKey(key);
45
+ if (options.ifNotExists) {
46
+ if (await this.has(key)) {
47
+ throw new ConflictError(`Blob already exists: ${key}`);
48
+ }
49
+ }
50
+ const body = await collectToBuffer(value);
51
+ if (options.expectedSha256) {
52
+ const sha256 = await computeSha256(body);
53
+ if (options.expectedSha256 !== sha256) {
54
+ throw new ValidationError(`Checksum mismatch for ${key}`);
55
+ }
56
+ }
57
+ try {
58
+ const response = await this.client.send(new PutObjectCommand({
59
+ Bucket: this.config.bucket,
60
+ Key: objectKey,
61
+ Body: body,
62
+ ContentType: options.contentType,
63
+ Metadata: options.metadata,
64
+ }));
65
+ const metadata = {
66
+ contentType: options.contentType,
67
+ contentLength: body.length,
68
+ etag: response.ETag?.replace(/"/g, ""),
69
+ versionId: response.VersionId,
70
+ custom: options.metadata,
71
+ };
72
+ return {
73
+ key,
74
+ uri: this.uri(key, "s3", response.VersionId ? `versionId=${response.VersionId}` : undefined),
75
+ provider: this.provider,
76
+ sourceId: this.sourceId,
77
+ metadata,
78
+ };
79
+ }
80
+ catch (error) {
81
+ throw this.parseError(error);
82
+ }
83
+ }
84
+ async get(key, options = {}, ...args) {
85
+ const { log } = (await this.logCtx(args, "get", true)).for(this.get);
86
+ log.verbose(`Getting blob ${key}`);
87
+ const objectKey = this.physicalKey(key);
88
+ try {
89
+ const response = await this.client.send(new GetObjectCommand({
90
+ Bucket: this.config.bucket,
91
+ Key: objectKey,
92
+ Range: options.range
93
+ ? `bytes=${options.range.start}-${options.range.end ?? ""}`
94
+ : undefined,
95
+ VersionId: options.versionId,
96
+ }));
97
+ const body = response.Body;
98
+ const metadata = {
99
+ contentType: response.ContentType,
100
+ contentLength: response.ContentLength,
101
+ etag: response.ETag?.replace(/"/g, ""),
102
+ versionId: response.VersionId,
103
+ };
104
+ return {
105
+ key,
106
+ value: toAsyncIterable(body),
107
+ uri: this.uri(key, "s3", response.VersionId ? `versionId=${response.VersionId}` : undefined),
108
+ provider: this.provider,
109
+ sourceId: this.sourceId,
110
+ metadata,
111
+ };
112
+ }
113
+ catch (error) {
114
+ throw this.parseError(error);
115
+ }
116
+ }
117
+ async has(key, ...args) {
118
+ const { log } = (await this.logCtx(args, "has", true)).for(this.has);
119
+ log.verbose(`Checking blob ${key}`);
120
+ try {
121
+ await this.stat(key);
122
+ return true;
123
+ }
124
+ catch (error) {
125
+ if (error instanceof NotFoundError) {
126
+ return false;
127
+ }
128
+ throw error;
129
+ }
130
+ }
131
+ async stat(key, ...args) {
132
+ const { log } = (await this.logCtx(args, "stat", true)).for(this.stat);
133
+ log.verbose(`Statting blob ${key}`);
134
+ const objectKey = this.physicalKey(key);
135
+ try {
136
+ const response = await this.client.send(new HeadObjectCommand({
137
+ Bucket: this.config.bucket,
138
+ Key: objectKey,
139
+ }));
140
+ return {
141
+ contentType: response.ContentType,
142
+ contentLength: response.ContentLength,
143
+ etag: response.ETag?.replace(/"/g, ""),
144
+ versionId: response.VersionId,
145
+ custom: response.Metadata,
146
+ };
147
+ }
148
+ catch (error) {
149
+ throw this.parseError(error);
150
+ }
151
+ }
152
+ async delete(key, ...args) {
153
+ const { log } = (await this.logCtx(args, "delete", true)).for(this.delete);
154
+ log.verbose(`Deleting blob ${key}`);
155
+ const objectKey = this.physicalKey(key);
156
+ try {
157
+ await this.client.send(new DeleteObjectCommand({
158
+ Bucket: this.config.bucket,
159
+ Key: objectKey,
160
+ }));
161
+ }
162
+ catch (error) {
163
+ throw this.parseError(error);
164
+ }
165
+ }
166
+ async copy(fromKey, toKey, options = {}, ...args) {
167
+ const { log } = (await this.logCtx(args, "copy", true)).for(this.copy);
168
+ log.verbose(`Copying blob ${fromKey} to ${toKey}`);
169
+ const from = this.physicalKey(fromKey);
170
+ const to = this.physicalKey(toKey);
171
+ try {
172
+ const response = await this.client.send(new CopyObjectCommand({
173
+ Bucket: this.config.bucket,
174
+ CopySource: `${this.config.bucket}/${from}`,
175
+ Key: to,
176
+ ContentType: options.contentType,
177
+ Metadata: options.metadata,
178
+ }));
179
+ const metadata = {
180
+ contentType: options.contentType,
181
+ etag: response.CopyObjectResult?.ETag?.replace(/"/g, ""),
182
+ versionId: response.VersionId,
183
+ custom: options.metadata,
184
+ };
185
+ return {
186
+ key: toKey,
187
+ uri: this.uri(toKey, "s3"),
188
+ provider: this.provider,
189
+ sourceId: this.sourceId,
190
+ metadata,
191
+ };
192
+ }
193
+ catch (error) {
194
+ throw this.parseError(error);
195
+ }
196
+ }
197
+ async list(options = {}, ...args) {
198
+ const { log } = (await this.logCtx(args, "list", true)).for(this.list);
199
+ log.verbose("Listing blobs");
200
+ const prefix = this.physicalKey(options.prefix ?? "");
201
+ try {
202
+ const response = await this.client.send(new ListObjectsV2Command({
203
+ Bucket: this.config.bucket,
204
+ Prefix: prefix || undefined,
205
+ MaxKeys: options.limit,
206
+ ContinuationToken: options.cursor,
207
+ }));
208
+ const items = (response.Contents ?? []).map((obj) => ({
209
+ key: obj.Key,
210
+ metadata: {
211
+ contentLength: obj.Size,
212
+ etag: obj.ETag?.replace(/"/g, ""),
213
+ },
214
+ }));
215
+ return {
216
+ items,
217
+ cursor: response.IsTruncated ? response.NextContinuationToken : undefined,
218
+ };
219
+ }
220
+ catch (error) {
221
+ throw this.parseError(error);
222
+ }
223
+ }
224
+ async url(key, options = {}, ...args) {
225
+ const { log } = (await this.logCtx(args, "url", true)).for(this.url);
226
+ log.verbose(`Building url for blob ${key}`);
227
+ const objectKey = this.physicalKey(key);
228
+ const operation = options.operation ?? "get";
229
+ const expiresIn = options.expiresInSeconds ?? 300;
230
+ try {
231
+ const command = operation === "put"
232
+ ? new PutObjectCommand({
233
+ Bucket: this.config.bucket,
234
+ Key: objectKey,
235
+ ContentType: options.contentType,
236
+ Metadata: options.metadata,
237
+ })
238
+ : new GetObjectCommand({
239
+ Bucket: this.config.bucket,
240
+ Key: objectKey,
241
+ });
242
+ const url = await getSignedUrl(this.client, command, { expiresIn });
243
+ return {
244
+ url,
245
+ method: operation === "put" ? "PUT" : "GET",
246
+ expiresAt: new Date(Date.now() + expiresIn * 1000),
247
+ headers: options.contentType
248
+ ? { "Content-Type": options.contentType }
249
+ : undefined,
250
+ };
251
+ }
252
+ catch (error) {
253
+ throw this.parseError(error);
254
+ }
255
+ }
256
+ parseError(error) {
257
+ const err = error;
258
+ if (err instanceof NotFoundError ||
259
+ err instanceof ConflictError ||
260
+ err instanceof AuthorizationError ||
261
+ err instanceof ForbiddenError ||
262
+ err instanceof ValidationError ||
263
+ err instanceof ConnectionError ||
264
+ err instanceof UnsupportedError ||
265
+ err instanceof InternalError) {
266
+ return err;
267
+ }
268
+ const message = err.message || err.name || "Unknown error";
269
+ const lower = message.toLowerCase();
270
+ const name = err.name || "";
271
+ const statusCode = err?.$metadata?.httpStatusCode;
272
+ if (name === "NotFound" ||
273
+ name === "NoSuchKey" ||
274
+ statusCode === 404 ||
275
+ lower.includes("not found") ||
276
+ lower.includes("nosuchkey")) {
277
+ return new NotFoundError(err);
278
+ }
279
+ if (name === "BucketAlreadyExists" ||
280
+ name === "BucketAlreadyOwnedByYou" ||
281
+ statusCode === 409 ||
282
+ lower.includes("already exists") ||
283
+ lower.includes("conflict")) {
284
+ return new ConflictError(err);
285
+ }
286
+ if (statusCode === 401 || lower.includes("unauthorized")) {
287
+ return new AuthorizationError(err);
288
+ }
289
+ if (statusCode === 403 || lower.includes("permission") || lower.includes("forbidden")) {
290
+ return new ForbiddenError(err);
291
+ }
292
+ if (statusCode === 429 || lower.includes("rate limit")) {
293
+ return new ConflictError(err);
294
+ }
295
+ if (statusCode === 503 || lower.includes("timeout") || lower.includes("unavailable") || lower.includes("connection")) {
296
+ return new ConnectionError(err);
297
+ }
298
+ return new InternalError(err);
299
+ }
300
+ async ensureBucket(log) {
301
+ try {
302
+ await this.client.send(new CreateBucketCommand({ Bucket: this.config.bucket }));
303
+ log.verbose(`Created bucket ${this.config.bucket}`);
304
+ }
305
+ catch (error) {
306
+ const name = error?.name || "";
307
+ if (name === "BucketAlreadyExists" ||
308
+ name === "BucketAlreadyOwnedByYou" ||
309
+ error?.$metadata?.httpStatusCode === 409) {
310
+ log.verbose(`Bucket ${this.config.bucket} already exists`);
311
+ return;
312
+ }
313
+ throw this.parseError(error);
314
+ }
315
+ }
316
+ }
317
+ //# sourceMappingURL=S3BlobStoreService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S3BlobStoreService.js","sourceRoot":"","sources":["../../../../src/blob/s3/S3BlobStoreService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @module integrations/blob/s3
3
+ * @summary S3-compatible blob store exports.
4
+ * @description Re-exports the S3, MinIO, and R2 blob store services.
5
+ */
6
+ export * from "./S3BlobStoreService.js";
7
+ export * from "./MinioBlobStoreService.js";
8
+ export * from "./R2BlobStoreService.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/blob/s3/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wCAAqC;AACrC,2CAAwC;AACxC,wCAAqC"}
@@ -75,12 +75,12 @@ let DockerComposeService = class DockerComposeService extends ClientBasedService
75
75
  */
76
76
  async waitForHealth(url, options = {}, ...args) {
77
77
  const { log } = await this.logCtx(args, this.waitForHealth, true);
78
- const { maxAttempts = 60, interval = 2000 } = options;
78
+ const { maxAttempts = 60, interval = 2000, requireOk = true } = options;
79
79
  log.info(`Waiting for health check at ${url}`);
80
80
  for (let i = 0; i < maxAttempts; i++) {
81
81
  try {
82
82
  const response = await fetch(url);
83
- if (response.ok) {
83
+ if (!requireOk || response.ok) {
84
84
  log.info(`Health check passed after ${i + 1} attempts`);
85
85
  return true;
86
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DockerComposeService.js","sourceRoot":"","sources":["../../../src/docker/DockerComposeService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DockerComposeService.js","sourceRoot":"","sources":["../../../src/docker/DockerComposeService.ts"],"names":[],"mappings":"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"}
package/lib/esm/index.js CHANGED
@@ -4,8 +4,8 @@
4
4
  * @description Exposes the package utilities and build-time version metadata for `@decaf-ts/integrations`.
5
5
  */
6
6
  export * from "./utils.js";
7
- export const VERSION = "0.1.2";
8
- export const COMMIT = "770d2e2";
9
- export const FULL_VERSION = "0.1.2-770d2e2";
7
+ export const VERSION = "0.1.4";
8
+ export const COMMIT = "96f5884";
9
+ export const FULL_VERSION = "0.1.4-96f5884";
10
10
  export const PACKAGE_NAME = "@decaf-ts/integrations";
11
11
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @module integrations/blob/azure/service
3
+ * @summary Azure Blob storage service.
4
+ * @description Blob store backed by Azure Blob Storage via @azure/storage-blob.
5
+ */
6
+ import { type ContainerClient } from "@azure/storage-blob";
7
+ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
8
+ import { BlobStoreService } from "../core/BlobStoreService.d.cts";
9
+ import type { AzureBlobStoreServiceConfig, BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue } from "../core/BlobTypes.d.cts";
10
+ export declare class AzureBlobStoreService extends BlobStoreService<ContainerClient, AzureBlobStoreServiceConfig> {
11
+ private blobServiceClient;
12
+ initialize(...args: ContextualArgs<any>): Promise<{
13
+ config: AzureBlobStoreServiceConfig;
14
+ client: ContainerClient;
15
+ }>;
16
+ put(key: BlobKey, value: BlobValue, options?: BlobPutOptions, ...args: MaybeContextualArg<any>): Promise<BlobPutResult>;
17
+ get(key: BlobKey, options?: BlobGetOptions, ...args: MaybeContextualArg<any>): Promise<BlobGetResult>;
18
+ has(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<boolean>;
19
+ stat(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<BlobMetadata>;
20
+ delete(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<void>;
21
+ copy(fromKey: BlobKey, toKey: BlobKey, options?: BlobPutOptions, ...args: MaybeContextualArg<any>): Promise<BlobPutResult>;
22
+ list(options?: BlobListOptions, ...args: MaybeContextualArg<any>): Promise<BlobListResult>;
23
+ url(key: BlobKey, options?: BlobUrlOptions, ...args: MaybeContextualArg<any>): Promise<BlobUrlResult>;
24
+ protected parseError(error: unknown): Error;
25
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @module integrations/blob/azure/service
3
+ * @summary Azure Blob storage service.
4
+ * @description Blob store backed by Azure Blob Storage via @azure/storage-blob.
5
+ */
6
+ import { type ContainerClient } from "@azure/storage-blob";
7
+ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
8
+ import { BlobStoreService } from "../core/BlobStoreService.d.mts";
9
+ import type { AzureBlobStoreServiceConfig, BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue } from "../core/BlobTypes.d.mts";
10
+ export declare class AzureBlobStoreService extends BlobStoreService<ContainerClient, AzureBlobStoreServiceConfig> {
11
+ private blobServiceClient;
12
+ initialize(...args: ContextualArgs<any>): Promise<{
13
+ config: AzureBlobStoreServiceConfig;
14
+ client: ContainerClient;
15
+ }>;
16
+ put(key: BlobKey, value: BlobValue, options?: BlobPutOptions, ...args: MaybeContextualArg<any>): Promise<BlobPutResult>;
17
+ get(key: BlobKey, options?: BlobGetOptions, ...args: MaybeContextualArg<any>): Promise<BlobGetResult>;
18
+ has(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<boolean>;
19
+ stat(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<BlobMetadata>;
20
+ delete(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<void>;
21
+ copy(fromKey: BlobKey, toKey: BlobKey, options?: BlobPutOptions, ...args: MaybeContextualArg<any>): Promise<BlobPutResult>;
22
+ list(options?: BlobListOptions, ...args: MaybeContextualArg<any>): Promise<BlobListResult>;
23
+ url(key: BlobKey, options?: BlobUrlOptions, ...args: MaybeContextualArg<any>): Promise<BlobUrlResult>;
24
+ protected parseError(error: unknown): Error;
25
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @module integrations/blob/azure
3
+ * @summary Azure Blob storage exports.
4
+ * @description Re-exports the Azure Blob store service.
5
+ */
6
+ export * from "./AzureBlobStoreService.d.cts";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @module integrations/blob/azure
3
+ * @summary Azure Blob storage exports.
4
+ * @description Re-exports the Azure Blob store service.
5
+ */
6
+ export * from "./AzureBlobStoreService.d.mts";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module integrations/blob/core/errors
3
+ * @summary Blob error translation helpers.
4
+ * @description Re-exports standard DECAF errors used by blob store implementations and provides
5
+ * helper functions for translating provider library errors into the appropriate DECAF error types.
6
+ */
7
+ import { AuthorizationError, ConnectionError, ForbiddenError, UnsupportedError } from "@decaf-ts/core";
8
+ import { BadRequestError, ConflictError, InternalError, NotFoundError, ValidationError } from "@decaf-ts/db-decorators";
9
+ export { AuthorizationError, BadRequestError, ConflictError, ConnectionError, ForbiddenError, InternalError, NotFoundError, UnsupportedError, ValidationError, };
10
+ /**
11
+ * Translates a generic error into a DECAF error based on HTTP status code or message keywords.
12
+ * Used as a fallback by provider parseError methods.
13
+ */
14
+ export declare function translateBlobError(error: Error): Error;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module integrations/blob/core/errors
3
+ * @summary Blob error translation helpers.
4
+ * @description Re-exports standard DECAF errors used by blob store implementations and provides
5
+ * helper functions for translating provider library errors into the appropriate DECAF error types.
6
+ */
7
+ import { AuthorizationError, ConnectionError, ForbiddenError, UnsupportedError } from "@decaf-ts/core";
8
+ import { BadRequestError, ConflictError, InternalError, NotFoundError, ValidationError } from "@decaf-ts/db-decorators";
9
+ export { AuthorizationError, BadRequestError, ConflictError, ConnectionError, ForbiddenError, InternalError, NotFoundError, UnsupportedError, ValidationError, };
10
+ /**
11
+ * Translates a generic error into a DECAF error based on HTTP status code or message keywords.
12
+ * Used as a fallback by provider parseError methods.
13
+ */
14
+ export declare function translateBlobError(error: Error): Error;
@@ -0,0 +1,9 @@
1
+ import type { BlobKey } from "./BlobTypes.d.cts";
2
+ /**
3
+ * Strips leading slashes from a blob key and rejects unsafe path segments.
4
+ */
5
+ export declare function cleanKey(key: BlobKey): string;
6
+ /**
7
+ * Applies the configured prefix (trimmed of leading/trailing slashes) to a cleaned key.
8
+ */
9
+ export declare function physicalKey(key: BlobKey, prefix?: string): string;
@@ -0,0 +1,9 @@
1
+ import type { BlobKey } from "./BlobTypes.d.mts";
2
+ /**
3
+ * Strips leading slashes from a blob key and rejects unsafe path segments.
4
+ */
5
+ export declare function cleanKey(key: BlobKey): string;
6
+ /**
7
+ * Applies the configured prefix (trimmed of leading/trailing slashes) to a cleaned key.
8
+ */
9
+ export declare function physicalKey(key: BlobKey, prefix?: string): string;
@@ -0,0 +1,5 @@
1
+ import type { BlobStoreServiceConfig } from "./BlobTypes.d.cts";
2
+ import type { BlobStoreService } from "./BlobStoreService.d.cts";
3
+ export declare class BlobStoreFactory {
4
+ create<T extends BlobStoreServiceConfig>(config: T): BlobStoreService;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { BlobStoreServiceConfig } from "./BlobTypes.d.mts";
2
+ import type { BlobStoreService } from "./BlobStoreService.d.mts";
3
+ export declare class BlobStoreFactory {
4
+ create<T extends BlobStoreServiceConfig>(config: T): BlobStoreService;
5
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @module integrations/blob/core/service
3
+ * @summary Blob store service abstraction.
4
+ * @description Base abstraction for binary large object backends.
5
+ */
6
+ import { ClientBasedService, type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
7
+ import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobProvider, BlobPutOptions, BlobPutResult, BlobStoreServiceConfig, BlobUrlOptions, BlobUrlResult, BlobValue } from "./BlobTypes.d.cts";
8
+ export declare abstract class BlobStoreService<TClient = unknown, TConfig extends BlobStoreServiceConfig = BlobStoreServiceConfig> extends ClientBasedService<TClient, TConfig> {
9
+ constructor();
10
+ get provider(): BlobProvider;
11
+ get sourceId(): string;
12
+ abstract initialize(...args: ContextualArgs<any>): Promise<{
13
+ config: TConfig;
14
+ client: TClient;
15
+ }>;
16
+ abstract put(key: BlobKey, value: BlobValue, options?: BlobPutOptions, ...args: MaybeContextualArg<any>): Promise<BlobPutResult>;
17
+ abstract get(key: BlobKey, options?: BlobGetOptions, ...args: MaybeContextualArg<any>): Promise<BlobGetResult>;
18
+ abstract has(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<boolean>;
19
+ abstract stat(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<BlobMetadata>;
20
+ abstract delete(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<void>;
21
+ abstract copy(fromKey: BlobKey, toKey: BlobKey, options?: BlobPutOptions, ...args: MaybeContextualArg<any>): Promise<BlobPutResult>;
22
+ abstract list(options?: BlobListOptions, ...args: MaybeContextualArg<any>): Promise<BlobListResult>;
23
+ abstract url(key: BlobKey, options?: BlobUrlOptions, ...args: MaybeContextualArg<any>): Promise<BlobUrlResult>;
24
+ protected physicalKey(key: BlobKey): string;
25
+ protected cleanKey(key: BlobKey): string;
26
+ protected getConfigFromArgs<TExpected extends TConfig>(...args: MaybeContextualArg<any>): TExpected;
27
+ protected uri(key: BlobKey, scheme: string, extra?: string): string;
28
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @module integrations/blob/core/service
3
+ * @summary Blob store service abstraction.
4
+ * @description Base abstraction for binary large object backends.
5
+ */
6
+ import { ClientBasedService, type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
7
+ import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobProvider, BlobPutOptions, BlobPutResult, BlobStoreServiceConfig, BlobUrlOptions, BlobUrlResult, BlobValue } from "./BlobTypes.d.mts";
8
+ export declare abstract class BlobStoreService<TClient = unknown, TConfig extends BlobStoreServiceConfig = BlobStoreServiceConfig> extends ClientBasedService<TClient, TConfig> {
9
+ constructor();
10
+ get provider(): BlobProvider;
11
+ get sourceId(): string;
12
+ abstract initialize(...args: ContextualArgs<any>): Promise<{
13
+ config: TConfig;
14
+ client: TClient;
15
+ }>;
16
+ abstract put(key: BlobKey, value: BlobValue, options?: BlobPutOptions, ...args: MaybeContextualArg<any>): Promise<BlobPutResult>;
17
+ abstract get(key: BlobKey, options?: BlobGetOptions, ...args: MaybeContextualArg<any>): Promise<BlobGetResult>;
18
+ abstract has(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<boolean>;
19
+ abstract stat(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<BlobMetadata>;
20
+ abstract delete(key: BlobKey, ...args: MaybeContextualArg<any>): Promise<void>;
21
+ abstract copy(fromKey: BlobKey, toKey: BlobKey, options?: BlobPutOptions, ...args: MaybeContextualArg<any>): Promise<BlobPutResult>;
22
+ abstract list(options?: BlobListOptions, ...args: MaybeContextualArg<any>): Promise<BlobListResult>;
23
+ abstract url(key: BlobKey, options?: BlobUrlOptions, ...args: MaybeContextualArg<any>): Promise<BlobUrlResult>;
24
+ protected physicalKey(key: BlobKey): string;
25
+ protected cleanKey(key: BlobKey): string;
26
+ protected getConfigFromArgs<TExpected extends TConfig>(...args: MaybeContextualArg<any>): TExpected;
27
+ protected uri(key: BlobKey, scheme: string, extra?: string): string;
28
+ }