rac-delta 1.0.2 → 1.0.4

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.
@@ -6,8 +6,8 @@ export declare class SSHStorageAdapter extends HashStorageAdapter {
6
6
  private readonly config;
7
7
  private sftp;
8
8
  private client;
9
- constructor(config: SSHStorageConfig);
10
9
  private connecting;
10
+ constructor(config: SSHStorageConfig);
11
11
  private connect;
12
12
  private resolveChunkPath;
13
13
  private resolveIndexPath;
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/ssh-storage-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,qBAAa,iBAAkB,SAAQ,kBAAkB;IAI3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,MAAM,CAAuB;gBAER,MAAM,EAAE,gBAAgB;IAIrD,OAAO,CAAC,UAAU,CAAqC;YAEzC,OAAO;IA0CrB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IAKlB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAe/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuBpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAkC/C,OAAO,CAAC,UAAU;IAaZ,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAehB,mBAAmB;IAgBjC,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;CAKvB"}
1
+ {"version":3,"file":"ssh-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/ssh-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,qBAAa,iBAAkB,SAAQ,kBAAkB;IAM3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,UAAU,CAA6B;gBAElB,MAAM,EAAE,gBAAgB;YAIvC,OAAO;IA4CrB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IAKlB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAe/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuBpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAkC/C,OAAO,CAAC,UAAU;IAaZ,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAehB,mBAAmB;IAgBjC,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;CAKvB"}
@@ -1,7 +1,39 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.SSHStorageAdapter = void 0;
4
- const ssh2_1 = require("ssh2");
5
37
  const stream_1 = require("stream");
6
38
  const path_1 = require("path");
7
39
  const adapters_1 = require("../../core/adapters");
@@ -9,11 +41,11 @@ class SSHStorageAdapter extends adapters_1.HashStorageAdapter {
9
41
  config;
10
42
  sftp = null;
11
43
  client = null;
44
+ connecting = null;
12
45
  constructor(config) {
13
46
  super();
14
47
  this.config = config;
15
48
  }
16
- connecting = null;
17
49
  async connect() {
18
50
  if (this.sftp) {
19
51
  return this.sftp;
@@ -21,8 +53,9 @@ class SSHStorageAdapter extends adapters_1.HashStorageAdapter {
21
53
  if (this.connecting) {
22
54
  return this.connecting;
23
55
  }
56
+ const { Client } = await Promise.resolve().then(() => __importStar(require('ssh2')));
24
57
  this.connecting = new Promise((resolve, reject) => {
25
- const client = new ssh2_1.Client();
58
+ const client = new Client();
26
59
  client
27
60
  .on('ready', () => {
28
61
  client.sftp((err, sftp) => {
@@ -1,11 +1,11 @@
1
1
  import { StorageConfig } from '../../core/config';
2
- import { AzureBlobStorageAdapter } from '../adapters/azure-blob-storage-adapter';
3
- import { DefaultUrlStorageAdapter } from '../adapters/url-storage-adapter';
4
2
  import { LocalStorageAdapter } from '../adapters/local-storage-adapter';
5
3
  import { HTTPStorageAdapter } from '../adapters/http-storage-adapter';
6
- import { GCSStorageAdapter } from '../adapters/gcs-storage-adapter';
7
- import { SSHStorageAdapter } from '../adapters/ssh-storage-adapter';
8
- import { S3StorageAdapter } from '../adapters/s3-storage-adapter';
4
+ import { DefaultUrlStorageAdapter } from '../adapters/url-storage-adapter';
5
+ import type { AzureBlobStorageAdapter } from '../adapters/azure-blob-storage-adapter';
6
+ import type { GCSStorageAdapter } from '../adapters/gcs-storage-adapter';
7
+ import type { SSHStorageAdapter } from '../adapters/ssh-storage-adapter';
8
+ import type { S3StorageAdapter } from '../adapters/s3-storage-adapter';
9
9
  export type StorageAdapterMap = {
10
10
  local: LocalStorageAdapter;
11
11
  http: HTTPStorageAdapter;
@@ -35,7 +35,7 @@ type StorageAdapterByConfigType<C extends StorageConfig> = C extends {
35
35
  type: 'url';
36
36
  } ? DefaultUrlStorageAdapter : never;
37
37
  export declare class StorageAdapterFactory {
38
- static create<C extends StorageConfig>(config: C): StorageAdapterByConfigType<C>;
38
+ static create<C extends StorageConfig>(config: C): Promise<StorageAdapterByConfigType<C>>;
39
39
  }
40
40
  export {};
41
41
  //# sourceMappingURL=storage-adpater-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-adpater-factory.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/factories/storage-adpater-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,kBAAkB,CAAC;IACzB,EAAE,EAAE,gBAAgB,CAAC;IACrB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,GAAG,EAAE,iBAAiB,CAAC;IACvB,GAAG,EAAE,iBAAiB,CAAC;IACvB,GAAG,EAAE,wBAAwB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACvF,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAC5B,KAAK,CAAC;AAEV,KAAK,0BAA0B,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAClF,mBAAmB,GACnB,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACxB,kBAAkB,GAClB,CAAC,SAAS;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACtB,gBAAgB,GAChB,CAAC,SAAS;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACzB,uBAAuB,GACvB,CAAC,SAAS;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACvB,iBAAiB,GACjB,CAAC,SAAS;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACvB,iBAAiB,GACjB,CAAC,SAAS;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACvB,wBAAwB,GACxB,KAAK,CAAC;AAEtB,qBAAa,qBAAqB;IAChC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC;CAoBjF"}
1
+ {"version":3,"file":"storage-adpater-factory.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/factories/storage-adpater-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,kBAAkB,CAAC;IACzB,EAAE,EAAE,gBAAgB,CAAC;IACrB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,GAAG,EAAE,iBAAiB,CAAC;IACvB,GAAG,EAAE,iBAAiB,CAAC;IACvB,GAAG,EAAE,wBAAwB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACvF,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAC5B,KAAK,CAAC;AAEV,KAAK,0BAA0B,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAClF,mBAAmB,GACnB,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACxB,kBAAkB,GAClB,CAAC,SAAS;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACtB,gBAAgB,GAChB,CAAC,SAAS;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACzB,uBAAuB,GACvB,CAAC,SAAS;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACvB,iBAAiB,GACjB,CAAC,SAAS;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACvB,iBAAiB,GACjB,CAAC,SAAS;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACvB,wBAAwB,GACxB,KAAK,CAAC;AAEtB,qBAAa,qBAAqB;WACnB,MAAM,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;CAgEhG"}
@@ -1,30 +1,94 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.StorageAdapterFactory = void 0;
4
- const azure_blob_storage_adapter_1 = require("../adapters/azure-blob-storage-adapter");
5
- const url_storage_adapter_1 = require("../adapters/url-storage-adapter");
6
37
  const local_storage_adapter_1 = require("../adapters/local-storage-adapter");
7
38
  const http_storage_adapter_1 = require("../adapters/http-storage-adapter");
8
- const gcs_storage_adapter_1 = require("../adapters/gcs-storage-adapter");
9
- const ssh_storage_adapter_1 = require("../adapters/ssh-storage-adapter");
10
- const s3_storage_adapter_1 = require("../adapters/s3-storage-adapter");
39
+ const url_storage_adapter_1 = require("../adapters/url-storage-adapter");
11
40
  class StorageAdapterFactory {
12
- static create(config) {
41
+ static async create(config) {
13
42
  switch (config.type) {
14
- case 'local':
43
+ case 'local': {
15
44
  return new local_storage_adapter_1.LocalStorageAdapter(config);
16
- case 'http':
45
+ }
46
+ case 'http': {
17
47
  return new http_storage_adapter_1.HTTPStorageAdapter(config);
18
- case 's3':
19
- return new s3_storage_adapter_1.S3StorageAdapter(config);
20
- case 'azure':
21
- return new azure_blob_storage_adapter_1.AzureBlobStorageAdapter(config);
22
- case 'gcs':
23
- return new gcs_storage_adapter_1.GCSStorageAdapter(config);
24
- case 'ssh':
25
- return new ssh_storage_adapter_1.SSHStorageAdapter(config);
26
- case 'url':
48
+ }
49
+ case 's3': {
50
+ let S3StorageAdapter;
51
+ try {
52
+ ({ S3StorageAdapter } = await Promise.resolve().then(() => __importStar(require('../adapters/s3-storage-adapter'))));
53
+ }
54
+ catch {
55
+ throw new Error('Missing peer dependency: @aws-sdk/client-s3 module not found. Please install it.');
56
+ }
57
+ return new S3StorageAdapter(config);
58
+ }
59
+ case 'azure': {
60
+ let AzureBlobStorageAdapter;
61
+ try {
62
+ ({ AzureBlobStorageAdapter } = await Promise.resolve().then(() => __importStar(require('../adapters/azure-blob-storage-adapter'))));
63
+ }
64
+ catch {
65
+ throw new Error('Missing peer dependency: "@azure/identity or @azure/storage-blob module not found. Please install them.');
66
+ }
67
+ return new AzureBlobStorageAdapter(config);
68
+ }
69
+ case 'gcs': {
70
+ let GCSStorageAdapter;
71
+ try {
72
+ ({ GCSStorageAdapter } = await Promise.resolve().then(() => __importStar(require('../adapters/gcs-storage-adapter'))));
73
+ }
74
+ catch {
75
+ throw new Error('Missing peer dependency: @google-cloud/storage module not found. Please install it.');
76
+ }
77
+ return new GCSStorageAdapter(config);
78
+ }
79
+ case 'ssh': {
80
+ let SSHStorageAdapter;
81
+ try {
82
+ ({ SSHStorageAdapter } = await Promise.resolve().then(() => __importStar(require('../adapters/ssh-storage-adapter'))));
83
+ }
84
+ catch {
85
+ throw new Error('Missing peer dependency: ssh2 module not found. Please install it.');
86
+ }
87
+ return new SSHStorageAdapter(config);
88
+ }
89
+ case 'url': {
27
90
  return new url_storage_adapter_1.DefaultUrlStorageAdapter();
91
+ }
28
92
  default:
29
93
  throw new Error(`Unsupported storage type: ${config.type}`);
30
94
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rac-delta",
3
3
  "description": "Storage agnostic delta patching implementation of rac-delta protocol for NodeJs. With streaming support and file reconstruction.",
4
- "version": "1.0.2",
4
+ "version": "1.0.4",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "repository": {
@@ -29,14 +29,35 @@
29
29
  "hash-wasm": "^4.12.0"
30
30
  },
31
31
  "peerDependencies": {
32
- "@aws-sdk/client-s3": "^3.908.0",
32
+ "@aws-sdk/client-s3": "^3.962.0",
33
33
  "@azure/identity": "^4.13.0",
34
- "@azure/storage-blob": "^12.28.0",
35
- "@google-cloud/storage": "^7.17.2",
34
+ "@azure/storage-blob": "^12.29.1",
35
+ "@google-cloud/storage": "^7.18.0",
36
36
  "ssh2": "^1.17.0"
37
37
  },
38
+ "peerDependenciesMeta": {
39
+ "@aws-sdk/client-s3": {
40
+ "optional": true
41
+ },
42
+ "@azure/identity": {
43
+ "optional": true
44
+ },
45
+ "@azure/storage-blob": {
46
+ "optional": true
47
+ },
48
+ "@google-cloud/storage": {
49
+ "optional": true
50
+ },
51
+ "ssh2": {
52
+ "optional": true
53
+ }
54
+ },
38
55
  "devDependencies": {
39
56
  "@types/ssh2": "^1.15.5",
57
+ "@aws-sdk/client-s3": "^3.962.0",
58
+ "@azure/identity": "^4.13.0",
59
+ "@azure/storage-blob": "^12.29.1",
60
+ "@google-cloud/storage": "^7.18.0",
40
61
  "@vitest/coverage-v8": "^3.2.4",
41
62
  "eslint": "^9.37.0",
42
63
  "prettier": "^3.6.2",