@vankyle/storage-azure 0.1.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 (66) hide show
  1. package/README.md +123 -0
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +3 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/metadata/cosmos-metadata-store.d.ts +14 -0
  7. package/dist/metadata/cosmos-metadata-store.d.ts.map +1 -0
  8. package/dist/metadata/cosmos-metadata-store.js +39 -0
  9. package/dist/metadata/cosmos-metadata-store.js.map +1 -0
  10. package/dist/metadata/index.d.ts +5 -0
  11. package/dist/metadata/index.d.ts.map +1 -0
  12. package/dist/metadata/index.js +5 -0
  13. package/dist/metadata/index.js.map +1 -0
  14. package/dist/metadata/mappers/blob-doc.mapper.d.ts +30 -0
  15. package/dist/metadata/mappers/blob-doc.mapper.d.ts.map +1 -0
  16. package/dist/metadata/mappers/blob-doc.mapper.js +28 -0
  17. package/dist/metadata/mappers/blob-doc.mapper.js.map +1 -0
  18. package/dist/metadata/mappers/file-doc.mapper.d.ts +33 -0
  19. package/dist/metadata/mappers/file-doc.mapper.d.ts.map +1 -0
  20. package/dist/metadata/mappers/file-doc.mapper.js +31 -0
  21. package/dist/metadata/mappers/file-doc.mapper.js.map +1 -0
  22. package/dist/metadata/mappers/index.d.ts +4 -0
  23. package/dist/metadata/mappers/index.d.ts.map +1 -0
  24. package/dist/metadata/mappers/index.js +4 -0
  25. package/dist/metadata/mappers/index.js.map +1 -0
  26. package/dist/metadata/mappers/upload-session-doc.mapper.d.ts +40 -0
  27. package/dist/metadata/mappers/upload-session-doc.mapper.d.ts.map +1 -0
  28. package/dist/metadata/mappers/upload-session-doc.mapper.js +38 -0
  29. package/dist/metadata/mappers/upload-session-doc.mapper.js.map +1 -0
  30. package/dist/metadata/stores/cosmos-blob-store.d.ts +16 -0
  31. package/dist/metadata/stores/cosmos-blob-store.d.ts.map +1 -0
  32. package/dist/metadata/stores/cosmos-blob-store.js +109 -0
  33. package/dist/metadata/stores/cosmos-blob-store.js.map +1 -0
  34. package/dist/metadata/stores/cosmos-file-store.d.ts +15 -0
  35. package/dist/metadata/stores/cosmos-file-store.d.ts.map +1 -0
  36. package/dist/metadata/stores/cosmos-file-store.js +114 -0
  37. package/dist/metadata/stores/cosmos-file-store.js.map +1 -0
  38. package/dist/metadata/stores/cosmos-upload-session-store.d.ts +14 -0
  39. package/dist/metadata/stores/cosmos-upload-session-store.d.ts.map +1 -0
  40. package/dist/metadata/stores/cosmos-upload-session-store.js +105 -0
  41. package/dist/metadata/stores/cosmos-upload-session-store.js.map +1 -0
  42. package/dist/metadata/stores/index.d.ts +4 -0
  43. package/dist/metadata/stores/index.d.ts.map +1 -0
  44. package/dist/metadata/stores/index.js +4 -0
  45. package/dist/metadata/stores/index.js.map +1 -0
  46. package/dist/storage/azure-blob-storage.d.ts +23 -0
  47. package/dist/storage/azure-blob-storage.d.ts.map +1 -0
  48. package/dist/storage/azure-blob-storage.js +255 -0
  49. package/dist/storage/azure-blob-storage.js.map +1 -0
  50. package/dist/storage/index.d.ts +2 -0
  51. package/dist/storage/index.d.ts.map +1 -0
  52. package/dist/storage/index.js +2 -0
  53. package/dist/storage/index.js.map +1 -0
  54. package/dist/types/azure-options.d.ts +9 -0
  55. package/dist/types/azure-options.d.ts.map +1 -0
  56. package/dist/types/azure-options.js +2 -0
  57. package/dist/types/azure-options.js.map +1 -0
  58. package/dist/types/cosmos-options.d.ts +7 -0
  59. package/dist/types/cosmos-options.d.ts.map +1 -0
  60. package/dist/types/cosmos-options.js +2 -0
  61. package/dist/types/cosmos-options.js.map +1 -0
  62. package/dist/types/index.d.ts +3 -0
  63. package/dist/types/index.d.ts.map +1 -0
  64. package/dist/types/index.js +2 -0
  65. package/dist/types/index.js.map +1 -0
  66. package/package.json +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-file-store.d.ts","sourceRoot":"","sources":["../../../src/metadata/stores/cosmos-file-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AASnE,qBAAa,eAAgB,YAAW,UAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAE3C,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAU9C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB7D,aAAa,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmBlE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAUxD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAapD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAazE"}
