@researchdatabox/redbox-core 0.0.1-beta.10213 → 0.0.1-beta.10300

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 (110) hide show
  1. package/dist/CoreController.d.ts +8 -0
  2. package/dist/CoreController.d.ts.map +1 -1
  3. package/dist/CoreController.js +87 -52
  4. package/dist/api-routes/groups/export.js +2 -2
  5. package/dist/config/brandingConfigurationDefaults.config.d.ts +1 -1
  6. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  7. package/dist/config/brandingConfigurationDefaults.config.js +9 -230
  8. package/dist/config/dashboardtype.config.d.ts +7 -0
  9. package/dist/config/dashboardtype.config.d.ts.map +1 -1
  10. package/dist/config/dashboardtype.config.js +9 -89
  11. package/dist/config/dashboardview.config.d.ts +7 -0
  12. package/dist/config/dashboardview.config.d.ts.map +1 -1
  13. package/dist/config/dashboardview.config.js +9 -134
  14. package/dist/config/http.config.d.ts +2 -0
  15. package/dist/config/http.config.d.ts.map +1 -1
  16. package/dist/config/http.config.js +47 -1
  17. package/dist/config/jsonld.config.d.ts.map +1 -1
  18. package/dist/config/jsonld.config.js +2 -21
  19. package/dist/config/record.config.d.ts.map +1 -1
  20. package/dist/config/record.config.js +2 -9
  21. package/dist/config/recordtype.config.d.ts +8 -0
  22. package/dist/config/recordtype.config.d.ts.map +1 -1
  23. package/dist/config/recordtype.config.js +10 -660
  24. package/dist/config/routes.config.d.ts.map +1 -1
  25. package/dist/config/routes.config.js +2 -3
  26. package/dist/config/storage.config.d.ts.map +1 -1
  27. package/dist/config/storage.config.js +7 -1
  28. package/dist/config/views.config.d.ts.map +1 -1
  29. package/dist/config/views.config.js +2 -6
  30. package/dist/config/workflow.config.d.ts +7 -0
  31. package/dist/config/workflow.config.d.ts.map +1 -1
  32. package/dist/config/workflow.config.js +9 -194
  33. package/dist/config/workspacetype.config.d.ts +7 -0
  34. package/dist/config/workspacetype.config.d.ts.map +1 -1
  35. package/dist/config/workspacetype.config.js +9 -10
  36. package/dist/configmodels/DoiPublishing.d.ts +1 -1
  37. package/dist/configmodels/DoiPublishing.d.ts.map +1 -1
  38. package/dist/configmodels/FigsharePublishing.d.ts +24 -1
  39. package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
  40. package/dist/configmodels/FigsharePublishing.js +152 -131
  41. package/dist/constants/export.d.ts +2 -0
  42. package/dist/constants/export.d.ts.map +1 -0
  43. package/dist/constants/export.js +8 -0
  44. package/dist/controllers/ExportController.d.ts.map +1 -1
  45. package/dist/controllers/ExportController.js +4 -3
  46. package/dist/controllers/RecordController.d.ts.map +1 -1
  47. package/dist/controllers/RecordController.js +2 -1
  48. package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
  49. package/dist/controllers/webservice/ExportController.js +4 -3
  50. package/dist/form-config/index.d.ts +7 -0
  51. package/dist/form-config/index.d.ts.map +1 -1
  52. package/dist/form-config/index.js +8 -5
  53. package/dist/hooks/hookDiscovery.d.ts +20 -0
  54. package/dist/hooks/hookDiscovery.d.ts.map +1 -0
  55. package/dist/hooks/hookDiscovery.js +186 -0
  56. package/dist/hooks/hookResources.d.ts +23 -0
  57. package/dist/hooks/hookResources.d.ts.map +1 -0
  58. package/dist/hooks/hookResources.js +136 -0
  59. package/dist/hooks/index.d.ts +4 -0
  60. package/dist/hooks/index.d.ts.map +1 -1
  61. package/dist/hooks/index.js +14 -2
  62. package/dist/index.d.ts +4 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +14 -2
  65. package/dist/loader/index.d.ts.map +1 -1
  66. package/dist/loader/index.js +21 -62
  67. package/dist/services/EmailService.d.ts +2 -8
  68. package/dist/services/EmailService.d.ts.map +1 -1
  69. package/dist/services/EmailService.js +8 -26
  70. package/dist/services/FigshareService.d.ts.map +1 -1
  71. package/dist/services/FigshareService.js +5 -4
  72. package/dist/services/NamedQueryService.d.ts.map +1 -1
  73. package/dist/services/NamedQueryService.js +3 -16
  74. package/dist/services/RecordsService.d.ts +1 -0
  75. package/dist/services/RecordsService.d.ts.map +1 -1
  76. package/dist/services/RecordsService.js +30 -10
  77. package/dist/services/ReportsService.d.ts +0 -5
  78. package/dist/services/ReportsService.d.ts.map +1 -1
  79. package/dist/services/ReportsService.js +2 -19
  80. package/dist/services/StandardDatastreamService.d.ts +7 -0
  81. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  82. package/dist/services/StandardDatastreamService.js +127 -27
  83. package/dist/services/TemplateService.d.ts +0 -14
  84. package/dist/services/TemplateService.d.ts.map +1 -1
  85. package/dist/services/TemplateService.js +4 -45
  86. package/dist/services/ViewUtilsService.d.ts +5 -1
  87. package/dist/services/ViewUtilsService.d.ts.map +1 -1
  88. package/dist/services/ViewUtilsService.js +38 -46
  89. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  90. package/dist/services/doi-v2/bindings.js +2 -11
  91. package/dist/services/figshare-v2/assets.d.ts +2 -1
  92. package/dist/services/figshare-v2/assets.d.ts.map +1 -1
  93. package/dist/services/figshare-v2/assets.js +144 -89
  94. package/dist/services/figshare-v2/bindings.d.ts +0 -1
  95. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  96. package/dist/services/figshare-v2/bindings.js +2 -12
  97. package/dist/services/figshare-v2/context.d.ts.map +1 -1
  98. package/dist/services/figshare-v2/context.js +11 -2
  99. package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -1
  100. package/dist/storage/TusStorageManagerDataStore.js +14 -1
  101. package/dist/utilities/ContextVariableUtils.d.ts +3 -1
  102. package/dist/utilities/ContextVariableUtils.d.ts.map +1 -1
  103. package/dist/utilities/ContextVariableUtils.js +25 -7
  104. package/package.json +5 -5
  105. package/dist/form-config/dataRecord-1.0-draft.d.ts +0 -4
  106. package/dist/form-config/dataRecord-1.0-draft.d.ts.map +0 -1
  107. package/dist/form-config/dataRecord-1.0-draft.js +0 -1042
  108. package/dist/form-config/default-1.0-draft.d.ts +0 -4
  109. package/dist/form-config/default-1.0-draft.d.ts.map +0 -1
  110. package/dist/form-config/default-1.0-draft.js +0 -1156
