@venturialstd/backblaze 0.0.1

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 +105 -0
  2. package/dist/backblaze.module.d.ts +3 -0
  3. package/dist/backblaze.module.d.ts.map +1 -0
  4. package/dist/backblaze.module.js +26 -0
  5. package/dist/backblaze.module.js.map +1 -0
  6. package/dist/client/backblaze.client.d.ts +17 -0
  7. package/dist/client/backblaze.client.d.ts.map +1 -0
  8. package/dist/client/backblaze.client.js +133 -0
  9. package/dist/client/backblaze.client.js.map +1 -0
  10. package/dist/constants/backblaze-client.constant.d.ts +8 -0
  11. package/dist/constants/backblaze-client.constant.d.ts.map +1 -0
  12. package/dist/constants/backblaze-client.constant.js +12 -0
  13. package/dist/constants/backblaze-client.constant.js.map +1 -0
  14. package/dist/constants/backblaze.constant.d.ts +25 -0
  15. package/dist/constants/backblaze.constant.d.ts.map +1 -0
  16. package/dist/constants/backblaze.constant.js +28 -0
  17. package/dist/constants/backblaze.constant.js.map +1 -0
  18. package/dist/constants/backblaze.settings.constants.d.ts +6 -0
  19. package/dist/constants/backblaze.settings.constants.d.ts.map +1 -0
  20. package/dist/constants/backblaze.settings.constants.js +9 -0
  21. package/dist/constants/backblaze.settings.constants.js.map +1 -0
  22. package/dist/dtos/create-bucket.dto.d.ts +6 -0
  23. package/dist/dtos/create-bucket.dto.d.ts.map +1 -0
  24. package/dist/dtos/create-bucket.dto.js +29 -0
  25. package/dist/dtos/create-bucket.dto.js.map +1 -0
  26. package/dist/dtos/list-objects.dto.d.ts +9 -0
  27. package/dist/dtos/list-objects.dto.d.ts.map +1 -0
  28. package/dist/dtos/list-objects.dto.js +53 -0
  29. package/dist/dtos/list-objects.dto.js.map +1 -0
  30. package/dist/dtos/put-object.dto.d.ts +12 -0
  31. package/dist/dtos/put-object.dto.d.ts.map +1 -0
  32. package/dist/dtos/put-object.dto.js +58 -0
  33. package/dist/dtos/put-object.dto.js.map +1 -0
  34. package/dist/enums/backblaze.enums.d.ts +37 -0
  35. package/dist/enums/backblaze.enums.d.ts.map +1 -0
  36. package/dist/enums/backblaze.enums.js +44 -0
  37. package/dist/enums/backblaze.enums.js.map +1 -0
  38. package/dist/index.d.ts +16 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +32 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/interfaces/backblaze-credentials.interface.d.ts +24 -0
  43. package/dist/interfaces/backblaze-credentials.interface.d.ts.map +1 -0
  44. package/dist/interfaces/backblaze-credentials.interface.js +3 -0
  45. package/dist/interfaces/backblaze-credentials.interface.js.map +1 -0
  46. package/dist/interfaces/backblaze-service.interface.d.ts +73 -0
  47. package/dist/interfaces/backblaze-service.interface.d.ts.map +1 -0
  48. package/dist/interfaces/backblaze-service.interface.js +3 -0
  49. package/dist/interfaces/backblaze-service.interface.js.map +1 -0
  50. package/dist/services/backblaze-bucket.service.d.ts +46 -0
  51. package/dist/services/backblaze-bucket.service.d.ts.map +1 -0
  52. package/dist/services/backblaze-bucket.service.js +107 -0
  53. package/dist/services/backblaze-bucket.service.js.map +1 -0
  54. package/dist/services/backblaze-object.service.d.ts +56 -0
  55. package/dist/services/backblaze-object.service.d.ts.map +1 -0
  56. package/dist/services/backblaze-object.service.js +165 -0
  57. package/dist/services/backblaze-object.service.js.map +1 -0
  58. package/dist/settings/backblaze.settings.d.ts +3 -0
  59. package/dist/settings/backblaze.settings.d.ts.map +1 -0
  60. package/dist/settings/backblaze.settings.js +43 -0
  61. package/dist/settings/backblaze.settings.js.map +1 -0
  62. package/dist/utils/s3-xml.util.d.ts +11 -0
  63. package/dist/utils/s3-xml.util.d.ts.map +1 -0
  64. package/dist/utils/s3-xml.util.js +36 -0
  65. package/dist/utils/s3-xml.util.js.map +1 -0
  66. package/package.json +35 -0
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BackblazeObjectService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const backblaze_client_1 = require("../client/backblaze.client");
15
+ const backblaze_client_constant_1 = require("../constants/backblaze-client.constant");
16
+ const backblaze_enums_1 = require("../enums/backblaze.enums");
17
+ let BackblazeObjectService = class BackblazeObjectService {
18
+ client;
19
+ constructor(client) {
20
+ this.client = client;
21
+ }
22
+ /**
23
+ * Uploads an object. Use ContentType enum for common types, or pass a custom string.
24
+ */
25
+ putObject(bucketName, key, body, options) {
26
+ const buf = Buffer.isBuffer(body) ? body : Buffer.from(body);
27
+ const contentType = options?.contentType ?? backblaze_enums_1.ContentType.ApplicationOctetStream;
28
+ const path = `/${encodeURIComponent(bucketName)}/${this.encodeKey(key)}`;
29
+ const headers = {
30
+ 'Content-Length': String(buf.length),
31
+ 'Content-Type': contentType,
32
+ };
33
+ return this.client.request({
34
+ options,
35
+ method: backblaze_client_constant_1.BACKBLAZE_HTTP_METHOD.PUT,
36
+ path,
37
+ body: buf,
38
+ headers,
39
+ responseType: 'text',
40
+ });
41
+ }
42
+ /**
43
+ * Downloads an object. Returns the body as ArrayBuffer.
44
+ */
45
+ getObject(bucketName, key, options) {
46
+ let path = `/${encodeURIComponent(bucketName)}/${this.encodeKey(key)}`;
47
+ if (options?.versionId) {
48
+ path += `?versionId=${encodeURIComponent(options.versionId)}`;
49
+ }
50
+ return this.client.request({
51
+ options,
52
+ method: backblaze_client_constant_1.BACKBLAZE_HTTP_METHOD.GET,
53
+ path,
54
+ responseType: 'arraybuffer',
55
+ });
56
+ }
57
+ /**
58
+ * Deletes an object. Optionally specify versionId for versioned buckets.
59
+ */
60
+ deleteObject(bucketName, key, options) {
61
+ let path = `/${encodeURIComponent(bucketName)}/${this.encodeKey(key)}`;
62
+ if (options?.versionId) {
63
+ path += `?versionId=${encodeURIComponent(options.versionId)}`;
64
+ }
65
+ return this.client.request({
66
+ options,
67
+ method: backblaze_client_constant_1.BACKBLAZE_HTTP_METHOD.DELETE,
68
+ path,
69
+ responseType: 'text',
70
+ });
71
+ }
72
+ /**
73
+ * Lists objects in a bucket. Returns a normalized result for easier consumption.
74
+ * Use ListObjectsV2Params for prefix, maxKeys, pagination, etc.
75
+ */
76
+ listObjectsV2(bucketName, params, options) {
77
+ const query = new URLSearchParams();
78
+ query.set('list-type', '2');
79
+ if (params?.prefix != null)
80
+ query.set('prefix', params.prefix);
81
+ if (params?.maxKeys != null)
82
+ query.set('max-keys', String(params.maxKeys));
83
+ if (params?.continuationToken != null)
84
+ query.set('continuation-token', params.continuationToken);
85
+ if (params?.startAfter != null)
86
+ query.set('start-after', params.startAfter);
87
+ const path = `/${encodeURIComponent(bucketName)}?${query.toString()}`;
88
+ return this.client
89
+ .request({
90
+ options,
91
+ method: backblaze_client_constant_1.BACKBLAZE_HTTP_METHOD.GET,
92
+ path,
93
+ responseType: 'text',
94
+ })
95
+ .then((raw) => this.normalizeListObjectsV2Response(raw));
96
+ }
97
+ /**
98
+ * Raw S3 List Objects V2 response (XML parsed to JSON). Use when you need the full structure.
99
+ */
100
+ listObjectsV2Raw(bucketName, params, options) {
101
+ const query = new URLSearchParams();
102
+ query.set('list-type', '2');
103
+ if (params?.prefix != null)
104
+ query.set('prefix', params.prefix);
105
+ if (params?.maxKeys != null)
106
+ query.set('max-keys', String(params.maxKeys));
107
+ if (params?.continuationToken != null)
108
+ query.set('continuation-token', params.continuationToken);
109
+ if (params?.startAfter != null)
110
+ query.set('start-after', params.startAfter);
111
+ const path = `/${encodeURIComponent(bucketName)}?${query.toString()}`;
112
+ return this.client.request({
113
+ options,
114
+ method: backblaze_client_constant_1.BACKBLAZE_HTTP_METHOD.GET,
115
+ path,
116
+ responseType: 'text',
117
+ });
118
+ }
119
+ /**
120
+ * Returns object metadata (Content-Length, Content-Type, ETag, etc.) in response headers.
121
+ */
122
+ async headObject(bucketName, key, options) {
123
+ let path = `/${encodeURIComponent(bucketName)}/${this.encodeKey(key)}`;
124
+ if (options?.versionId) {
125
+ path += `?versionId=${encodeURIComponent(options.versionId)}`;
126
+ }
127
+ const res = await this.client.requestWithResponse({
128
+ options,
129
+ method: backblaze_client_constant_1.BACKBLAZE_HTTP_METHOD.HEAD,
130
+ path,
131
+ responseType: 'text',
132
+ });
133
+ return res.headers;
134
+ }
135
+ normalizeListObjectsV2Response(raw) {
136
+ const result = raw?.ListBucketResult;
137
+ const contents = result?.Contents;
138
+ const list = Array.isArray(contents) ? contents : contents ? [contents] : [];
139
+ return {
140
+ objects: list.map((c) => ({
141
+ key: c.Key,
142
+ lastModified: c.LastModified,
143
+ etag: c.ETag,
144
+ size: c.Size,
145
+ storageClass: c.StorageClass,
146
+ })),
147
+ isTruncated: result?.IsTruncated === true || result?.IsTruncated === 'true',
148
+ keyCount: typeof result?.KeyCount === 'string' ? parseInt(result.KeyCount, 10) : (result?.KeyCount ?? 0),
149
+ nextContinuationToken: result?.NextContinuationToken,
150
+ prefix: result?.Prefix,
151
+ };
152
+ }
153
+ encodeKey(key) {
154
+ return key
155
+ .split('/')
156
+ .map((segment) => encodeURIComponent(segment))
157
+ .join('/');
158
+ }
159
+ };
160
+ exports.BackblazeObjectService = BackblazeObjectService;
161
+ exports.BackblazeObjectService = BackblazeObjectService = __decorate([
162
+ (0, common_1.Injectable)(),
163
+ __metadata("design:paramtypes", [backblaze_client_1.BackblazeClient])
164
+ ], BackblazeObjectService);
165
+ //# sourceMappingURL=backblaze-object.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backblaze-object.service.js","sourceRoot":"","sources":["../../src/services/backblaze-object.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Settings } from '@venturialstd/core';
2
+ export declare const BACKBLAZE_SETTINGS: Omit<Settings, 'id' | 'createdAt' | 'updatedAt'>[];
3
+ //# sourceMappingURL=backblaze.settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backblaze.settings.d.ts","sourceRoot":"","sources":["../../src/settings/backblaze.settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAE7D,eAAO,MAAM,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,EAqChF,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BACKBLAZE_SETTINGS = void 0;
4
+ const core_1 = require("@venturialstd/core");
5
+ exports.BACKBLAZE_SETTINGS = [
6
+ {
7
+ scope: 'GLOBAL',
8
+ module: 'BACKBLAZE',
9
+ section: 'GENERAL',
10
+ key: 'REGION',
11
+ label: 'Backblaze B2 Region (S3 endpoint)',
12
+ description: 'Region for S3-compatible endpoint (e.g. us-west-004)',
13
+ type: core_1.SETTINGS_TYPE.TEXT,
14
+ value: 'us-west-004',
15
+ options: null,
16
+ sortOrder: 1,
17
+ },
18
+ {
19
+ scope: 'GLOBAL',
20
+ module: 'BACKBLAZE',
21
+ section: 'GENERAL',
22
+ key: 'ACCESS_KEY_ID',
23
+ label: 'Backblaze Application Key ID',
24
+ description: 'S3-compatible Application Key ID',
25
+ type: core_1.SETTINGS_TYPE.SECRET,
26
+ value: '',
27
+ options: null,
28
+ sortOrder: 2,
29
+ },
30
+ {
31
+ scope: 'GLOBAL',
32
+ module: 'BACKBLAZE',
33
+ section: 'GENERAL',
34
+ key: 'SECRET_ACCESS_KEY',
35
+ label: 'Backblaze Application Key',
36
+ description: 'S3-compatible Application Key secret',
37
+ type: core_1.SETTINGS_TYPE.SECRET,
38
+ value: '',
39
+ options: null,
40
+ sortOrder: 3,
41
+ },
42
+ ];
43
+ //# sourceMappingURL=backblaze.settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backblaze.settings.js","sourceRoot":"","sources":["../../src/settings/backblaze.settings.ts"],"names":[],"mappings":";;;AAAA,6CAA6D;AAEhD,QAAA,kBAAkB,GAAuD;IACpF;QACE,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EAAE,sDAAsD;QACnE,IAAI,EAAE,oBAAa,CAAC,IAAI;QACxB,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;KACb;IACD;QACE,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,eAAe;QACpB,KAAK,EAAE,8BAA8B;QACrC,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,oBAAa,CAAC,MAAM;QAC1B,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;KACb;IACD;QACE,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,mBAAmB;QACxB,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,oBAAa,CAAC,MAAM;QAC1B,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;KACb;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Parses S3 response XML (ListBuckets, ListObjects, etc.) to JSON.
3
+ */
4
+ export declare function parseXmlToJson(xml: string): Record<string, unknown>;
5
+ /** Standard S3 namespace for bucket creation XML. */
6
+ export declare const S3_XML_NS = "http://s3.amazonaws.com/doc/2006-03-01/";
7
+ /**
8
+ * Builds the XML body for CreateBucketConfiguration (optional in Backblaze).
9
+ */
10
+ export declare function createBucketConfigurationXml(region: string): string;
11
+ //# sourceMappingURL=s3-xml.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-xml.util.d.ts","sourceRoot":"","sources":["../../src/utils/s3-xml.util.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGnE;AAED,qDAAqD;AACrD,eAAO,MAAM,SAAS,4CAA4C,CAAC;AAEnE;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.S3_XML_NS = void 0;
4
+ exports.parseXmlToJson = parseXmlToJson;
5
+ exports.createBucketConfigurationXml = createBucketConfigurationXml;
6
+ const fast_xml_parser_1 = require("fast-xml-parser");
7
+ const parser = new fast_xml_parser_1.XMLParser({
8
+ ignoreDeclaration: true,
9
+ removeNSPrefix: true,
10
+ trimValues: true,
11
+ parseTagValue: false,
12
+ });
13
+ /**
14
+ * Parses S3 response XML (ListBuckets, ListObjects, etc.) to JSON.
15
+ */
16
+ function parseXmlToJson(xml) {
17
+ const result = parser.parse(xml);
18
+ return (result && typeof result === 'object' ? result : {});
19
+ }
20
+ /** Standard S3 namespace for bucket creation XML. */
21
+ exports.S3_XML_NS = 'http://s3.amazonaws.com/doc/2006-03-01/';
22
+ /**
23
+ * Builds the XML body for CreateBucketConfiguration (optional in Backblaze).
24
+ */
25
+ function createBucketConfigurationXml(region) {
26
+ return `<?xml version="1.0" encoding="UTF-8"?><CreateBucketConfiguration xmlns="${exports.S3_XML_NS}"><LocationConstraint>${escapeXml(region)}</LocationConstraint></CreateBucketConfiguration>`;
27
+ }
28
+ function escapeXml(s) {
29
+ return s
30
+ .replace(/&/g, '&amp;')
31
+ .replace(/</g, '&lt;')
32
+ .replace(/>/g, '&gt;')
33
+ .replace(/"/g, '&quot;')
34
+ .replace(/'/g, '&apos;');
35
+ }
36
+ //# sourceMappingURL=s3-xml.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-xml.util.js","sourceRoot":"","sources":["../../src/utils/s3-xml.util.ts"],"names":[],"mappings":";;;AAYA,wCAGC;AAQD,oEAEC;AAzBD,qDAA4C;AAE5C,MAAM,MAAM,GAAG,IAAI,2BAAS,CAAC;IAC3B,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,KAAK;CACrB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAC;AACzF,CAAC;AAED,qDAAqD;AACxC,QAAA,SAAS,GAAG,yCAAyC,CAAC;AAEnE;;GAEG;AACH,SAAgB,4BAA4B,CAAC,MAAc;IACzD,OAAO,2EAA2E,iBAAS,yBAAyB,SAAS,CAAC,MAAM,CAAC,mDAAmD,CAAC;AAC3L,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@venturialstd/backblaze",
3
+ "version": "0.0.1",
4
+ "description": "Backblaze B2 S3-Compatible API client for Venturial (no AWS SDK)",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "commonjs",
8
+ "files": ["dist"],
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "scripts": {
13
+ "prebuild": "rimraf dist",
14
+ "build": "tsc -p tsconfig.json",
15
+ "prepublishOnly": "npm run build",
16
+ "build:pack": "rimraf *.tgz && npm run build && npm pack",
17
+ "release:patch": "npm run build && npm version patch --no-git-tag-version && npm publish"
18
+ },
19
+ "devDependencies": {
20
+ "@types/aws4": "^1.11.6",
21
+ "typescript": "^5.9.3"
22
+ },
23
+ "peerDependencies": {
24
+ "@nestjs/axios": "^4.0.0",
25
+ "@nestjs/common": "^11.0.11",
26
+ "@nestjs/core": "^11.0.5",
27
+ "@venturialstd/core": "^1.0.16",
28
+ "class-validator": "^0.14.1",
29
+ "rxjs": "^7.8.1"
30
+ },
31
+ "dependencies": {
32
+ "aws4": "^1.11.0",
33
+ "fast-xml-parser": "^4.3.6"
34
+ }
35
+ }