@@ -0,0 +1,114 @@
1
+ import { FileStatus } from "@vankyle-hub/storage-core";
2
+ import { fileDocToModel, fileVersionDocToModel, } from "../mappers/file-doc.mapper.js";
3
+ export class CosmosFileStore {
4
+ container;
5
+ constructor(container) {
6
+ this.container = container;
7
+ }
8
+ async createFile(input) {
9
+ const now = new Date().toISOString();
10
+ const doc = {
11
+ id: input.id,
12
+ type: "file",
13
+ ownerId: input.ownerId,
14
+ displayName: input.displayName,
15
+ mimeType: input.mimeType,
16
+ size: input.size,
17
+ parentId: input.parentId,
18
+ status: FileStatus.Active,
19
+ createdAt: now,
20
+ updatedAt: now,
21
+ metadata: input.metadata,
22
+ };
23
+ const { resource } = await this.container.items.create(doc);
24
+ return fileDocToModel(resource);
25
+ }
26
+ async getFile(id) {
27
+ try {
28
+ const { resource } = await this.container.item(id, id).read();
29
+ if (!resource || resource.type !== "file")
30
+ return undefined;
31
+ return fileDocToModel(resource);
32
+ }
33
+ catch {
34
+ return undefined;
35
+ }
36
+ }
37
+ async updateFile(id, input) {
38
+ const { resource: existing } = await this.container.item(id, id).read();
39
+ if (!existing) {
40
+ throw new Error(`File not found: ${id}`);
41
+ }
42
+ const updated = {
43
+ ...existing,
44
+ updatedAt: new Date().toISOString(),
45
+ };
46
+ if (input.displayName !== undefined)
47
+ updated.displayName = input.displayName;
48
+ if (input.currentVersionId !== undefined)
49
+ updated.currentVersionId = input.currentVersionId;
50
+ if (input.size !== undefined)
51
+ updated.size = input.size;
52
+ if (input.mimeType !== undefined)
53
+ updated.mimeType = input.mimeType;
54
+ if (input.status !== undefined)
55
+ updated.status = input.status;
56
+ if (input.deletedAt !== undefined)
57
+ updated.deletedAt = input.deletedAt.toISOString();
58
+ if (input.metadata !== undefined)
59
+ updated.metadata = input.metadata;
60
+ const { resource } = await this.container.item(id, id).replace(updated);
61
+ return fileDocToModel(resource);
62
+ }
63
+ async createVersion(input) {
64
+ const doc = {
65
+ id: input.id,
66
+ type: "file-version",
67
+ fileId: input.fileId,
68
+ blobId: input.blobId,
69
+ version: input.version,
70
+ size: input.size,
71
+ mimeType: input.mimeType,
72
+ sha256: input.sha256,
73
+ createdAt: new Date().toISOString(),
74
+ createdBy: input.createdBy,
75
+ metadata: input.metadata,
76
+ };
77
+ const { resource } = await this.container.items.create(doc);
78
+ return fileVersionDocToModel(resource);
79
+ }
80
+ async getVersion(id) {
81
+ try {
82
+ const { resource } = await this.container.item(id, id).read();
83
+ if (!resource || resource.type !== "file-version")
84
+ return undefined;
85
+ return fileVersionDocToModel(resource);
86
+ }
87
+ catch {
88
+ return undefined;
89
+ }
90
+ }
91
+ async listVersions(fileId) {
92
+ const query = {
93
+ query: "SELECT * FROM c WHERE c.type = 'file-version' AND c.fileId = @fileId ORDER BY c.version",
94
+ parameters: [{ name: "@fileId", value: fileId }],
95
+ };
96
+ const { resources } = await this.container.items
97
+ .query(query)
98
+ .fetchAll();
99
+ return resources.map(fileVersionDocToModel);
100
+ }
101
+ async getLatestVersion(fileId) {
102
+ const query = {
103
+ query: "SELECT TOP 1 * FROM c WHERE c.type = 'file-version' AND c.fileId = @fileId ORDER BY c.version DESC",
104
+ parameters: [{ name: "@fileId", value: fileId }],
105
+ };
106
+ const { resources } = await this.container.items
107
+ .query(query)
108
+ .fetchAll();
109
+ if (resources.length === 0)
110
+ return undefined;
111
+ return fileVersionDocToModel(resources[0]);
112
+ }
113
+ }
114
+ //# sourceMappingURL=cosmos-file-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-file-store.js","sourceRoot":"","sources":["../../../src/metadata/stores/cosmos-file-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Container } from "@azure/cosmos";
2
+ import type { IUploadSessionStore, CreateUploadSessionInput, UpdateUploadSessionInput, CreateUploadedPartInput } from "@vankyle-hub/storage-core";
3
+ import type { UploadSession, UploadedPart } from "@vankyle-hub/storage-core";
4
+ export declare class CosmosUploadSessionStore implements IUploadSessionStore {
5
+ private readonly container;
6
+ constructor(container: Container);
7
+ createSession(input: CreateUploadSessionInput): Promise<UploadSession>;
8
+ getSession(id: string): Promise<UploadSession | undefined>;
9
+ updateSession(id: string, input: UpdateUploadSessionInput): Promise<UploadSession>;
10
+ addPart(input: CreateUploadedPartInput): Promise<UploadedPart>;
11
+ getPart(sessionId: string, partNumber: number): Promise<UploadedPart | undefined>;
12
+ listParts(sessionId: string): Promise<UploadedPart[]>;
13
+ }
14
+ //# sourceMappingURL=cosmos-upload-session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-upload-session-store.d.ts","sourceRoot":"","sources":["../../../src/metadata/stores/cosmos-upload-session-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAS7E,qBAAa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAE3C,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC;IA4BtE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAU1D,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,aAAa,CAAC;IAyBnB,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAkB9D,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAe9B,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAU5D"}
@@ -0,0 +1,105 @@
1
+ import { UploadSessionStatus } from "@vankyle-hub/storage-core";
2
+ import { uploadSessionDocToModel, uploadedPartDocToModel, } from "../mappers/upload-session-doc.mapper.js";
3
+ export class CosmosUploadSessionStore {
4
+ container;
5
+ constructor(container) {
6
+ this.container = container;
7
+ }
8
+ async createSession(input) {
9
+ const now = new Date().toISOString();
10
+ const doc = {
11
+ id: input.id,
12
+ type: "upload-session",
13
+ provider: input.provider,
14
+ bucket: input.bucket,
15
+ objectKey: input.objectKey,
16
+ mode: input.mode,
17
+ status: UploadSessionStatus.Pending,
18
+ fileName: input.fileName,
19
+ mimeType: input.mimeType,
20
+ expectedSize: input.expectedSize,
21
+ expectedSha256: input.expectedSha256,
22
+ providerUploadId: input.providerUploadId,
23
+ providerSessionData: input.providerSessionData,
24
+ createdBy: input.createdBy,
25
+ ownerId: input.ownerId,
26
+ metadata: input.metadata,
27
+ createdAt: now,
28
+ updatedAt: now,
29
+ expiresAt: input.expiresAt?.toISOString(),
30
+ };
31
+ const { resource } = await this.container.items.create(doc);
32
+ return uploadSessionDocToModel(resource);
33
+ }
34
+ async getSession(id) {
35
+ try {
36
+ const { resource } = await this.container.item(id, id).read();
37
+ if (!resource || resource.type !== "upload-session")
38
+ return undefined;
39
+ return uploadSessionDocToModel(resource);
40
+ }
41
+ catch {
42
+ return undefined;
43
+ }
44
+ }
45
+ async updateSession(id, input) {
46
+ const { resource: existing } = await this.container.item(id, id).read();
47
+ if (!existing) {
48
+ throw new Error(`UploadSession not found: ${id}`);
49
+ }
50
+ const updated = {
51
+ ...existing,
52
+ updatedAt: new Date().toISOString(),
53
+ };
54
+ if (input.status !== undefined)
55
+ updated.status = input.status;
56
+ if (input.providerUploadId !== undefined)
57
+ updated.providerUploadId = input.providerUploadId;
58
+ if (input.providerSessionData !== undefined)
59
+ updated.providerSessionData = input.providerSessionData;
60
+ if (input.completedAt !== undefined)
61
+ updated.completedAt = input.completedAt.toISOString();
62
+ if (input.abortedAt !== undefined)
63
+ updated.abortedAt = input.abortedAt.toISOString();
64
+ const { resource } = await this.container.item(id, id).replace(updated);
65
+ return uploadSessionDocToModel(resource);
66
+ }
67
+ async addPart(input) {
68
+ const doc = {
69
+ id: input.id,
70
+ type: "uploaded-part",
71
+ sessionId: input.sessionId,
72
+ partNumber: input.partNumber,
73
+ size: input.size,
74
+ etag: input.etag,
75
+ checksumSha256: input.checksumSha256,
76
+ providerPartId: input.providerPartId,
77
+ providerPartData: input.providerPartData,
78
+ uploadedAt: new Date().toISOString(),
79
+ };
80
+ const { resource } = await this.container.items.create(doc);
81
+ return uploadedPartDocToModel(resource);
82
+ }
83
+ async getPart(sessionId, partNumber) {
84
+ const query = {
85
+ query: "SELECT * FROM c WHERE c.type = 'uploaded-part' AND c.sessionId = @sessionId AND c.partNumber = @partNumber",
86
+ parameters: [
87
+ { name: "@sessionId", value: sessionId },
88
+ { name: "@partNumber", value: partNumber },
89
+ ],
90
+ };
91
+ const { resources } = await this.container.items.query(query).fetchAll();
92
+ if (resources.length === 0)
93
+ return undefined;
94
+ return uploadedPartDocToModel(resources[0]);
95
+ }
96
+ async listParts(sessionId) {
97
+ const query = {
98
+ query: "SELECT * FROM c WHERE c.type = 'uploaded-part' AND c.sessionId = @sessionId ORDER BY c.partNumber",
99
+ parameters: [{ name: "@sessionId", value: sessionId }],
100
+ };
101
+ const { resources } = await this.container.items.query(query).fetchAll();
102
+ return resources.map(uploadedPartDocToModel);
103
+ }
104
+ }
105
+ //# sourceMappingURL=cosmos-upload-session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-upload-session-store.js","sourceRoot":"","sources":["../../../src/metadata/stores/cosmos-upload-session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { CosmosUploadSessionStore } from "./cosmos-upload-session-store.js";
2
+ export { CosmosBlobStore } from "./cosmos-blob-store.js";
3
+ export { CosmosFileStore } from "./cosmos-file-store.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metadata/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { CosmosUploadSessionStore } from "./cosmos-upload-session-store.js";
2
+ export { CosmosBlobStore } from "./cosmos-blob-store.js";
3
+ export { CosmosFileStore } from "./cosmos-file-store.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metadata/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type IStorage, type StorageCapabilities, type PutObjectInput, type PutObjectResult, type GetObjectInput, type GetObjectResult, type HeadObjectInput, type HeadObjectResult, type DeleteObjectInput, type InitUploadSessionInput, type InitUploadSessionResult, type UploadPartInput, type UploadPartResult, type CompleteUploadSessionInput, type CompleteUploadSessionResult, type AbortUploadSessionInput, type CreateReadUrlInput, type CreatePutUrlInput, type SignedAccess } from "@vankyle-hub/storage-core";
2
+ import type { AzureBlobStorageOptions } from "../types/azure-options.js";
3
+ export declare class AzureBlobStorage implements IStorage {
4
+ readonly provider: "azure-blob";
5
+ readonly capabilities: StorageCapabilities;
6
+ private readonly serviceClient;
7
+ private readonly credential;
8
+ private readonly defaultSasExpiresIn;
9
+ constructor(options: AzureBlobStorageOptions);
10
+ private getContainerClient;
11
+ private getBlockBlobClient;
12
+ putObject(input: PutObjectInput): Promise<PutObjectResult>;
13
+ getObject(input: GetObjectInput): Promise<GetObjectResult>;
14
+ headObject(input: HeadObjectInput): Promise<HeadObjectResult>;
15
+ deleteObject(input: DeleteObjectInput): Promise<void>;
16
+ initUploadSession(_input: InitUploadSessionInput): Promise<InitUploadSessionResult>;
17
+ uploadPart(input: UploadPartInput): Promise<UploadPartResult>;
18
+ completeUploadSession(input: CompleteUploadSessionInput): Promise<CompleteUploadSessionResult>;
19
+ abortUploadSession(_input: AbortUploadSessionInput): Promise<void>;
20
+ createReadUrl(input: CreateReadUrlInput): Promise<SignedAccess>;
21
+ createPutUrl(input: CreatePutUrlInput): Promise<SignedAccess>;
22
+ }
23
+ //# sourceMappingURL=azure-blob-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-blob-storage.d.ts","sourceRoot":"","sources":["../../src/storage/azure-blob-storage.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAElB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAIzE,qBAAa,gBAAiB,YAAW,QAAQ;IAC/C,QAAQ,CAAC,QAAQ,eAA6B;IAC9C,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAKxC;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyC;IACpE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAEjC,OAAO,EAAE,uBAAuB;IAuB5C,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,kBAAkB;IAIpB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IA6B1D,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAiD1D,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuB7D,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,iBAAiB,CACrB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,uBAAuB,CAAC;IAQ7B,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiB7D,qBAAqB,CACzB,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,2BAA2B,CAAC;IAejC,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC/D,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;CA6BpE"}
@@ -0,0 +1,255 @@
1
+ import { BlobServiceClient, StorageSharedKeyCredential, generateBlobSASQueryParameters, BlobSASPermissions, } from "@azure/storage-blob";
2
+ import { StorageProvider, generateId, } from "@vankyle-hub/storage-core";
3
+ import { StorageError, StorageObjectNotFoundError, } from "@vankyle-hub/storage-shared";
4
+ const DEFAULT_EXPIRES_IN = 3600;
5
+ export class AzureBlobStorage {
6
+ provider = StorageProvider.AzureBlob;
7
+ capabilities = {
8
+ multipartUpload: true,
9
+ signedReadUrl: true,
10
+ signedPutUrl: true,
11
+ signedPartUrl: false,
12
+ };
13
+ serviceClient;
14
+ credential;
15
+ defaultSasExpiresIn;
16
+ constructor(options) {
17
+ this.defaultSasExpiresIn = options.defaultSasExpiresInSeconds ?? DEFAULT_EXPIRES_IN;
18
+ if (options.blobServiceClient) {
19
+ this.serviceClient = options.blobServiceClient;
20
+ }
21
+ else if (options.connectionString) {
22
+ this.serviceClient = BlobServiceClient.fromConnectionString(options.connectionString);
23
+ }
24
+ else if (options.accountName && options.accountKey) {
25
+ this.credential = new StorageSharedKeyCredential(options.accountName, options.accountKey);
26
+ this.serviceClient = new BlobServiceClient(`https://${options.accountName}.blob.core.windows.net`, this.credential);
27
+ }
28
+ else {
29
+ throw new StorageError("AzureBlobStorage requires connectionString, accountName+accountKey, or blobServiceClient");
30
+ }
31
+ }
32
+ getContainerClient(bucket) {
33
+ return this.serviceClient.getContainerClient(bucket);
34
+ }
35
+ getBlockBlobClient(bucket, key) {
36
+ return this.getContainerClient(bucket).getBlockBlobClient(key);
37
+ }
38
+ async putObject(input) {
39
+ const client = this.getBlockBlobClient(input.bucket, input.objectKey);
40
+ if (input.body instanceof Uint8Array) {
41
+ const uploadOptions = {};
42
+ if (input.contentType) {
43
+ uploadOptions.blobHTTPHeaders = { blobContentType: input.contentType };
44
+ }
45
+ if (input.metadata) {
46
+ uploadOptions.metadata = input.metadata;
47
+ }
48
+ const result = await client.uploadData(input.body, uploadOptions);
49
+ return { etag: result.etag };
50
+ }
51
+ const buffer = await streamToBuffer(input.body);
52
+ const uploadOptions = {};
53
+ if (input.contentType) {
54
+ uploadOptions.blobHTTPHeaders = { blobContentType: input.contentType };
55
+ }
56
+ if (input.metadata) {
57
+ uploadOptions.metadata = input.metadata;
58
+ }
59
+ const result = await client.uploadData(buffer, uploadOptions);
60
+ return { etag: result.etag };
61
+ }
62
+ async getObject(input) {
63
+ const client = this.getBlockBlobClient(input.bucket, input.objectKey);
64
+ try {
65
+ const result = await client.download(input.range?.start, input.range?.end !== undefined
66
+ ? input.range.end - (input.range?.start ?? 0) + 1
67
+ : undefined);
68
+ if (!result.readableStreamBody && !result.blobBody) {
69
+ throw new StorageObjectNotFoundError(input.bucket, input.objectKey);
70
+ }
71
+ // In Node.js, readableStreamBody is available
72
+ const nodeStream = result.readableStreamBody;
73
+ let body;
74
+ if (nodeStream) {
75
+ body = nodeReadableToWebStream(nodeStream);
76
+ }
77
+ else {
78
+ const blob = await result.blobBody;
79
+ const arrayBuffer = await blob.arrayBuffer();
80
+ body = new ReadableStream({
81
+ start(controller) {
82
+ controller.enqueue(new Uint8Array(arrayBuffer));
83
+ controller.close();
84
+ },
85
+ });
86
+ }
87
+ return {
88
+ body,
89
+ contentType: result.contentType,
90
+ contentLength: result.contentLength,
91
+ etag: result.etag,
92
+ metadata: result.metadata,
93
+ };
94
+ }
95
+ catch (error) {
96
+ if (isBlobNotFoundError(error)) {
97
+ throw new StorageObjectNotFoundError(input.bucket, input.objectKey, {
98
+ cause: error,
99
+ });
100
+ }
101
+ throw new StorageError("Failed to get object", { cause: error });
102
+ }
103
+ }
104
+ async headObject(input) {
105
+ const client = this.getBlockBlobClient(input.bucket, input.objectKey);
106
+ try {
107
+ const props = await client.getProperties();
108
+ return {
109
+ contentType: props.contentType,
110
+ contentLength: props.contentLength,
111
+ etag: props.etag,
112
+ lastModified: props.lastModified,
113
+ metadata: props.metadata,
114
+ };
115
+ }
116
+ catch (error) {
117
+ if (isBlobNotFoundError(error)) {
118
+ throw new StorageObjectNotFoundError(input.bucket, input.objectKey, {
119
+ cause: error,
120
+ });
121
+ }
122
+ throw new StorageError("Failed to head object", { cause: error });
123
+ }
124
+ }
125
+ async deleteObject(input) {
126
+ const client = this.getBlockBlobClient(input.bucket, input.objectKey);
127
+ await client.deleteIfExists();
128
+ }
129
+ async initUploadSession(_input) {
130
+ // Azure block uploads don't need to be "created" beforehand.
131
+ // We generate a session ID for tracking block IDs.
132
+ return {
133
+ providerUploadId: generateId(),
134
+ };
135
+ }
136
+ async uploadPart(input) {
137
+ const client = this.getBlockBlobClient(input.bucket, input.objectKey);
138
+ const blockId = encodeBlockId(input.partNumber);
139
+ const body = input.body instanceof Uint8Array
140
+ ? input.body
141
+ : await streamToBuffer(input.body);
142
+ await client.stageBlock(blockId, body, body.byteLength);
143
+ return {
144
+ etag: blockId,
145
+ partNumber: input.partNumber,
146
+ size: body.byteLength,
147
+ };
148
+ }
149
+ async completeUploadSession(input) {
150
+ const client = this.getBlockBlobClient(input.bucket, input.objectKey);
151
+ const blockIds = input.parts
152
+ .slice()
153
+ .sort((a, b) => a.partNumber - b.partNumber)
154
+ .map((p) => encodeBlockId(p.partNumber));
155
+ const result = await client.commitBlockList(blockIds);
156
+ return {
157
+ etag: result.etag,
158
+ };
159
+ }
160
+ async abortUploadSession(_input) {
161
+ // Azure doesn't have a dedicated abort — uncommitted blocks
162
+ // are automatically cleaned up after a timeout.
163
+ }
164
+ async createReadUrl(input) {
165
+ if (!this.credential) {
166
+ throw new StorageError("SAS generation requires StorageSharedKeyCredential (accountName + accountKey)");
167
+ }
168
+ const expiresIn = input.expiresInSeconds ?? this.defaultSasExpiresIn;
169
+ const expiresAt = new Date(Date.now() + expiresIn * 1000);
170
+ const client = this.getBlockBlobClient(input.bucket, input.objectKey);
171
+ const sasValues = {
172
+ containerName: input.bucket,
173
+ blobName: input.objectKey,
174
+ permissions: BlobSASPermissions.parse("r"),
175
+ expiresOn: expiresAt,
176
+ };
177
+ if (input.responseContentType !== undefined) {
178
+ sasValues.contentType = input.responseContentType;
179
+ }
180
+ if (input.responseContentDisposition !== undefined) {
181
+ sasValues.contentDisposition = input.responseContentDisposition;
182
+ }
183
+ const sas = generateBlobSASQueryParameters(sasValues, this.credential);
184
+ return {
185
+ url: `${client.url}?${sas.toString()}`,
186
+ method: "GET",
187
+ expiresAt,
188
+ };
189
+ }
190
+ async createPutUrl(input) {
191
+ if (!this.credential) {
192
+ throw new StorageError("SAS generation requires StorageSharedKeyCredential (accountName + accountKey)");
193
+ }
194
+ const expiresIn = input.expiresInSeconds ?? this.defaultSasExpiresIn;
195
+ const expiresAt = new Date(Date.now() + expiresIn * 1000);
196
+ const client = this.getBlockBlobClient(input.bucket, input.objectKey);
197
+ const putSasValues = {
198
+ containerName: input.bucket,
199
+ blobName: input.objectKey,
200
+ permissions: BlobSASPermissions.parse("cw"),
201
+ expiresOn: expiresAt,
202
+ };
203
+ if (input.contentType !== undefined) {
204
+ putSasValues.contentType = input.contentType;
205
+ }
206
+ const sas = generateBlobSASQueryParameters(putSasValues, this.credential);
207
+ return {
208
+ url: `${client.url}?${sas.toString()}`,
209
+ method: "PUT",
210
+ expiresAt,
211
+ };
212
+ }
213
+ }
214
+ function encodeBlockId(partNumber) {
215
+ // Azure requires base64-encoded block IDs, all same length
216
+ const padded = String(partNumber).padStart(6, "0");
217
+ return Buffer.from(padded).toString("base64");
218
+ }
219
+ async function streamToBuffer(stream) {
220
+ const reader = stream.getReader();
221
+ const chunks = [];
222
+ let totalLength = 0;
223
+ for (;;) {
224
+ const { done, value } = await reader.read();
225
+ if (done)
226
+ break;
227
+ chunks.push(value);
228
+ totalLength += value.byteLength;
229
+ }
230
+ const result = new Uint8Array(totalLength);
231
+ let offset = 0;
232
+ for (const chunk of chunks) {
233
+ result.set(chunk, offset);
234
+ offset += chunk.byteLength;
235
+ }
236
+ return result;
237
+ }
238
+ function nodeReadableToWebStream(nodeStream) {
239
+ return new ReadableStream({
240
+ start(controller) {
241
+ nodeStream.on("data", (chunk) => {
242
+ controller.enqueue(new Uint8Array(chunk));
243
+ });
244
+ nodeStream.on("end", () => controller.close());
245
+ nodeStream.on("error", (err) => controller.error(err));
246
+ },
247
+ });
248
+ }
249
+ function isBlobNotFoundError(error) {
250
+ return (typeof error === "object" &&
251
+ error !== null &&
252
+ "statusCode" in error &&
253
+ error.statusCode === 404);
254
+ }
255
+ //# sourceMappingURL=azure-blob-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-blob-storage.js","sourceRoot":"","sources":["../../src/storage/azure-blob-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { AzureBlobStorage } from "./azure-blob-storage.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AzureBlobStorage } from "./azure-blob-storage.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { BlobServiceClient } from "@azure/storage-blob";
2
+ export interface AzureBlobStorageOptions {
3
+ readonly connectionString?: string | undefined;
4
+ readonly accountName?: string | undefined;
5
+ readonly accountKey?: string | undefined;
6
+ readonly blobServiceClient?: BlobServiceClient | undefined;
7
+ readonly defaultSasExpiresInSeconds?: number | undefined;
8
+ }
9
+ //# sourceMappingURL=azure-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-options.d.ts","sourceRoot":"","sources":["../../src/types/azure-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=azure-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-options.js","sourceRoot":"","sources":["../../src/types/azure-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface CosmosMetadataOptions {
2
+ readonly connectionString?: string | undefined;
3
+ readonly endpoint?: string | undefined;
4
+ readonly key?: string | undefined;
5
+ readonly databaseId: string;
6
+ }
7
+ //# sourceMappingURL=cosmos-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-options.d.ts","sourceRoot":"","sources":["../../src/types/cosmos-options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cosmos-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-options.js","sourceRoot":"","sources":["../../src/types/cosmos-options.ts"],"names":[],"mappings":""}