@@ -4,33 +4,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.syncAssetsPhase = syncAssetsPhase;
7
- const fs_1 = __importDefault(require("fs"));
8
7
  const path_1 = __importDefault(require("path"));
9
- const check_disk_space_1 = __importDefault(require("check-disk-space"));
8
+ const node_crypto_1 = require("node:crypto");
9
+ const node_stream_1 = require("node:stream");
10
10
  const RBValidationError_1 = require("../../model/RBValidationError");
11
11
  const config_1 = require("./config");
12
12
  const plan_1 = require("./plan");
13
- const UNKNOWN_SIZE_STAGING_BUFFER_BYTES = 50 * 1024 * 1024;
14
13
  const LINK_FILE_CREATE_RETRY_COUNT = 3;
15
14
  const FIGSHARE_UPLOAD_PENDING_STATUS = 'created';
16
- function getTempDir(config) {
17
- const configDir = config.assets.staging.tempDir;
18
- if (configDir)
19
- return configDir;
20
- return '/tmp';
21
- }
15
+ const DEFAULT_FIGSHARE_STAGING_DISK = 'figshare-staging';
22
16
  function getRecordOid(record) {
23
17
  return record.redboxOid ?? record.id ?? '';
24
18
  }
25
19
  function getDatastreamService() {
26
20
  const recordConfig = sails.config.record;
27
21
  const serviceName = String(recordConfig?.datastreamService ?? '');
28
- return serviceName ? sails.services?.[serviceName] : undefined;
22
+ return serviceName
23
+ ? sails.services?.[serviceName]
24
+ : undefined;
29
25
  }
30
26
  function validationError(message) {
31
27
  return new RBValidationError_1.RBValidationError({
32
28
  message,
33
- displayErrors: [{ title: message, detail: message }]
29
+ displayErrors: [{ title: message, detail: message }],
34
30
  });
35
31
  }
36
32
  async function getAttachmentStream(oid, fileId) {
@@ -44,21 +40,105 @@ async function getAttachmentStream(oid, fileId) {
44
40
  }
45
41
  return response;
46
42
  }
