@paywatchglobal/n8n-nodes-azure-storage-plus 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 (24) hide show
  1. package/README.md +46 -0
  2. package/dist/credentials/AzureBlobStoragePlusApi.credentials.d.ts +11 -0
  3. package/dist/credentials/AzureBlobStoragePlusApi.credentials.js +49 -0
  4. package/dist/credentials/AzureBlobStoragePlusApi.credentials.js.map +1 -0
  5. package/dist/nodes/AzureStoragePlus/AzureStoragePlus.node.d.ts +15 -0
  6. package/dist/nodes/AzureStoragePlus/AzureStoragePlus.node.js +457 -0
  7. package/dist/nodes/AzureStoragePlus/AzureStoragePlus.node.js.map +1 -0
  8. package/dist/nodes/AzureStoragePlus/AzureStoragePlus.node.json +22 -0
  9. package/dist/nodes/AzureStoragePlus/GenericFunctions.d.ts +28 -0
  10. package/dist/nodes/AzureStoragePlus/GenericFunctions.js +330 -0
  11. package/dist/nodes/AzureStoragePlus/GenericFunctions.js.map +1 -0
  12. package/dist/nodes/AzureStoragePlus/azureStorage.svg +19 -0
  13. package/dist/nodes/AzureStoragePlus/descriptions/BlobDescription.d.ts +3 -0
  14. package/dist/nodes/AzureStoragePlus/descriptions/BlobDescription.js +455 -0
  15. package/dist/nodes/AzureStoragePlus/descriptions/BlobDescription.js.map +1 -0
  16. package/dist/nodes/AzureStoragePlus/descriptions/ContainerDescription.d.ts +3 -0
  17. package/dist/nodes/AzureStoragePlus/descriptions/ContainerDescription.js +227 -0
  18. package/dist/nodes/AzureStoragePlus/descriptions/ContainerDescription.js.map +1 -0
  19. package/dist/nodes/AzureStoragePlus/descriptions/index.d.ts +2 -0
  20. package/dist/nodes/AzureStoragePlus/descriptions/index.js +10 -0
  21. package/dist/nodes/AzureStoragePlus/descriptions/index.js.map +1 -0
  22. package/dist/package.json +52 -0
  23. package/dist/tsconfig.tsbuildinfo +1 -0
  24. package/package.json +52 -0
