@halix/action-sdk 1.0.43 → 1.0.44
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.
- package/lib/cjs/content.js +62 -0
- package/lib/cjs/index.js +4 -2
- package/lib/cjs/types/content.d.ts +42 -0
- package/lib/cjs/types/content.d.ts.map +1 -1
- package/lib/cjs/types/index.d.ts +1 -1
- package/lib/cjs/types/index.d.ts.map +1 -1
- package/lib/esm/content.js +57 -0
- package/lib/esm/content.js.map +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/index.mjs +1 -1
- package/lib/esm/types/content.d.ts +42 -0
- package/lib/esm/types/index.d.ts +1 -1
- package/package.json +1 -1
package/lib/cjs/content.js
CHANGED
|
@@ -28,6 +28,8 @@ exports.sendFileContents = sendFileContents;
|
|
|
28
28
|
exports.sendFileContentsAsObservable = sendFileContentsAsObservable;
|
|
29
29
|
exports.createOrUpdateResource = createOrUpdateResource;
|
|
30
30
|
exports.createOrUpdateResourceAsObservable = createOrUpdateResourceAsObservable;
|
|
31
|
+
exports.downloadResource = downloadResource;
|
|
32
|
+
exports.downloadResourceAsObservable = downloadResourceAsObservable;
|
|
31
33
|
/**
|
|
32
34
|
* @module @halix/action-sdk/content
|
|
33
35
|
* @description Content resource management functions for the Halix Platform action SDK. This module
|
|
@@ -36,6 +38,7 @@ exports.createOrUpdateResourceAsObservable = createOrUpdateResourceAsObservable;
|
|
|
36
38
|
* Key features:
|
|
37
39
|
* - Retrieve content resources (images, documents, etc.)
|
|
38
40
|
* - Upload/save content resources (images, documents, etc.)
|
|
41
|
+
* - Download file resources in the browser (e.g. as a button click handler)
|
|
39
42
|
*/
|
|
40
43
|
const axios_1 = __importDefault(require("axios"));
|
|
41
44
|
const rxjs_1 = require("rxjs");
|
|
@@ -197,3 +200,62 @@ function createOrUpdateResource(resourceKey, fileToUpload, publicFlag, resourceT
|
|
|
197
200
|
function createOrUpdateResourceAsObservable(resourceKey, fileToUpload, publicFlag, resourceType, tags) {
|
|
198
201
|
return (0, rxjs_1.from)(createOrUpdateResource(resourceKey, fileToUpload, publicFlag, resourceType, tags));
|
|
199
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Fetches a file resource from the Halix content service and returns it as a `Blob` along with
|
|
205
|
+
* the filename derived from the `Content-Disposition` response header (falling back to
|
|
206
|
+
* `resourceKey` when the header is absent).
|
|
207
|
+
*
|
|
208
|
+
* This function is environment-agnostic: it performs only the authenticated HTTP fetch and leaves
|
|
209
|
+
* all presentation logic to the caller.
|
|
210
|
+
*
|
|
211
|
+
* **Browser download example** — trigger the native Save dialog from a click handler:
|
|
212
|
+
* ```js
|
|
213
|
+
* button.addEventListener('click', async () => {
|
|
214
|
+
* const { blob, fileName } = await downloadResource(recipe.attachmentKey);
|
|
215
|
+
* const url = URL.createObjectURL(blob);
|
|
216
|
+
* const a = document.createElement('a');
|
|
217
|
+
* a.href = url;
|
|
218
|
+
* a.download = fileName;
|
|
219
|
+
* a.click();
|
|
220
|
+
* URL.revokeObjectURL(url);
|
|
221
|
+
* });
|
|
222
|
+
* ```
|
|
223
|
+
*
|
|
224
|
+
* **Node.js example** — write the blob to disk:
|
|
225
|
+
* ```js
|
|
226
|
+
* const { blob } = await downloadResource(recipe.attachmentKey);
|
|
227
|
+
* const buffer = Buffer.from(await blob.arrayBuffer());
|
|
228
|
+
* fs.writeFileSync('attachment.pdf', buffer);
|
|
229
|
+
* ```
|
|
230
|
+
*
|
|
231
|
+
* @param resourceKey - Key of the content resource to fetch
|
|
232
|
+
* @returns Promise resolving to `{ blob, fileName }`
|
|
233
|
+
*/
|
|
234
|
+
function downloadResource(resourceKey) {
|
|
235
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
236
|
+
var _a, _b;
|
|
237
|
+
if (!sdk_general_1.getAuthToken) {
|
|
238
|
+
const errorMessage = 'SDK not initialized.';
|
|
239
|
+
console.error(errorMessage);
|
|
240
|
+
throw new Error(errorMessage);
|
|
241
|
+
}
|
|
242
|
+
const url = `${sdk_general_1.serviceAddress}/filecontent/${sdk_general_1.sandboxKey}/${resourceKey}`;
|
|
243
|
+
const authToken = yield (0, rxjs_1.lastValueFrom)((0, sdk_general_1.getAuthToken)());
|
|
244
|
+
console.log("Sending GET request to " + url + " with token " + authToken);
|
|
245
|
+
const response = yield axios_1.default.get(url, {
|
|
246
|
+
headers: { "Authorization": `Bearer ${authToken}` },
|
|
247
|
+
responseType: 'blob',
|
|
248
|
+
});
|
|
249
|
+
const blob = response.data;
|
|
250
|
+
const disposition = (_a = response.headers['content-disposition']) !== null && _a !== void 0 ? _a : '';
|
|
251
|
+
const match = disposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);
|
|
252
|
+
const fileName = ((_b = match === null || match === void 0 ? void 0 : match[1]) !== null && _b !== void 0 ? _b : '').replace(/['"]/g, '') || resourceKey;
|
|
253
|
+
return { blob, fileName };
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Observable version of downloadResource. See downloadResource for details.
|
|
258
|
+
*/
|
|
259
|
+
function downloadResourceAsObservable(resourceKey) {
|
|
260
|
+
return (0, rxjs_1.from)(downloadResource(resourceKey));
|
|
261
|
+
}
|
package/lib/cjs/index.js
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
// Unauthorized use outside the Halix platform is prohibited.
|
|
9
9
|
// Full license terms available in the LICENSE file.
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.
|
|
12
|
-
exports.debounceFn = exports.getValueFromObject = exports.compareValues = exports.sortObjectArray = exports.sendAIMessageAsObservable = exports.sendAIMessage = exports.submitStandalonePaymentAsObservable = exports.submitStandalonePayment = exports.getAggregateDataAsObservable = exports.getAggregateData = void 0;
|
|
11
|
+
exports.massDelete = exports.massEditAsObservable = exports.massEdit = exports.getListDataAsObservable = exports.getListData = exports.getOrganizationPreferenceAsObservable = exports.getUserPreferenceAsObservable = exports.getOrganizationPreference = exports.getUserPreference = exports.sendMessageAsObservable = exports.sendMessage = exports.MessageMethod = exports.downloadResourceAsObservable = exports.downloadResource = exports.createOrUpdateResourceAsObservable = exports.createOrUpdateResource = exports.sendFileContentsAsObservable = exports.sendFileContents = exports.saveResourceAsObservable = exports.saveResource = exports.getOrCreateResourceAsObservable = exports.getOrCreateResource = exports.deleteRelatedObjectsAsObservable = exports.deleteRelatedObjects = exports.deleteRelatedObjectAsObservable = exports.deleteRelatedObject = exports.deleteObjectAsObservable = exports.deleteObject = exports.saveRelatedObjectAsObservable = exports.saveRelatedObject = exports.saveObjectAsObservable = exports.saveObject = exports.getObjectsAsObservable = exports.getObjects = exports.getAccessibleObjectsAsObservable = exports.getAccessibleObjects = exports.getRelatedObjectsAsObservable = exports.getRelatedObjects = exports.getObjectAsObservable = exports.getObject = exports.prepareErrorResponse = exports.prepareSuccessResponse = exports.initialize = exports.useBody = exports.params = exports.userContext = exports.actionSubject = exports.serviceAddress = exports.sandboxKey = exports.getAuthToken = void 0;
|
|
12
|
+
exports.debounceFn = exports.getValueFromObject = exports.compareValues = exports.sortObjectArray = exports.sendAIMessageAsObservable = exports.sendAIMessage = exports.submitStandalonePaymentAsObservable = exports.submitStandalonePayment = exports.getAggregateDataAsObservable = exports.getAggregateData = exports.AggregationResponse = exports.massDeleteAsObservable = void 0;
|
|
13
13
|
/**
|
|
14
14
|
* @module @halix/action-sdk
|
|
15
15
|
* @description Halix Platform action SDK for developing NodeJS Lambda-based actions on the Halix
|
|
@@ -70,6 +70,8 @@ Object.defineProperty(exports, "sendFileContents", { enumerable: true, get: func
|
|
|
70
70
|
Object.defineProperty(exports, "sendFileContentsAsObservable", { enumerable: true, get: function () { return content_1.sendFileContentsAsObservable; } });
|
|
71
71
|
Object.defineProperty(exports, "createOrUpdateResource", { enumerable: true, get: function () { return content_1.createOrUpdateResource; } });
|
|
72
72
|
Object.defineProperty(exports, "createOrUpdateResourceAsObservable", { enumerable: true, get: function () { return content_1.createOrUpdateResourceAsObservable; } });
|
|
73
|
+
Object.defineProperty(exports, "downloadResource", { enumerable: true, get: function () { return content_1.downloadResource; } });
|
|
74
|
+
Object.defineProperty(exports, "downloadResourceAsObservable", { enumerable: true, get: function () { return content_1.downloadResourceAsObservable; } });
|
|
73
75
|
// ================================================================================
|
|
74
76
|
// MESSAGING FUNCTIONS
|
|
75
77
|
// ================================================================================
|
|
@@ -58,4 +58,46 @@ export declare function createOrUpdateResource(resourceKey: string | null, fileT
|
|
|
58
58
|
* Observable version of createOrUpdateResource. See createOrUpdateResource for details.
|
|
59
59
|
*/
|
|
60
60
|
export declare function createOrUpdateResourceAsObservable(resourceKey: string | null, fileToUpload: File | Blob, publicFlag: boolean, resourceType: string, tags: string[]): Observable<ContentResource>;
|
|
61
|
+
/**
|
|
62
|
+
* Fetches a file resource from the Halix content service and returns it as a `Blob` along with
|
|
63
|
+
* the filename derived from the `Content-Disposition` response header (falling back to
|
|
64
|
+
* `resourceKey` when the header is absent).
|
|
65
|
+
*
|
|
66
|
+
* This function is environment-agnostic: it performs only the authenticated HTTP fetch and leaves
|
|
67
|
+
* all presentation logic to the caller.
|
|
68
|
+
*
|
|
69
|
+
* **Browser download example** — trigger the native Save dialog from a click handler:
|
|
70
|
+
* ```js
|
|
71
|
+
* button.addEventListener('click', async () => {
|
|
72
|
+
* const { blob, fileName } = await downloadResource(recipe.attachmentKey);
|
|
73
|
+
* const url = URL.createObjectURL(blob);
|
|
74
|
+
* const a = document.createElement('a');
|
|
75
|
+
* a.href = url;
|
|
76
|
+
* a.download = fileName;
|
|
77
|
+
* a.click();
|
|
78
|
+
* URL.revokeObjectURL(url);
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* **Node.js example** — write the blob to disk:
|
|
83
|
+
* ```js
|
|
84
|
+
* const { blob } = await downloadResource(recipe.attachmentKey);
|
|
85
|
+
* const buffer = Buffer.from(await blob.arrayBuffer());
|
|
86
|
+
* fs.writeFileSync('attachment.pdf', buffer);
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @param resourceKey - Key of the content resource to fetch
|
|
90
|
+
* @returns Promise resolving to `{ blob, fileName }`
|
|
91
|
+
*/
|
|
92
|
+
export declare function downloadResource(resourceKey: string): Promise<{
|
|
93
|
+
blob: Blob;
|
|
94
|
+
fileName: string;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* Observable version of downloadResource. See downloadResource for details.
|
|
98
|
+
*/
|
|
99
|
+
export declare function downloadResourceAsObservable(resourceKey: string): Observable<{
|
|
100
|
+
blob: Blob;
|
|
101
|
+
fileName: string;
|
|
102
|
+
}>;
|
|
61
103
|
//# sourceMappingURL=content.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/content.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/content.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/types/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { getAuthToken, sandboxKey, serviceAddress, actionSubject, userContext, params, useBody, initialize, type UserContext, type IncomingEventBody, type BaseActionResponse, type ActionResponse, type NotificationConfig, type ListActionResponse, type FormTemplateActionResponse, type PageTemplateActionResponse, type ObjectSaveActionResponse, type CalculatedFieldActionResponse, type SingleValueActionResponse, type ErrorResponse, prepareSuccessResponse, prepareErrorResponse } from './sdk-general';
|
|
7
7
|
export { type SaveOptions, getObject, getObjectAsObservable, getRelatedObjects, getRelatedObjectsAsObservable, getAccessibleObjects, getAccessibleObjectsAsObservable, getObjects, getObjectsAsObservable, saveObject, saveObjectAsObservable, saveRelatedObject, saveRelatedObjectAsObservable, deleteObject, deleteObjectAsObservable, deleteRelatedObject, deleteRelatedObjectAsObservable, deleteRelatedObjects, deleteRelatedObjectsAsObservable } from './data-crud';
|
|
8
|
-
export { type ContentResource, getOrCreateResource, getOrCreateResourceAsObservable, saveResource, saveResourceAsObservable, sendFileContents, sendFileContentsAsObservable, createOrUpdateResource, createOrUpdateResourceAsObservable } from './content';
|
|
8
|
+
export { type ContentResource, getOrCreateResource, getOrCreateResourceAsObservable, saveResource, saveResourceAsObservable, sendFileContents, sendFileContentsAsObservable, createOrUpdateResource, createOrUpdateResourceAsObservable, downloadResource, downloadResourceAsObservable } from './content';
|
|
9
9
|
export { MessageMethod, type MessageRequest, sendMessage, sendMessageAsObservable } from './messaging';
|
|
10
10
|
export { getUserPreference, getOrganizationPreference, getUserPreferenceAsObservable, getOrganizationPreferenceAsObservable } from './preferences';
|
|
11
11
|
export { type SortField, type DataSortField, type BaseListDataRequest, type PagedListDataRequest, type ListDataResponse, type ListDataOptions, type ListDataSearchOptions, type MassEditValueType, type MassEditRequest, type MassDeleteRequest, type MassChangeResponse, getListData, getListDataAsObservable, massEdit, massEditAsObservable, massDelete, massDeleteAsObservable } from './lists';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AASA;;;;GAIG;AAMH,OAAO,EAEH,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,MAAM,EACN,OAAO,EAGP,UAAU,EAGV,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAGtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAGlB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAEH,KAAK,WAAW,EAGhB,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,6BAA6B,EAC7B,oBAAoB,EACpB,gCAAgC,EAChC,UAAU,EACV,sBAAsB,EAGtB,UAAU,EACV,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B,EAG7B,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,+BAA+B,EAC/B,oBAAoB,EACpB,gCAAgC,EACnC,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEH,KAAK,eAAe,EAGpB,mBAAmB,EACnB,+BAA+B,EAC/B,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,kCAAkC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AASA;;;;GAIG;AAMH,OAAO,EAEH,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,MAAM,EACN,OAAO,EAGP,UAAU,EAGV,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAGtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAGlB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAEH,KAAK,WAAW,EAGhB,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,6BAA6B,EAC7B,oBAAoB,EACpB,gCAAgC,EAChC,UAAU,EACV,sBAAsB,EAGtB,UAAU,EACV,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B,EAG7B,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,+BAA+B,EAC/B,oBAAoB,EACpB,gCAAgC,EACnC,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEH,KAAK,eAAe,EAGpB,mBAAmB,EACnB,+BAA+B,EAC/B,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,kCAAkC,EAClC,gBAAgB,EAChB,4BAA4B,EAC/B,MAAM,WAAW,CAAC;AAMnB,OAAO,EAEH,aAAa,EAGb,KAAK,cAAc,EAGnB,WAAW,EACX,uBAAuB,EAC1B,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEH,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,qCAAqC,EACxC,MAAM,eAAe,CAAC;AAMvB,OAAO,EAEH,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGvB,WAAW,EACX,uBAAuB,EACvB,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,sBAAsB,EACzB,MAAM,SAAS,CAAC;AAMjB,OAAO,EAEH,mBAAmB,EAGnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAClB,KAAK,eAAe,EAGpB,gBAAgB,EAChB,4BAA4B,EAC/B,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAEH,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAG5B,uBAAuB,EACvB,mCAAmC,EACtC,MAAM,YAAY,CAAC;AAMpB,OAAO,EAEH,KAAK,gBAAgB,EAGrB,aAAa,EACb,yBAAyB,EAC5B,MAAM,MAAM,CAAC;AAMd,OAAO,EACH,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,UAAU,EACb,MAAM,aAAa,CAAC"}
|
package/lib/esm/content.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* Key features:
|
|
15
15
|
* - Retrieve content resources (images, documents, etc.)
|
|
16
16
|
* - Upload/save content resources (images, documents, etc.)
|
|
17
|
+
* - Download file resources in the browser (e.g. as a button click handler)
|
|
17
18
|
*/
|
|
18
19
|
import axios from 'axios';
|
|
19
20
|
import { from, lastValueFrom } from 'rxjs';
|
|
@@ -167,4 +168,60 @@ export async function createOrUpdateResource(resourceKey, fileToUpload, publicFl
|
|
|
167
168
|
export function createOrUpdateResourceAsObservable(resourceKey, fileToUpload, publicFlag, resourceType, tags) {
|
|
168
169
|
return from(createOrUpdateResource(resourceKey, fileToUpload, publicFlag, resourceType, tags));
|
|
169
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Fetches a file resource from the Halix content service and returns it as a `Blob` along with
|
|
173
|
+
* the filename derived from the `Content-Disposition` response header (falling back to
|
|
174
|
+
* `resourceKey` when the header is absent).
|
|
175
|
+
*
|
|
176
|
+
* This function is environment-agnostic: it performs only the authenticated HTTP fetch and leaves
|
|
177
|
+
* all presentation logic to the caller.
|
|
178
|
+
*
|
|
179
|
+
* **Browser download example** — trigger the native Save dialog from a click handler:
|
|
180
|
+
* ```js
|
|
181
|
+
* button.addEventListener('click', async () => {
|
|
182
|
+
* const { blob, fileName } = await downloadResource(recipe.attachmentKey);
|
|
183
|
+
* const url = URL.createObjectURL(blob);
|
|
184
|
+
* const a = document.createElement('a');
|
|
185
|
+
* a.href = url;
|
|
186
|
+
* a.download = fileName;
|
|
187
|
+
* a.click();
|
|
188
|
+
* URL.revokeObjectURL(url);
|
|
189
|
+
* });
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
192
|
+
* **Node.js example** — write the blob to disk:
|
|
193
|
+
* ```js
|
|
194
|
+
* const { blob } = await downloadResource(recipe.attachmentKey);
|
|
195
|
+
* const buffer = Buffer.from(await blob.arrayBuffer());
|
|
196
|
+
* fs.writeFileSync('attachment.pdf', buffer);
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
199
|
+
* @param resourceKey - Key of the content resource to fetch
|
|
200
|
+
* @returns Promise resolving to `{ blob, fileName }`
|
|
201
|
+
*/
|
|
202
|
+
export async function downloadResource(resourceKey) {
|
|
203
|
+
if (!getAuthToken) {
|
|
204
|
+
const errorMessage = 'SDK not initialized.';
|
|
205
|
+
console.error(errorMessage);
|
|
206
|
+
throw new Error(errorMessage);
|
|
207
|
+
}
|
|
208
|
+
const url = `${serviceAddress}/filecontent/${sandboxKey}/${resourceKey}`;
|
|
209
|
+
const authToken = await lastValueFrom(getAuthToken());
|
|
210
|
+
console.log("Sending GET request to " + url + " with token " + authToken);
|
|
211
|
+
const response = await axios.get(url, {
|
|
212
|
+
headers: { "Authorization": `Bearer ${authToken}` },
|
|
213
|
+
responseType: 'blob',
|
|
214
|
+
});
|
|
215
|
+
const blob = response.data;
|
|
216
|
+
const disposition = response.headers['content-disposition'] ?? '';
|
|
217
|
+
const match = disposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);
|
|
218
|
+
const fileName = (match?.[1] ?? '').replace(/['"]/g, '') || resourceKey;
|
|
219
|
+
return { blob, fileName };
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Observable version of downloadResource. See downloadResource for details.
|
|
223
|
+
*/
|
|
224
|
+
export function downloadResourceAsObservable(resourceKey) {
|
|
225
|
+
return from(downloadResource(resourceKey));
|
|
226
|
+
}
|
|
170
227
|
//# sourceMappingURL=content.js.map
|
package/lib/esm/content.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/content.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,mCAAmC;AACnC,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,EAAE;AACF,6DAA6D;AAC7D,oDAAoD;AAEpD
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/content.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,mCAAmC;AACnC,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,EAAE;AACF,6DAA6D;AAC7D,oDAAoD;AAEpD;;;;GAIG;AAEH,mFAAmF;AACnF,sDAAsD;AACtD,mFAAmF;AAEnF,OAAO;AACH,UAAU;AACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,MAAM,EACN,OAAO;AAEP,iBAAiB;AACjB,UAAU;AAkBV,mBAAmB;AACnB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,eAAe,CAAC;AAEvB,mFAAmF;AACnF,sBAAsB;AACtB,mFAAmF;AAEnF,OAAO;AAIH,iBAAiB;AACjB,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,6BAA6B,EAC7B,oBAAoB,EACpB,gCAAgC,EAChC,UAAU,EACV,sBAAsB;AAEtB,YAAY;AACZ,UAAU,EACV,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B;AAE7B,cAAc;AACd,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,+BAA+B,EAC/B,oBAAoB,EACpB,gCAAgC,EACnC,MAAM,aAAa,CAAC;AAErB,mFAAmF;AACnF,oBAAoB;AACpB,mFAAmF;AAEnF,OAAO;AAIH,oBAAoB;AACpB,mBAAmB,EACnB,+BAA+B,EAC/B,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,kCAAkC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,mCAAmC;AACnC,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,EAAE;AACF,6DAA6D;AAC7D,oDAAoD;AAEpD;;;;GAIG;AAEH,mFAAmF;AACnF,sDAAsD;AACtD,mFAAmF;AAEnF,OAAO;AACH,UAAU;AACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,MAAM,EACN,OAAO;AAEP,iBAAiB;AACjB,UAAU;AAkBV,mBAAmB;AACnB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,eAAe,CAAC;AAEvB,mFAAmF;AACnF,sBAAsB;AACtB,mFAAmF;AAEnF,OAAO;AAIH,iBAAiB;AACjB,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,6BAA6B,EAC7B,oBAAoB,EACpB,gCAAgC,EAChC,UAAU,EACV,sBAAsB;AAEtB,YAAY;AACZ,UAAU,EACV,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B;AAE7B,cAAc;AACd,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,+BAA+B,EAC/B,oBAAoB,EACpB,gCAAgC,EACnC,MAAM,aAAa,CAAC;AAErB,mFAAmF;AACnF,oBAAoB;AACpB,mFAAmF;AAEnF,OAAO;AAIH,oBAAoB;AACpB,mBAAmB,EACnB,+BAA+B,EAC/B,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,kCAAkC,EAClC,gBAAgB,EAChB,4BAA4B,EAC/B,MAAM,WAAW,CAAC;AAEnB,mFAAmF;AACnF,sBAAsB;AACtB,mFAAmF;AAEnF,OAAO;AACH,kBAAkB;AAClB,aAAa;AAKb,sBAAsB;AACtB,WAAW,EACX,uBAAuB,EAC1B,MAAM,aAAa,CAAC;AAErB,mFAAmF;AACnF,uBAAuB;AACvB,mFAAmF;AAEnF,OAAO;AACH,uBAAuB;AACvB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,qCAAqC,EACxC,MAAM,eAAe,CAAC;AAEvB,mFAAmF;AACnF,sBAAsB;AACtB,mFAAmF;AAEnF,OAAO;AAcH,YAAY;AACZ,WAAW,EACX,uBAAuB,EACvB,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,sBAAsB,EACzB,MAAM,SAAS,CAAC;AAEjB,mFAAmF;AACnF,2BAA2B;AAC3B,mFAAmF;AAEnF,OAAO;AACH,UAAU;AACV,mBAAmB;AAYnB,YAAY;AACZ,gBAAgB,EAChB,4BAA4B,EAC/B,MAAM,kBAAkB,CAAC;AAE1B,mFAAmF;AACnF,oBAAoB;AACpB,mFAAmF;AAEnF,OAAO;AAMH,YAAY;AACZ,uBAAuB,EACvB,mCAAmC,EACtC,MAAM,YAAY,CAAC;AAEpB,mFAAmF;AACnF,eAAe;AACf,mFAAmF;AAEnF,OAAO;AAIH,eAAe;AACf,aAAa,EACb,yBAAyB,EAC5B,MAAM,MAAM,CAAC;AAEd,mFAAmF;AACnF,oBAAoB;AACpB,mFAAmF;AAEnF,OAAO,EACH,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,UAAU,EACb,MAAM,aAAa,CAAC"}
|
package/lib/esm/index.mjs
CHANGED
|
@@ -36,7 +36,7 @@ deleteObject, deleteObjectAsObservable, deleteRelatedObject, deleteRelatedObject
|
|
|
36
36
|
// ================================================================================
|
|
37
37
|
export {
|
|
38
38
|
// Content Functions
|
|
39
|
-
getOrCreateResource, getOrCreateResourceAsObservable, saveResource, saveResourceAsObservable, sendFileContents, sendFileContentsAsObservable, createOrUpdateResource, createOrUpdateResourceAsObservable } from './content';
|
|
39
|
+
getOrCreateResource, getOrCreateResourceAsObservable, saveResource, saveResourceAsObservable, sendFileContents, sendFileContentsAsObservable, createOrUpdateResource, createOrUpdateResourceAsObservable, downloadResource, downloadResourceAsObservable } from './content';
|
|
40
40
|
// ================================================================================
|
|
41
41
|
// MESSAGING FUNCTIONS
|
|
42
42
|
// ================================================================================
|
|
@@ -58,3 +58,45 @@ export declare function createOrUpdateResource(resourceKey: string | null, fileT
|
|
|
58
58
|
* Observable version of createOrUpdateResource. See createOrUpdateResource for details.
|
|
59
59
|
*/
|
|
60
60
|
export declare function createOrUpdateResourceAsObservable(resourceKey: string | null, fileToUpload: File | Blob, publicFlag: boolean, resourceType: string, tags: string[]): Observable<ContentResource>;
|
|
61
|
+
/**
|
|
62
|
+
* Fetches a file resource from the Halix content service and returns it as a `Blob` along with
|
|
63
|
+
* the filename derived from the `Content-Disposition` response header (falling back to
|
|
64
|
+
* `resourceKey` when the header is absent).
|
|
65
|
+
*
|
|
66
|
+
* This function is environment-agnostic: it performs only the authenticated HTTP fetch and leaves
|
|
67
|
+
* all presentation logic to the caller.
|
|
68
|
+
*
|
|
69
|
+
* **Browser download example** — trigger the native Save dialog from a click handler:
|
|
70
|
+
* ```js
|
|
71
|
+
* button.addEventListener('click', async () => {
|
|
72
|
+
* const { blob, fileName } = await downloadResource(recipe.attachmentKey);
|
|
73
|
+
* const url = URL.createObjectURL(blob);
|
|
74
|
+
* const a = document.createElement('a');
|
|
75
|
+
* a.href = url;
|
|
76
|
+
* a.download = fileName;
|
|
77
|
+
* a.click();
|
|
78
|
+
* URL.revokeObjectURL(url);
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* **Node.js example** — write the blob to disk:
|
|
83
|
+
* ```js
|
|
84
|
+
* const { blob } = await downloadResource(recipe.attachmentKey);
|
|
85
|
+
* const buffer = Buffer.from(await blob.arrayBuffer());
|
|
86
|
+
* fs.writeFileSync('attachment.pdf', buffer);
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @param resourceKey - Key of the content resource to fetch
|
|
90
|
+
* @returns Promise resolving to `{ blob, fileName }`
|
|
91
|
+
*/
|
|
92
|
+
export declare function downloadResource(resourceKey: string): Promise<{
|
|
93
|
+
blob: Blob;
|
|
94
|
+
fileName: string;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* Observable version of downloadResource. See downloadResource for details.
|
|
98
|
+
*/
|
|
99
|
+
export declare function downloadResourceAsObservable(resourceKey: string): Observable<{
|
|
100
|
+
blob: Blob;
|
|
101
|
+
fileName: string;
|
|
102
|
+
}>;
|
package/lib/esm/types/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { getAuthToken, sandboxKey, serviceAddress, actionSubject, userContext, params, useBody, initialize, type UserContext, type IncomingEventBody, type BaseActionResponse, type ActionResponse, type NotificationConfig, type ListActionResponse, type FormTemplateActionResponse, type PageTemplateActionResponse, type ObjectSaveActionResponse, type CalculatedFieldActionResponse, type SingleValueActionResponse, type ErrorResponse, prepareSuccessResponse, prepareErrorResponse } from './sdk-general';
|
|
7
7
|
export { type SaveOptions, getObject, getObjectAsObservable, getRelatedObjects, getRelatedObjectsAsObservable, getAccessibleObjects, getAccessibleObjectsAsObservable, getObjects, getObjectsAsObservable, saveObject, saveObjectAsObservable, saveRelatedObject, saveRelatedObjectAsObservable, deleteObject, deleteObjectAsObservable, deleteRelatedObject, deleteRelatedObjectAsObservable, deleteRelatedObjects, deleteRelatedObjectsAsObservable } from './data-crud';
|
|
8
|
-
export { type ContentResource, getOrCreateResource, getOrCreateResourceAsObservable, saveResource, saveResourceAsObservable, sendFileContents, sendFileContentsAsObservable, createOrUpdateResource, createOrUpdateResourceAsObservable } from './content';
|
|
8
|
+
export { type ContentResource, getOrCreateResource, getOrCreateResourceAsObservable, saveResource, saveResourceAsObservable, sendFileContents, sendFileContentsAsObservable, createOrUpdateResource, createOrUpdateResourceAsObservable, downloadResource, downloadResourceAsObservable } from './content';
|
|
9
9
|
export { MessageMethod, type MessageRequest, sendMessage, sendMessageAsObservable } from './messaging';
|
|
10
10
|
export { getUserPreference, getOrganizationPreference, getUserPreferenceAsObservable, getOrganizationPreferenceAsObservable } from './preferences';
|
|
11
11
|
export { type SortField, type DataSortField, type BaseListDataRequest, type PagedListDataRequest, type ListDataResponse, type ListDataOptions, type ListDataSearchOptions, type MassEditValueType, type MassEditRequest, type MassDeleteRequest, type MassChangeResponse, getListData, getListDataAsObservable, massEdit, massEditAsObservable, massDelete, massDeleteAsObservable } from './lists';
|