47
- async function stageAttachmentToDisk(response, filePath) {
48
- await fs_1.default.promises.mkdir(path_1.default.dirname(filePath), { recursive: true });
49
- const readStream = response.readstream;
50
- await new Promise((resolve, reject) => {
51
- const writeStream = fs_1.default.createWriteStream(filePath);
52
- readStream.on('error', reject);
53
- writeStream.on('error', reject);
54
- writeStream.on('close', () => resolve());
55
- readStream.pipe(writeStream);
56
- });
57
- const stat = await fs_1.default.promises.stat(filePath);
58
- return stat.size;
43
+ async function ensureAttachmentDatastream(oid, fileId) {
44
+ const response = await getAttachmentStream(oid, fileId);
45
+ const stream = response.readstream;
46
+ if (typeof stream?.destroy === 'function') {
47
+ const ignoreDestroyError = () => undefined;
48
+ const removeDestroyErrorHandler = () => {
49
+ stream.off('error', ignoreDestroyError);
50
+ stream.off('close', removeDestroyErrorHandler);
51
+ stream.off('finish', removeDestroyErrorHandler);
52
+ };
53
+ stream.once('error', ignoreDestroyError);
54
+ stream.once('close', removeDestroyErrorHandler);
55
+ stream.once('finish', removeDestroyErrorHandler);
56
+ stream.destroy();
57
+ }
59
58
  }
60
59
  function sanitizePathComponent(value) {
61
- return value.replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '') || 'item';
60
+ return (value
61
+ .replace(/[^A-Za-z0-9._-]+/g, '-')
62
+ .replace(/-+/g, '-')
63
+ .replace(/-\./g, '.')
64
+ .replace(/^-+|-+$/g, '') || 'item');
65
+ }
66
+ function getStagingDisk(config) {
67
+ const diskName = config.assets.staging.disk?.trim();
68
+ if (!diskName) {
69
+ return StorageManagerService.stagingDisk();
70
+ }
71
+ try {
72
+ return StorageManagerService.disk(diskName);
73
+ }
74
+ catch (error) {
75
+ if (diskName !== DEFAULT_FIGSHARE_STAGING_DISK) {
76
+ throw error;
77
+ }
78
+ // A deployment that overrides storage.disks may not register the default
79
+ // 'figshare-staging' disk. Fall back to the configured staging disk rather
80
+ // than failing the upload before staging starts.
81
+ sails.log.warn(`FigService - staging disk '${diskName}' is not registered; falling back to the default staging disk`, error);
82
+ return StorageManagerService.stagingDisk();
83
+ }
84
+ }
85
+ function buildStagingKey(config, articleId, oid, fileId, fileName, logger) {
86
+ const prefix = (config.assets.staging.keyPrefix ?? 'figshare/').replace(/^\/+|\/+$/g, '') || 'figshare';
87
+ const originalFileName = path_1.default.basename(fileName).trim();
88
+ if (originalFileName === '') {
89
+ throw validationError(`Attachment '${fileName}' does not contain a valid file name`);
90
+ }
91
+ // basename() can still yield the reserved '.'/'..' segments, which would point the
92
+ // staging key at the directory itself or escape it on an fs-backed disk.
93
+ if (originalFileName === '.' || originalFileName === '..') {
94
+ throw validationError(`Attachment '${fileName}' does not contain a valid file name`);
95
+ }
96
+ const storageFileName = sanitizePathComponent(originalFileName);
97
+ if (storageFileName !== originalFileName) {
98
+ logger?.verbose(`FigService - sanitized staging filename '${originalFileName}' to '${storageFileName}' for attachment '${fileId}'`);
99
+ }
100
+ // Append a per-attempt random segment so concurrent or retried uploads of the
101
+ // same attachment never share a staging key (which would let one attempt
102
+ // overwrite or delete the object another attempt is still streaming).
103
+ const dir = `${sanitizePathComponent(articleId)}-${sanitizePathComponent(oid)}-${sanitizePathComponent(fileId)}-${(0, node_crypto_1.randomUUID)()}`;
104
+ return `${prefix}/${dir}/${storageFileName}`;
105
+ }
106
+ async function stageAttachmentToDisk(disk, key, response) {
107
+ const expectedSize = Number(response.size ?? 0);
108
+ await disk.putStream(key, response.readstream, expectedSize > 0 ? { contentLength: expectedSize } : {});
109
+ const meta = await disk.getMetaData(key);
110
+ return meta.contentLength;
111
+ }
112
+ async function* readPartsSequentially(source, parts) {
113
+ const ordered = [...parts].sort((a, b) => a.startOffset - b.startOffset);
114
+ let consumed = 0;
115
+ let carry = Buffer.alloc(0);
116
+ const iterator = source[Symbol.asyncIterator]();
117
+ for (const part of ordered) {
118
+ const partSize = part.endOffset - part.startOffset + 1;
119
+ if (part.startOffset !== consumed) {
120
+ throw validationError(`Figshare upload part ${part.partNo} starts at ${part.startOffset}; expected ${consumed}`);
121
+ }
122
+ async function* partStream() {
123
+ let need = partSize;
124
+ while (need > 0) {
125
+ if (carry.length === 0) {
126
+ const { value, done } = await iterator.next();
127
+ if (done === true) {
128
+ throw validationError(`Staged object truncated at offset ${consumed}; expected more bytes for part ${part.partNo}`);
129
+ }
130
+ carry = Buffer.isBuffer(value) ? value : Buffer.from(value);
131
+ }
132
+ const take = Math.min(need, carry.length);
133
+ const chunk = carry.subarray(0, take);
134
+ carry = carry.subarray(take);
135
+ need -= take;
136
+ consumed += take;
137
+ yield chunk;
138
+ }
139
+ }
140
+ yield { partNo: part.partNo, stream: node_stream_1.Readable.from(partStream()) };
141
+ }
62
142
  }