@@ -0,0 +1,28 @@
1
+ import type { IDataObject, IExecuteFunctions, IHttpRequestMethods, ILoadOptionsFunctions, INodeListSearchResult, INodeParameterResourceLocator } from 'n8n-workflow';
2
+ export declare function azureStorageApiRequest(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, endpoint: string, body?: Buffer | string | IDataObject, qs?: IDataObject, headers?: IDataObject, encoding?: 'arraybuffer' | null): Promise<{
3
+ body: string | Buffer;
4
+ headers: IDataObject;
5
+ statusCode: number;
6
+ }>;
7
+ export declare function azureStorageApiRequestAllItems(this: IExecuteFunctions | ILoadOptionsFunctions, endpoint: string, qs: IDataObject, parseFunction: (xml: string) => Promise<{
8
+ items: IDataObject[];
9
+ nextMarker?: string;
10
+ }>): Promise<IDataObject[]>;
11
+ export declare function parseBlobList(xml: string): Promise<{
12
+ blobs: IDataObject[];
13
+ nextMarker?: string;
14
+ }>;
15
+ export declare function parseContainerList(xml: string): Promise<{
16
+ containers: IDataObject[];
17
+ nextMarker?: string;
18
+ }>;
19
+ export declare function parseHeaders(headers: IDataObject): IDataObject;
20
+ export declare function parseXmlError(xml: string): Promise<{
21
+ code: string;
22
+ message: string;
23
+ }>;
24
+ export declare function buildMetadataHeaders(metadata: IDataObject): IDataObject;
25
+ export declare function buildTagsQueryString(tags: IDataObject): string;
26
+ export declare function resolveResourceLocator(param: INodeParameterResourceLocator | string): string;
27
+ export declare function getContainers(this: ILoadOptionsFunctions, filter?: string, paginationToken?: string): Promise<INodeListSearchResult>;
28
+ export declare function getBlobs(this: ILoadOptionsFunctions, filter?: string, paginationToken?: string): Promise<INodeListSearchResult>;
@@ -0,0 +1,330 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.azureStorageApiRequest = azureStorageApiRequest;
4
+ exports.azureStorageApiRequestAllItems = azureStorageApiRequestAllItems;
5
+ exports.parseBlobList = parseBlobList;
6
+ exports.parseContainerList = parseContainerList;
7
+ exports.parseHeaders = parseHeaders;
8
+ exports.parseXmlError = parseXmlError;
9
+ exports.buildMetadataHeaders = buildMetadataHeaders;
10
+ exports.buildTagsQueryString = buildTagsQueryString;
11
+ exports.resolveResourceLocator = resolveResourceLocator;
12
+ exports.getContainers = getContainers;
13
+ exports.getBlobs = getBlobs;
14
+ const n8n_workflow_1 = require("n8n-workflow");
15
+ const xml2js_1 = require("xml2js");
16
+ const processors_1 = require("xml2js/lib/processors");
17
+ const XMS_VERSION = '2021-12-02';
18
+ let cachedToken = null;
19
+ async function getAccessToken(context) {
20
+ if (cachedToken && Date.now() < cachedToken.expiresAt - 5 * 60 * 1000) {
21
+ return cachedToken.token;
22
+ }
23
+ const credentials = (await context.getCredentials('azureBlobStoragePlusApi'));
24
+ const { tenantId, clientId, clientSecret } = credentials;
25
+ const body = new URLSearchParams({
26
+ grant_type: 'client_credentials',
27
+ client_id: clientId,
28
+ client_secret: clientSecret,
29
+ scope: 'https://storage.azure.com/.default',
30
+ }).toString();
31
+ const response = (await context.helpers.httpRequest({
32
+ method: 'POST',
33
+ url: `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`,
34
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
35
+ body,
36
+ }));
37
+ cachedToken = {
38
+ token: response.access_token,
39
+ expiresAt: Date.now() + response.expires_in * 1000,
40
+ };
41
+ return response.access_token;
42
+ }
43
+ async function azureStorageApiRequest(method, endpoint, body, qs = {}, headers = {}, encoding) {
44
+ const credentials = (await this.getCredentials('azureBlobStoragePlusApi'));
45
+ const storageAccountUrl = credentials.storageAccountUrl.replace(/\/$/, '');
46
+ const token = await getAccessToken(this);
47
+ const options = {
48
+ method,
49
+ url: `${storageAccountUrl}${endpoint}`,
50
+ headers: {
51
+ Authorization: `Bearer ${token}`,
52
+ 'x-ms-date': new Date().toUTCString(),
53
+ 'x-ms-version': XMS_VERSION,
54
+ ...headers,
55
+ },
56
+ qs,
57
+ returnFullResponse: true,
58
+ };
59
+ if (encoding === 'arraybuffer') {
60
+ options.encoding = 'arraybuffer';
61
+ options.json = false;
62
+ }
63
+ if (body !== undefined && body !== null) {
64
+ options.body = body;
65
+ }
66
+ try {
67
+ const response = (await this.helpers.httpRequest(options));
68
+ return response;
69
+ }
70
+ catch (error) {
71
+ const xmlBody = error.body;
72
+ if (xmlBody && typeof xmlBody === 'string' && xmlBody.includes('<Error>')) {
73
+ const parsed = await parseXmlError(xmlBody);
74
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error, {
75
+ message: parsed.code,
76
+ description: parsed.message,
77
+ });
78
+ }
79
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
80
+ }
81
+ }
82
+ async function azureStorageApiRequestAllItems(endpoint, qs, parseFunction) {
83
+ const results = [];
84
+ let nextMarker;
85
+ do {
86
+ if (nextMarker) {
87
+ qs.marker = nextMarker;
88
+ }
89
+ const response = await azureStorageApiRequest.call(this, 'GET', endpoint, undefined, qs);
90
+ const parsed = await parseFunction(response.body);
91
+ results.push(...parsed.items);
92
+ nextMarker = parsed.nextMarker;
93
+ } while (nextMarker);
94
+ return results;
95
+ }
96
+ async function parseBlobList(xml) {
97
+ const parser = new xml2js_1.Parser({
98
+ explicitArray: false,
99
+ tagNameProcessors: [processors_1.firstCharLowerCase, (name) => name.replace('-', '')],
100
+ valueProcessors: [
101
+ function (value, name) {
102
+ if ([
103
+ 'deleted',
104
+ 'isCurrentVersion',
105
+ 'serverEncrypted',
106
+ 'incrementalCopy',
107
+ 'accessTierInferred',
108
+ 'isSealed',
109
+ 'legalHold',
110
+ ].includes(name)) {
111
+ return (0, processors_1.parseBooleans)(value);
112
+ }
113
+ else if ([
114
+ 'maxResults',
115
+ 'contentLength',
116
+ 'blobSequenceNumber',
117
+ 'remainingRetentionDays',
118
+ 'tagCount',
119
+ 'content-Length',
120
+ ].includes(name)) {
121
+ return (0, processors_1.parseNumbers)(value);
122
+ }
123
+ return value;
124
+ },
125
+ ],
126
+ });
127
+ const data = (await parser.parseStringPromise(xml));
128
+ if (typeof data.enumerationResults.blobs !== 'object') {
129
+ return { blobs: [] };
130
+ }
131
+ if (!Array.isArray(data.enumerationResults.blobs.blob)) {
132
+ data.enumerationResults.blobs.blob = [data.enumerationResults.blobs.blob];
133
+ }
134
+ for (const blob of data.enumerationResults.blobs.blob) {
135
+ if (blob.tags) {
136
+ if (!Array.isArray(blob.tags.tagSet.tag)) {
137
+ blob.tags.tagSet.tag = [
138
+ blob.tags.tagSet.tag,
139
+ ];
140
+ }
141
+ blob.tags = blob.tags.tagSet.tag;
142
+ }
143
+ if (blob.metadata === '') {
144
+ delete blob.metadata;
145
+ }
146
+ if (blob.orMetadata === '') {
147
+ delete blob.orMetadata;
148
+ }
149
+ }
150
+ return {
151
+ blobs: data.enumerationResults.blobs.blob,
152
+ nextMarker: data.enumerationResults.nextMarker || undefined,
153
+ };
154
+ }
155
+ async function parseContainerList(xml) {
156
+ const parser = new xml2js_1.Parser({
157
+ explicitArray: false,
158
+ tagNameProcessors: [processors_1.firstCharLowerCase, (name) => name.replace('-', '')],
159
+ valueProcessors: [
160
+ function (value, name) {
161
+ if ([
162
+ 'deleted',
163
+ 'hasImmutabilityPolicy',
164
+ 'hasLegalHold',
165
+ 'preventEncryptionScopeOverride',
166
+ 'isImmutableStorageWithVersioningEnabled',
167
+ ].includes(name)) {
168
+ return (0, processors_1.parseBooleans)(value);
169
+ }
170
+ else if (['maxResults', 'remainingRetentionDays'].includes(name)) {
171
+ return (0, processors_1.parseNumbers)(value);
172
+ }
173
+ return value;
174
+ },
175
+ ],
176
+ });
177
+ const data = (await parser.parseStringPromise(xml));
178
+ if (typeof data.enumerationResults.containers !== 'object') {
179
+ return { containers: [] };
180
+ }
181
+ if (!Array.isArray(data.enumerationResults.containers.container)) {
182
+ data.enumerationResults.containers.container = [
183
+ data.enumerationResults.containers.container,
184
+ ];
185
+ }
186
+ for (const container of data.enumerationResults.containers.container) {
187
+ if (container.metadata === '') {
188
+ delete container.metadata;
189
+ }
190
+ }
191
+ return {
192
+ containers: data.enumerationResults.containers.container,
193
+ nextMarker: data.enumerationResults.nextMarker || undefined,
194
+ };
195
+ }
196
+ function parseHeaders(headers) {
197
+ const parseBooleanHeaders = [
198
+ 'x-ms-delete-type-permanent',
199
+ 'x-ms-incremental-copy',
200
+ 'x-ms-server-encrypted',
201
+ 'x-ms-blob-sealed',
202
+ 'x-ms-request-server-encrypted',
203
+ 'x-ms-has-immutability-policy',
204
+ 'x-ms-has-legal-hold',
205
+ ];
206
+ const parseNumberHeaders = [
207
+ 'x-ms-tag-count',
208
+ 'content-length',
209
+ 'x-ms-blob-sequence-number',
210
+ 'x-ms-copy-progress',
211
+ 'x-ms-blob-committed-block-count',
212
+ ];
213
+ const result = {};
214
+ const metadataKeys = Object.keys(headers).filter((x) => x.startsWith('x-ms-meta-'));
215
+ for (const key in headers) {
216
+ if (metadataKeys.includes(key)) {
217
+ continue;
218
+ }
219
+ let newKey = key.startsWith('x-ms-')
220
+ ? camelCase(key.replace('x-ms-', ''))
221
+ : camelCase(key);
222
+ newKey = newKey.replace('-', '');
223
+ const newValue = parseBooleanHeaders.includes(key)
224
+ ? (0, processors_1.parseBooleans)(headers[key])
225
+ : parseNumberHeaders.includes(key)
226
+ ? (0, processors_1.parseNumbers)(headers[key])
227
+ : headers[key];
228
+ result[newKey] = newValue;
229
+ }
230
+ if (metadataKeys.length > 0) {
231
+ result.metadata = {};
232
+ for (const key of metadataKeys) {
233
+ result.metadata[key.replace('x-ms-meta-', '')] = headers[key];
234
+ }
235
+ }
236
+ return result;
237
+ }
238
+ async function parseXmlError(xml) {
239
+ var _a, _b;
240
+ const parser = new xml2js_1.Parser({
241
+ explicitArray: false,
242
+ tagNameProcessors: [processors_1.firstCharLowerCase],
243
+ });
244
+ try {
245
+ const data = (await parser.parseStringPromise(xml));
246
+ return {
247
+ code: ((_a = data.error) === null || _a === void 0 ? void 0 : _a.code) || 'UnknownError',
248
+ message: ((_b = data.error) === null || _b === void 0 ? void 0 : _b.message) || xml,
249
+ };
250
+ }
251
+ catch {
252
+ return { code: 'UnknownError', message: xml };
253
+ }
254
+ }
255
+ function buildMetadataHeaders(metadata) {
256
+ const headers = {};
257
+ for (const [key, value] of Object.entries(metadata)) {
258
+ headers[`x-ms-meta-${key}`] = value;
259
+ }
260
+ return headers;
261
+ }
262
+ function buildTagsQueryString(tags) {
263
+ return Object.entries(tags)
264
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
265
+ .join('&');
266
+ }
267
+ function camelCase(str) {
268
+ return str.replace(/[-_]+(.)?/g, (_, c) => c ? c.toUpperCase() : '');
269
+ }
270
+ function resolveResourceLocator(param) {
271
+ if (typeof param === 'string') {
272
+ return param;
273
+ }
274
+ return param.value;
275
+ }
276
+ async function getContainers(filter, paginationToken) {
277
+ const qs = {
278
+ comp: 'list',
279
+ };
280
+ if (paginationToken) {
281
+ qs.marker = paginationToken;
282
+ }
283
+ else {
284
+ qs.maxresults = 5000;
285
+ if (filter) {
286
+ qs.prefix = filter;
287
+ }
288
+ }
289
+ const response = await azureStorageApiRequest.call(this, 'GET', '/', undefined, qs);
290
+ const data = await parseContainerList(response.body);
291
+ const results = data.containers
292
+ .map((c) => ({
293
+ name: c.name,
294
+ value: c.name,
295
+ }))
296
+ .sort((a, b) => a.name.localeCompare(b.name, undefined, { numeric: true, sensitivity: 'base' }));
297
+ return {
298
+ results,
299
+ paginationToken: data.nextMarker,
300
+ };
301
+ }
302
+ async function getBlobs(filter, paginationToken) {
303
+ const container = this.getNodeParameter('container');
304
+ const qs = {
305
+ restype: 'container',
306
+ comp: 'list',
307
+ };
308
+ if (paginationToken) {
309
+ qs.marker = paginationToken;
310
+ }
311
+ else {
312
+ qs.maxresults = 5000;
313
+ if (filter) {
314
+ qs.prefix = filter;
315
+ }
316
+ }
317
+ const response = await azureStorageApiRequest.call(this, 'GET', `/${resolveResourceLocator(container)}`, undefined, qs);
318
+ const data = await parseBlobList(response.body);
319
+ const results = data.blobs
320
+ .map((c) => ({
321
+ name: c.name,
322
+ value: c.name,
323
+ }))
324
+ .sort((a, b) => a.name.localeCompare(b.name, undefined, { numeric: true, sensitivity: 'base' }));
325
+ return {
326
+ results,
327
+ paginationToken: data.nextMarker,
328
+ };
329
+ }
330
+ //# sourceMappingURL=GenericFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/AzureStoragePlus/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
2
+ <defs>
3
+ <linearGradient id="a" x1="9" y1="15.83" x2="9" y2="5.79" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0" stop-color="#0078d4"/>
5
+ <stop offset="1" stop-color="#5ea0ef"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <path d="M.5 5.79h17v10.04H.5z" fill="url(#a)" rx=".5"/>
9
+ <path d="M.5 2.17h17v4.12H.5z" fill="#0078d4" rx=".5"/>
10
+ <rect x="2.5" y="3.17" width="2" height="2" rx=".25" fill="#fff"/>
11
+ <rect x="5.5" y="3.17" width="2" height="2" rx=".25" fill="#fff"/>
12
+ <rect x="8.5" y="3.17" width="2" height="2" rx=".25" fill="#fff"/>
13
+ <rect x="2.5" y="7.79" width="2" height="2" rx=".25" fill="#fff"/>
14
+ <rect x="5.5" y="7.79" width="2" height="2" rx=".25" fill="#fff"/>
15
+ <rect x="8.5" y="7.79" width="2" height="2" rx=".25" fill="#fff"/>
16
+ <rect x="2.5" y="11.79" width="2" height="2" rx=".25" fill="#fff"/>
17
+ <rect x="5.5" y="11.79" width="2" height="2" rx=".25" fill="#fff"/>
18
+ <rect x="8.5" y="11.79" width="2" height="2" rx=".25" fill="#fff"/>
19
+ </svg>
@@ -0,0 +1,3 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const blobOperations: INodeProperties[];
3
+ export declare const blobFields: INodeProperties[];