63
143
  async function listArticleFiles(client, articleId) {
64
144
  const currentFiles = [];
@@ -78,65 +158,32 @@ async function listArticleFiles(client, articleId) {
78
158
  return currentFiles;
79
159
  }
80
160
  function hasPendingUploads(files) {
81
- return files.some((entry) => String(entry.status ?? '').toLowerCase() === FIGSHARE_UPLOAD_PENDING_STATUS);
161
+ return files.some(entry => String(entry.status ?? '').toLowerCase() === FIGSHARE_UPLOAD_PENDING_STATUS);
82
162
  }
83
- async function uploadAttachment(client, config, articleId, oid, attachment) {
163
+ async function uploadAttachment(client, config, articleId, oid, attachment, logger) {
84
164
  const fileId = attachment.fileId ?? '';
85
165
  const fileName = attachment.name ?? '';
86
166
  if (fileId === '' || fileName === '') {
87
167
  throw validationError('Attachment entry is missing fileId or name');
88
168
  }
89
- const tempDir = getTempDir(config);
90
- const resolvedTempDir = path_1.default.resolve(tempDir);
91
- const safeFileName = path_1.default.basename(fileName).trim();
92
- if (safeFileName === '') {
93
- throw validationError(`Attachment '${fileName}' does not contain a valid file name`);
94
- }
95
- await fs_1.default.promises.mkdir(resolvedTempDir, { recursive: true });
96
- const stagingDir = await fs_1.default.promises.mkdtemp(path_1.default.join(resolvedTempDir, `${sanitizePathComponent(articleId)}-${sanitizePathComponent(oid)}-${sanitizePathComponent(fileId)}-`));
97
- const filePath = path_1.default.resolve(stagingDir, safeFileName);
98
- if (!filePath.startsWith(`${stagingDir}${path_1.default.sep}`) && filePath !== path_1.default.join(stagingDir, safeFileName)) {
99
- throw validationError(`Attachment '${fileName}' resolves outside the staging directory`);
100
- }
169
+ const disk = getStagingDisk(config);
170
+ const stagingKey = buildStagingKey(config, articleId, oid, fileId, fileName, logger);
101
171
  const datastream = await getAttachmentStream(oid, fileId);
102
- const expectedSize = Number(datastream.size ?? 0);
103
- if (expectedSize > 0) {
104
- const diskSpace = await (0, check_disk_space_1.default)(tempDir);
105
- if (diskSpace.free < expectedSize + config.assets.staging.diskSpaceThresholdBytes) {
106
- throw validationError(`Not enough free disk space to upload '${fileName}'`);
107
- }
108
- }
109
- else {
110
- const diskSpace = await (0, check_disk_space_1.default)(tempDir);
111
- const requiredBytes = config.assets.staging.diskSpaceThresholdBytes + UNKNOWN_SIZE_STAGING_BUFFER_BYTES;
112
- if (diskSpace.free < requiredBytes) {
113
- throw validationError(`Not enough free disk space to upload '${fileName}'`);
114
- }
115
- }
116
172
  let uploadSucceeded = false;
117
173
  try {
118
- const stagedSize = await stageAttachmentToDisk(datastream, filePath);
119
- if (expectedSize <= 0) {
120
- const diskSpace = await (0, check_disk_space_1.default)(tempDir);
121
- if (diskSpace.free < stagedSize + config.assets.staging.diskSpaceThresholdBytes) {
122
- throw validationError(`Not enough free disk space to upload '${fileName}'`);
123
- }
124
- }
174
+ const stagedSize = await stageAttachmentToDisk(disk, stagingKey, datastream);
125
175
  const uploadInit = await client.createArticleFile(articleId, {
126
176
  name: fileName,
127
- size: stagedSize
177
+ size: stagedSize,
128
178
  });
129
179
  const uploadDescriptor = await client.getLocation(uploadInit.location);
130
180
  const uploadUrl = uploadDescriptor.upload_url;
131
181
  const figshareFileId = String(uploadDescriptor.id);
132
182
  const partsDescriptor = await client.getLocation(uploadUrl);
133
183
  const parts = partsDescriptor.parts ?? [];
134
- for (const part of parts) {
135
- const readStream = fs_1.default.createReadStream(filePath, {
136
- start: part.startOffset,
137
- end: part.endOffset
138
- });
139
- await client.uploadFilePart(uploadUrl, part.partNo, readStream);
184
+ const source = await disk.getStream(stagingKey);
185
+ for await (const { partNo, stream } of readPartsSequentially(source, parts)) {
186
+ await client.uploadFilePart(uploadUrl, partNo, stream);
140
187
  }
141
188
  await client.completeFileUpload(articleId, figshareFileId, {});
142
189
  const uploadedFile = await client.getLocation(uploadInit.location);
@@ -144,14 +191,19 @@ async function uploadAttachment(client, config, articleId, oid, attachment) {
144
191
  return uploadedFile;
145
192
  }
146
193
  finally {
147
- const shouldDeleteStagingDir = !uploadSucceeded || config.assets.staging.cleanupPolicy === 'deleteAfterSuccess';
148
- if (shouldDeleteStagingDir && fs_1.default.existsSync(stagingDir)) {
149
- await fs_1.default.promises.rm(stagingDir, { recursive: true, force: true });
194
+ // Stored configs may omit cleanupPolicy; default to delete-after-success so
195
+ // staged objects are not retained on the staging disk indefinitely.
196
+ const cleanupPolicy = config.assets.staging.cleanupPolicy ?? 'deleteAfterSuccess';
197
+ const shouldDelete = !uploadSucceeded || cleanupPolicy === 'deleteAfterSuccess';
198
+ if (shouldDelete) {
199
+ await disk
200
+ .delete(stagingKey)
201
+ .catch(error => sails.log.warn(`FigService - failed to delete staged object '${stagingKey}'`, error));
150
202
  }
151
203
  }
152
204
  }
153
205
  async function syncLinkOnlyFiles(client, articleId, selectedUrls, currentFiles) {
154
- const existingLinkFiles = currentFiles.filter((entry) => entry.is_link_only === true);
206
+ const existingLinkFiles = currentFiles.filter(entry => entry.is_link_only === true);
155
207
  const uploadedUrls = [];
156
208
  const creationErrors = [];
157
209
  for (const entry of selectedUrls) {
@@ -164,7 +216,7 @@ async function syncLinkOnlyFiles(client, articleId, selectedUrls, currentFiles)
164
216
  attempt += 1;
165
217
  try {
166
218
  responseLocation = await client.createArticleFile(articleId, {
167
- link: entry.location ?? ''
219
+ link: entry.location ?? '',
168
220
  });
169
221
  break;
170
222
  }
@@ -183,7 +235,7 @@ async function syncLinkOnlyFiles(client, articleId, selectedUrls, currentFiles)
183
235
  name: entry.name ?? entry.originalFileName ?? String(entry.location ?? ''),
184
236
  status: uploadedFile.status,
185
237
  download_url: uploadedFile.download_url,
186
- is_link_only: true
238
+ is_link_only: true,
187
239
  });
188
240
  }
189
241
  catch (error) {
@@ -209,13 +261,13 @@ function toFixtureFigshareFile(entry, articleId, index, isLinkOnly) {
209
261
  size: 0,
210
262
  is_link_only: isLinkOnly,
211
263
  download_url: isLinkOnly ? String(entry.location ?? '') : String(entry.download_url ?? ''),
212
- computed_md5: 'fixture-md5'
264
+ computed_md5: 'fixture-md5',
213
265
  };
214
266
  }
215
- async function syncAssetsPhase(client, config, record, article, syncState) {
267
+ async function syncAssetsPhase(client, config, record, article, syncState, logger) {
216
268
  const selectedDataLocations = (0, plan_1.getSelectedDataLocations)(config, record);
217
- const selectedAttachments = selectedDataLocations.filter((entry) => entry.type === 'attachment');
218
- const selectedUrls = selectedDataLocations.filter((entry) => entry.type === 'url');
269
+ const selectedAttachments = selectedDataLocations.filter(entry => entry.type === 'attachment');
270
+ const selectedUrls = selectedDataLocations.filter(entry => entry.type === 'url');
219
271
  const articleId = String(article.id);
220
272
  const attachmentCount = selectedAttachments.length;
221
273
  const urlCount = selectedUrls.length;
@@ -225,16 +277,17 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
225
277
  }
226
278
  if (config.runtime.mode === 'fixture') {
227
279
  const uploadsComplete = !(attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete');
228
- syncState.status = attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete'
229
- ? 'awaiting_upload_completion'
230
- : 'syncing';
280
+ syncState.status =
281
+ attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete'
282
+ ? 'awaiting_upload_completion'
283
+ : 'syncing';
231
284
  syncState.partialProgress = {
232
285
  articleId,
233
286
  attachmentCount,
234
287
  urlCount,
235
288
  uploadsComplete,
236
289
  uploadedAttachmentCount: attachmentCount,
237
- uploadedUrlCount: urlCount
290
+ uploadedUrlCount: urlCount,
238
291
  };
239
292
  (0, config_1.setSyncState)(config, record, syncState);
240
293
  return {
@@ -244,7 +297,7 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
244
297
  uploadsComplete,
245
298
  uploadedAttachments: selectedAttachments.map((entry, index) => toFixtureFigshareFile(entry, articleId, index, false)),
246
299
  uploadedUrls: selectedUrls.map((entry, index) => toFixtureFigshareFile(entry, articleId, index, true)),
247
- dataLocations: selectedDataLocations
300
+ dataLocations: selectedDataLocations,
248
301
  };
249
302
  }
250
303
  const oid = getRecordOid(record);
@@ -253,12 +306,13 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
253
306
  if (config.assets.enableHostedFiles) {
254
307
  for (const attachment of selectedAttachments) {
255
308
  const fileName = attachment.name ?? '';
256
- const alreadyUploaded = currentFiles.find((entry) => entry.name === fileName);
309
+ const alreadyUploaded = currentFiles.find(entry => entry.name === fileName);
257
310
  if (alreadyUploaded != null) {
311
+ await ensureAttachmentDatastream(oid, attachment.fileId ?? '');
258
312
  uploadedAttachments.push(alreadyUploaded);
259
313
  continue;
260
314
  }
261
- uploadedAttachments.push(await uploadAttachment(client, config, articleId, oid, attachment));
315
+ uploadedAttachments.push(await uploadAttachment(client, config, articleId, oid, attachment, logger));
262
316
  uploadedAttachmentCountThisRun += 1;
263
317
  }
264
318
  }
@@ -271,9 +325,10 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
271
325
  : config.article.publishMode === 'afterUploadsComplete' && uploadedAttachmentCountThisRun > 0
272
326
  ? false
273
327
  : !hasPendingUploads(refreshedFiles);
274
- syncState.status = attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete'
275
- ? 'awaiting_upload_completion'
276
- : 'syncing';
328
+ syncState.status =
329
+ attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete'
330
+ ? 'awaiting_upload_completion'
331
+ : 'syncing';
277
332
  syncState.partialProgress = {
278
333
  articleId,
279
334
  attachmentCount,
@@ -281,7 +336,7 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
281
336
  uploadsComplete,
282
337
  uploadedAttachmentCountThisRun,
283
338
  uploadedAttachmentCount: uploadedAttachments.length,
284
- uploadedUrlCount: uploadedUrls.length
339
+ uploadedUrlCount: uploadedUrls.length,
285
340
  };
286
341
  (0, config_1.setSyncState)(config, record, syncState);
287
342
  return {
@@ -291,7 +346,7 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
291
346
  uploadsComplete,
292
347
  uploadedAttachments,
293
348
  uploadedUrls,
294
- dataLocations: selectedDataLocations
349
+ dataLocations: selectedDataLocations,
295
350
  };
296
351
  }
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXdQQSwwQ0ErRkM7QUF2VkQsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4Qix3RUFBOEM7QUFHOUMscUVBQWtFO0FBV2xFLHFDQUF3QztBQUN4QyxpQ0FBa0Q7QUFFbEQsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMzRCxNQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQztBQUN2QyxNQUFNLDhCQUE4QixHQUFHLFNBQVMsQ0FBQztBQUVqRCxTQUFTLFVBQVUsQ0FBQyxNQUFvQztJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDaEQsSUFBSSxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDaEMsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLE1BQW1CO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBUyxvQkFBb0I7SUFDM0IsTUFBTSxZQUFZLEdBQUksS0FBSyxDQUFDLE1BQWtDLENBQUMsTUFBNkMsQ0FBQztJQUM3RyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBRSxLQUFLLENBQUMsUUFBb0MsRUFBRSxDQUFDLFdBQVcsQ0FBd0MsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3JJLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxPQUFlO0lBQ3RDLE9BQU8sSUFBSSxxQ0FBaUIsQ0FBQztRQUMzQixP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
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTZWQSwwQ0FzR0M7QUFuY0QsZ0RBQXdCO0FBRXhCLDZDQUF5QztBQUN6Qyw2Q0FBdUM7QUFHdkMscUVBQWtFO0FBYWxFLHFDQUF3QztBQUN4QyxpQ0FBa0Q7QUFJbEQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFDdkMsTUFBTSw4QkFBOEIsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSw2QkFBNkIsR0FBRyxrQkFBa0IsQ0FBQztBQUV6RCxTQUFTLFlBQVksQ0FBQyxNQUFtQjtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMsb0JBQW9CO0lBQzNCLE1BQU0sWUFBWSxHQUFJLEtBQUssQ0FBQyxNQUFrQyxDQUFDLE1BQTZDLENBQUM7SUFDN0csTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRSxPQUFPLFdBQVc7UUFDaEIsQ0FBQyxDQUFHLEtBQUssQ0FBQyxRQUFvQyxFQUFFLENBQUMsV0FBVyxDQUF5QztRQUNyRyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxPQUFlO0lBQ3RDLE9BQU8sSUFBSSxxQ0FBaUIsQ0FBQztRQUMzQixPQUFPO1FBQ1AsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztLQUNyRCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBT0QsS0FBSyxVQUFVLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxNQUFjO0lBQzVELE1BQU0saUJBQWlCLEdBQUcsb0JBQW9C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
@@ -1,6 +1,5 @@
1
1
  import { ValueBinding } from '../../configmodels/FigsharePublishing';
2
2
  import { AnyRecord } from './types';
3
- export declare function ensureHandlebarsHelpersRegistered(): void;
4
3
  export declare function validateHandlebarsTemplate(template: string): void;
5
4
  export declare function evaluateBinding(binding: ValueBinding | undefined, record: AnyRecord): Promise<unknown>;
6
5
  //# sourceMappingURL=bindings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/bindings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,wBAAgB,iCAAiC,IAAI,IAAI,CAKxD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAoBjE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB5G"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/bindings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAoBjE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAoB5G"}
@@ -3,19 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ensureHandlebarsHelpersRegistered = ensureHandlebarsHelpersRegistered;
7
6
  exports.validateHandlebarsTemplate = validateHandlebarsTemplate;
8
7
  exports.evaluateBinding = evaluateBinding;
9
8
  const lodash_1 = __importDefault(require("lodash"));
10
- const handlebars_1 = __importDefault(require("handlebars"));
11
9
  const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
12
- let handlebarsHelpersRegistered = false;
13
- function ensureHandlebarsHelpersRegistered() {
14
- if (!handlebarsHelpersRegistered) {
15
- (0, sails_ng_common_1.registerSharedHandlebarsHelpers)(handlebars_1.default);
16
- handlebarsHelpersRegistered = true;
17
- }
18
- }
19
10
  function validateHandlebarsTemplate(template) {
20
11
  const allowedHelpers = new Set(['default', 'join', 'lower', 'upper', 'trim', 'formatDate']);
21
12
  const tagPattern = /{{{?\s*([#/!>]?)\s*([A-Za-z_][A-Za-z0-9_]*)?/g;
@@ -46,13 +37,12 @@ async function evaluateBinding(binding, record) {
46
37
  return value ?? binding.defaultValue;
47
38
  }
48
39
  if (binding.kind === 'handlebars') {
49
- ensureHandlebarsHelpersRegistered();
50
40
  validateHandlebarsTemplate(binding.template);
51
- const compiled = handlebars_1.default.compile(binding.template);
41
+ const compiled = (0, sails_ng_common_1.handlebarsCompile)(binding.template);
52
42
  const value = compiled(record);
53
43
  return value === '' ? binding.defaultValue : value;
54
44
  }
55
45
  const value = await (0, sails_ng_common_1.jsonataCompileAndEvaluate)(binding.expression, record);
56
46
  return value ?? binding.defaultValue;
57
47
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZmlnc2hhcmUtdjIvYmluZGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFRQSw4RUFLQztBQUVELGdFQW9CQztBQUVELDBDQXFCQztBQTFERCxvREFBdUI7QUFDdkIsNERBQW9DO0FBQ3BDLHNFQUE0RztBQUk1RyxJQUFJLDJCQUEyQixHQUFHLEtBQUssQ0FBQztBQUV4QyxTQUFnQixpQ0FBaUM7SUFDL0MsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDakMsSUFBQSxpREFBK0IsRUFBQyxvQkFBVSxDQUFDLENBQUM7UUFDNUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO0lBQ3JDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsUUFBZ0I7SUFDekQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDNUYsTUFBTSxVQUFVLEdBQUcsK0NBQStDLENBQUM7SUFDbkUsSUFBSSxLQUE2QixDQUFDO0lBQ2xDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QyxTQUFTO1FBQ1gsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLEtBQUssdUJBQXVCLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEUsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakgsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hELFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLGVBQWUsQ0FBQyxPQUFpQyxFQUFFLE1BQWlCO0lBQ3hGLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sS0FBSyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxpQ0FBaUMsRUFBRSxDQUFDO1FBQ3BDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsMkNBQXlCLEVBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUxRSxPQUFPLEtBQUssSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3ZDLENBQUMifQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZmlnc2hhcmUtdjIvYmluZGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFNQSxnRUFvQkM7QUFFRCwwQ0FvQkM7QUFoREQsb0RBQXVCO0FBQ3ZCLHNFQUE4RjtBQUs5RixTQUFnQiwwQkFBMEIsQ0FBQyxRQUFnQjtJQUN6RCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM1RixNQUFNLFVBQVUsR0FBRywrQ0FBK0MsQ0FBQztJQUNuRSxJQUFJLEtBQTZCLENBQUM7SUFDbEMsT0FBTyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLFNBQVM7UUFDWCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwRSxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqSCxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEQsU0FBUztRQUNYLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxLQUFLLHVCQUF1QixDQUFDLENBQUM7SUFDbEYsQ0FBQztBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsZUFBZSxDQUFDLE9BQWlDLEVBQUUsTUFBaUI7SUFDeEYsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUM1QixNQUFNLEtBQUssR0FBRyxnQkFBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsT0FBTyxLQUFLLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ2xDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxJQUFBLG1DQUFpQixFQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBQSwyQ0FBeUIsRUFBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTFFLE9BQU8sS0FBSyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDdkMsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAC;AAG1E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,4BAA4B,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,aAAa,GAAE,MAAiB,GAAG,kBAAkB,CAchK"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAC;AAa1E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,4BAA4B,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,aAAa,GAAE,MAAiB,GAAG,kBAAkB,CAchK"}
@@ -3,9 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createRunContext = createRunContext;
4
4
  const types_1 = require("./types");
5
5
  const config_1 = require("./config");
6
+ function inferRecordOid(record, jobId) {
7
+ const rm = record;
8
+ const fromRecord = String(rm.redboxOid ?? rm.id ?? rm.oid ?? '').trim();
9
+ if (fromRecord) {
10
+ return fromRecord;
11
+ }
12
+ const fromJobId = String(jobId ?? '').match(/^([^:]+):/)?.[1] ?? '';
13
+ return fromJobId.trim();
14
+ }
6
15
  function createRunContext(record, config, jobId, triggerSource = 'manual') {
7
16
  const rm = record;
8
- const recordOid = rm.redboxOid ?? rm.id ?? '';
17
+ const recordOid = inferRecordOid(rm, jobId);
9
18
  const articleId = (0, types_1.getRecordField)(rm, config.record.articleIdPath);
10
19
  const correlationId = jobId || `${recordOid || 'record'}-${Date.now()}`;
11
20
  return {
@@ -18,4 +27,4 @@ function createRunContext(record, config, jobId, triggerSource = 'manual') {
18
27
  triggerSource
19
28
  };
20
29
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9maWdzaGFyZS12Mi9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsNENBY0M7QUFqQkQsbUNBQTBFO0FBQzFFLHFDQUF3QztBQUV4QyxTQUFnQixnQkFBZ0IsQ0FBQyxNQUFtQixFQUFFLE1BQW9DLEVBQUUsS0FBYyxFQUFFLGdCQUF3QixRQUFRO0lBQzFJLE1BQU0sRUFBRSxHQUFHLE1BQXFCLENBQUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFjLEVBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEUsTUFBTSxhQUFhLEdBQUcsS0FBSyxJQUFJLEdBQUcsU0FBUyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN4RSxPQUFPO1FBQ0wsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDNUIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLE9BQU8sSUFBSyxNQUFrQyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUM7UUFDdEcsU0FBUyxFQUFFLElBQUEscUJBQVksRUFBQyxNQUFNLENBQUM7UUFDL0IsU0FBUyxFQUFFLFNBQVMsSUFBSSxJQUFJLElBQUksU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2hGLEtBQUs7UUFDTCxhQUFhO1FBQ2IsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDIn0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9maWdzaGFyZS12Mi9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBY0EsNENBY0M7QUEzQkQsbUNBQTBFO0FBQzFFLHFDQUF3QztBQUV4QyxTQUFTLGNBQWMsQ0FBQyxNQUFtQixFQUFFLEtBQWM7SUFDekQsTUFBTSxFQUFFLEdBQUcsTUFBNEUsQ0FBQztJQUN4RixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBbUIsRUFBRSxNQUFvQyxFQUFFLEtBQWMsRUFBRSxnQkFBd0IsUUFBUTtJQUMxSSxNQUFNLEVBQUUsR0FBRyxNQUFxQixDQUFDO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQkFBYyxFQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sYUFBYSxHQUFHLEtBQUssSUFBSSxHQUFHLFNBQVMsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDeEUsT0FBTztRQUNMLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQzVCLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxPQUFPLElBQUssTUFBa0MsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDO1FBQ3RHLFNBQVMsRUFBRSxJQUFBLHFCQUFZLEVBQUMsTUFBTSxDQUFDO1FBQy9CLFNBQVMsRUFBRSxTQUFTLElBQUksSUFBSSxJQUFJLFNBQVMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNoRixLQUFLO1FBQ0wsYUFBYTtRQUNiLGFBQWE7S0FDZCxDQUFDO0FBQ0osQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"TusStorageManagerDataStore.d.ts","sourceRoot":"","sources":["../../src/storage/TusStorageManagerDataStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAU,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AActE,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAQF,qBAAa,0BAA2B,SAAQ,SAAS;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAS;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;gBAE5C,OAAO,EAAE,UAAU;IAehB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8CtE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWtC,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IA+BtC,aAAa,IAAI,MAAM;IAIvC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;YAWR,eAAe;YAIf,gBAAgB;YAYhB,iBAAiB;YAehB,qBAAqB;IASpC,OAAO,CAAC,mBAAmB;YASb,cAAc;YAqBd,UAAU;YAQV,aAAa;YAeb,YAAY;IAO1B,OAAO,CAAC,eAAe;YAKT,gBAAgB;IAO9B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"TusStorageManagerDataStore.d.ts","sourceRoot":"","sources":["../../src/storage/TusStorageManagerDataStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAU,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AActE,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAQF,qBAAa,0BAA2B,SAAQ,SAAS;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAS;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;gBAE5C,OAAO,EAAE,UAAU;IAehB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUrC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6DtE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWtC,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IA+BtC,aAAa,IAAI,MAAM;IAIvC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;YAWR,eAAe;YAIf,gBAAgB;YAYhB,iBAAiB;YA2BhB,qBAAqB;IASpC,OAAO,CAAC,mBAAmB;YASb,cAAc;YAqBd,UAAU;YAQV,aAAa;YAeb,YAAY;IAO1B,OAAO,CAAC,eAAe;YAKT,gBAAgB;IAO9B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;CAGrB"}