@researchdatabox/redbox-core 0.0.0-bootstrap.0 → 0.0.1-beta.9018

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 (185) hide show
  1. package/dist/IntegrationAuditParams.d.ts +11 -0
  2. package/dist/IntegrationAuditParams.js +14 -0
  3. package/dist/RecordAuditParams.d.ts +2 -0
  4. package/dist/RecordAuditParams.d.ts.map +1 -1
  5. package/dist/RecordAuditParams.js +3 -1
  6. package/dist/RecordsService.d.ts +14 -0
  7. package/dist/RecordsService.d.ts.map +1 -1
  8. package/dist/StorageService.d.ts +3 -0
  9. package/dist/StorageService.d.ts.map +1 -1
  10. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  11. package/dist/config/agendaQueue.config.js +10 -1
  12. package/dist/config/auth.config.d.ts.map +1 -1
  13. package/dist/config/auth.config.js +2 -1
  14. package/dist/config/brandingConfigurationDefaults.config.d.ts +3 -0
  15. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  16. package/dist/config/brandingConfigurationDefaults.config.js +154 -3
  17. package/dist/config/figshareDev.config.d.ts +12 -0
  18. package/dist/config/figshareDev.config.js +9 -0
  19. package/dist/config/index.d.ts +4 -16
  20. package/dist/config/index.d.ts.map +1 -1
  21. package/dist/config/index.js +4 -13
  22. package/dist/config/recordtype.config.d.ts.map +1 -1
  23. package/dist/config/recordtype.config.js +17 -1
  24. package/dist/config/routes.config.d.ts.map +1 -1
  25. package/dist/config/routes.config.js +47 -43
  26. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  27. package/dist/configmodels/AdminSidebarConfig.js +3 -2
  28. package/dist/configmodels/AuthorizedDomainsEmails.d.ts +48 -0
  29. package/dist/configmodels/AuthorizedDomainsEmails.d.ts.map +1 -1
  30. package/dist/configmodels/AuthorizedDomainsEmails.js +50 -2
  31. package/dist/configmodels/ConfigModels.d.ts +7 -1
  32. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  33. package/dist/configmodels/ConfigModels.js +25 -1
  34. package/dist/configmodels/DoiPublishing.d.ts +4711 -0
  35. package/dist/configmodels/DoiPublishing.js +639 -0
  36. package/dist/configmodels/FigsharePublishing.d.ts +1376 -0
  37. package/dist/configmodels/FigsharePublishing.js +630 -0
  38. package/dist/configmodels/SystemMessage.d.ts +32 -0
  39. package/dist/configmodels/SystemMessage.d.ts.map +1 -1
  40. package/dist/configmodels/SystemMessage.js +34 -2
  41. package/dist/controllers/AppConfigController.js +3 -3
  42. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  43. package/dist/controllers/FormVocabularyController.js +4 -1
  44. package/dist/controllers/RecordAuditController.d.ts +29 -14
  45. package/dist/controllers/RecordAuditController.d.ts.map +1 -1
  46. package/dist/controllers/RecordAuditController.js +455 -57
  47. package/dist/controllers/RecordController.d.ts +1 -16
  48. package/dist/controllers/RecordController.d.ts.map +1 -1
  49. package/dist/controllers/RecordController.js +20 -39
  50. package/dist/controllers/index.d.ts.map +1 -1
  51. package/dist/controllers/index.js +4 -1
  52. package/dist/controllers/webservice/AppConfigController.js +3 -3
  53. package/dist/controllers/webservice/IntegrationAuditController.d.ts +10 -0
  54. package/dist/controllers/webservice/IntegrationAuditController.js +98 -0
  55. package/dist/form-config/default-1.0-draft.d.ts.map +1 -1
  56. package/dist/form-config/default-1.0-draft.js +26 -2
  57. package/dist/form-config/index.d.ts.map +1 -1
  58. package/dist/form-config/index.js +1 -1
  59. package/dist/index.d.ts +4 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +12 -2
  62. package/dist/model/storage/IntegrationAuditModel.d.ts +47 -0
  63. package/dist/model/storage/IntegrationAuditModel.js +104 -0
  64. package/dist/model/storage/index.d.ts +1 -0
  65. package/dist/model/storage/index.d.ts.map +1 -1
  66. package/dist/model/storage/index.js +7 -2
  67. package/dist/services/AppConfigService.d.ts +20 -2
  68. package/dist/services/AppConfigService.d.ts.map +1 -1
  69. package/dist/services/AppConfigService.js +129 -15
  70. package/dist/services/DoiService.d.ts +19 -25
  71. package/dist/services/DoiService.d.ts.map +1 -1
  72. package/dist/services/DoiService.js +258 -408
  73. package/dist/services/FigshareService.d.ts +35 -65
  74. package/dist/services/FigshareService.d.ts.map +1 -1
  75. package/dist/services/FigshareService.js +477 -2056
  76. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  77. package/dist/services/FormRecordConsistencyService.js +4 -2
  78. package/dist/services/FormsService.d.ts.map +1 -1
  79. package/dist/services/FormsService.js +4 -2
  80. package/dist/services/IntegrationAuditService.d.ts +100 -0
  81. package/dist/services/IntegrationAuditService.d.ts.map +1 -1
  82. package/dist/services/IntegrationAuditService.js +561 -0
  83. package/dist/services/RecordsService.d.ts +16 -0
  84. package/dist/services/RecordsService.d.ts.map +1 -1
  85. package/dist/services/RecordsService.js +54 -2
  86. package/dist/services/SolrSearchService.d.ts +1 -0
  87. package/dist/services/SolrSearchService.d.ts.map +1 -1
  88. package/dist/services/SolrSearchService.js +14 -3
  89. package/dist/services/VocabularyService.d.ts +1 -0
  90. package/dist/services/VocabularyService.d.ts.map +1 -1
  91. package/dist/services/VocabularyService.js +4 -1
  92. package/dist/services/doi-v2/audit.d.ts +7 -0
  93. package/dist/services/doi-v2/audit.js +30 -0
  94. package/dist/services/doi-v2/bindings.d.ts +8 -0
  95. package/dist/services/doi-v2/bindings.js +85 -0
  96. package/dist/services/doi-v2/config.d.ts +7 -0
  97. package/dist/services/doi-v2/config.js +51 -0
  98. package/dist/services/doi-v2/context.d.ts +18 -0
  99. package/dist/services/doi-v2/context.js +41 -0
  100. package/dist/services/doi-v2/http.d.ts +21 -0
  101. package/dist/services/doi-v2/http.js +88 -0
  102. package/dist/services/doi-v2/payload.d.ts +4 -0
  103. package/dist/services/doi-v2/payload.js +291 -0
  104. package/dist/services/doi-v2/profiles.d.ts +5 -0
  105. package/dist/services/doi-v2/profiles.js +31 -0
  106. package/dist/services/doi-v2/runtime.d.ts +16 -0
  107. package/dist/services/doi-v2/runtime.js +173 -0
  108. package/dist/services/doi-v2/types.d.ts +49 -0
  109. package/dist/services/doi-v2/types.js +3 -0
  110. package/dist/services/figshare-v2/assets.d.ts +5 -0
  111. package/dist/services/figshare-v2/assets.js +297 -0
  112. package/dist/services/figshare-v2/bindings.d.ts +6 -0
  113. package/dist/services/figshare-v2/bindings.js +60 -0
  114. package/dist/services/figshare-v2/config.d.ts +13 -0
  115. package/dist/services/figshare-v2/config.js +81 -0
  116. package/dist/services/figshare-v2/context.d.ts +4 -0
  117. package/dist/services/figshare-v2/context.js +20 -0
  118. package/dist/services/figshare-v2/embargo.d.ts +5 -0
  119. package/dist/services/figshare-v2/embargo.js +36 -0
  120. package/dist/services/figshare-v2/http.d.ts +25 -0
  121. package/dist/services/figshare-v2/http.js +270 -0
  122. package/dist/services/figshare-v2/metadata.d.ts +6 -0
  123. package/dist/services/figshare-v2/metadata.js +221 -0
  124. package/dist/services/figshare-v2/observability.d.ts +7 -0
  125. package/dist/services/figshare-v2/observability.js +85 -0
  126. package/dist/services/figshare-v2/plan.d.ts +5 -0
  127. package/dist/services/figshare-v2/plan.js +51 -0
  128. package/dist/services/figshare-v2/publish.d.ts +5 -0
  129. package/dist/services/figshare-v2/publish.js +20 -0
  130. package/dist/services/figshare-v2/queue.d.ts +4 -0
  131. package/dist/services/figshare-v2/queue.js +11 -0
  132. package/dist/services/figshare-v2/runtime.d.ts +11 -0
  133. package/dist/services/figshare-v2/runtime.js +116 -0
  134. package/dist/services/figshare-v2/types.d.ts +194 -0
  135. package/dist/services/figshare-v2/types.js +37 -0
  136. package/dist/services/figshare-v2/workflow.d.ts +3 -0
  137. package/dist/services/figshare-v2/workflow.js +7 -0
  138. package/dist/services/figshare-v2/writeback.d.ts +5 -0
  139. package/dist/services/figshare-v2/writeback.js +45 -0
  140. package/dist/services/index.d.ts +3 -0
  141. package/dist/services/index.d.ts.map +1 -1
  142. package/dist/services/index.js +7 -2
  143. package/dist/visitor/client.visitor.d.ts +3 -0
  144. package/dist/visitor/client.visitor.d.ts.map +1 -1
  145. package/dist/visitor/client.visitor.js +8 -1
  146. package/dist/visitor/construct.visitor.d.ts +3 -0
  147. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  148. package/dist/visitor/construct.visitor.js +95 -70
  149. package/dist/visitor/data-value.visitor.d.ts +3 -0
  150. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  151. package/dist/visitor/data-value.visitor.js +5 -1
  152. package/dist/visitor/json-type-def.visitor.d.ts +3 -0
  153. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  154. package/dist/visitor/json-type-def.visitor.js +5 -1
  155. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +3 -0
  156. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  157. package/dist/visitor/migrate-config-v4-v5.visitor.js +77 -64
  158. package/dist/visitor/template.visitor.d.ts +3 -0
  159. package/dist/visitor/template.visitor.d.ts.map +1 -1
  160. package/dist/visitor/template.visitor.js +5 -1
  161. package/dist/visitor/validator.visitor.d.ts +3 -1
  162. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  163. package/dist/visitor/validator.visitor.js +6 -1
  164. package/dist/visitor/vocab-inline.visitor.d.ts +16 -1
  165. package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
  166. package/dist/visitor/vocab-inline.visitor.js +109 -14
  167. package/package.json +26 -14
  168. package/dist/config/datacite.config.d.ts +0 -51
  169. package/dist/config/datacite.config.d.ts.map +0 -1
  170. package/dist/config/datacite.config.js +0 -44
  171. package/dist/config/figshareAPI.config.d.ts +0 -116
  172. package/dist/config/figshareAPI.config.d.ts.map +0 -1
  173. package/dist/config/figshareAPI.config.js +0 -857
  174. package/dist/config/figshareAPIEnv.config.d.ts +0 -11
  175. package/dist/config/figshareAPIEnv.config.d.ts.map +0 -1
  176. package/dist/config/figshareAPIEnv.config.js +0 -13
  177. package/dist/config/figshareRedboxFORMapping.config.d.ts +0 -15
  178. package/dist/config/figshareRedboxFORMapping.config.d.ts.map +0 -1
  179. package/dist/config/figshareRedboxFORMapping.config.js +0 -7458
  180. package/dist/config/relatedObjectsFormDefinition.config.d.ts.map +0 -1
  181. package/dist/form-config/dataPublication-1.0-draft.d.ts.map +0 -1
  182. package/dist/form-config/dataPublication-1.0-embargoed.d.ts.map +0 -1
  183. package/dist/form-config/dataPublication-1.0-published.d.ts.map +0 -1
  184. package/dist/form-config/dataPublication-1.0-queued.d.ts.map +0 -1
  185. package/dist/form-config/dataPublication-1.0-retired.d.ts.map +0 -1
@@ -0,0 +1,630 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FIGSHARE_PUBLISHING_SCHEMA = exports.FigsharePublishing = void 0;
4
+ exports.resolveFigshareConnectionToken = resolveFigshareConnectionToken;
5
+ const AppConfig_interface_1 = require("./AppConfig.interface");
6
+ function resolveFigshareConnectionToken(token, options = {}) {
7
+ const value = typeof token === 'string' ? token.trim() : '';
8
+ if (value.startsWith('$')) {
9
+ const envVarName = value.slice(1);
10
+ const resolved = process.env[envVarName]?.trim() ?? '';
11
+ if (!resolved && !options.allowEmpty) {
12
+ throw new Error(`Figshare connection token environment variable '${envVarName}' is not set or is empty`);
13
+ }
14
+ return resolved;
15
+ }
16
+ if (!value && !options.allowEmpty) {
17
+ throw new Error('Figshare connection token must not be empty');
18
+ }
19
+ return value;
20
+ }
21
+ function createDefaultBinding(path, defaultValue) {
22
+ return {
23
+ kind: 'path',
24
+ path,
25
+ defaultValue
26
+ };
27
+ }
28
+ class FigsharePublishing extends AppConfig_interface_1.AppConfig {
29
+ enabled = false;
30
+ connection = {
31
+ baseUrl: '',
32
+ frontEndUrl: '',
33
+ token: '',
34
+ timeoutMs: 30000,
35
+ operationTimeouts: {
36
+ metadataMs: 30000,
37
+ uploadInitMs: 30000,
38
+ uploadPartMs: 120000,
39
+ publishMs: 60000
40
+ },
41
+ retry: {
42
+ maxAttempts: 3,
43
+ baseDelayMs: 500,
44
+ maxDelayMs: 4000,
45
+ retryOnStatusCodes: [408, 429, 500, 502, 503, 504],
46
+ retryOnMethods: ['get', 'put', 'delete']
47
+ }
48
+ };
49
+ article = {
50
+ itemType: 'dataset',
51
+ groupId: undefined,
52
+ publishMode: 'afterUploadsComplete',
53
+ republishOnMetadataChange: true,
54
+ republishOnAssetChange: true,
55
+ curationLock: {
56
+ enabled: false,
57
+ statusField: '',
58
+ targetValue: 'public'
59
+ }
60
+ };
61
+ record = {
62
+ articleIdPath: 'metadata.figshare_article_id',
63
+ articleUrlPaths: ['metadata.figshare_article_location'],
64
+ dataLocationsPath: 'metadata.dataLocations',
65
+ statusPath: 'metadata.figshareStatus',
66
+ errorPath: 'metadata.figshareError',
67
+ syncStatePath: 'metadata.figshareSyncState',
68
+ allFilesUploadedPath: ''
69
+ };
70
+ selection = {
71
+ attachmentMode: 'selectedOnly',
72
+ urlMode: 'selectedOnly',
73
+ selectedFlagPath: 'selected'
74
+ };
75
+ authors = {
76
+ source: 'defaultRedboxContributors',
77
+ contributorPaths: [
78
+ 'metadata.contributor_ci',
79
+ 'metadata.contributor_data_manager',
80
+ 'metadata.dataOwner',
81
+ 'metadata.chiefInvestigator',
82
+ 'metadata.contributors'
83
+ ],
84
+ uniqueBy: 'email',
85
+ externalNameField: 'text_full_name',
86
+ maxInlineAuthors: 50,
87
+ emailTransform: {
88
+ prefix: '',
89
+ domainOverride: ''
90
+ },
91
+ lookup: [
92
+ {
93
+ matchBy: 'email',
94
+ value: createDefaultBinding('email')
95
+ }
96
+ ]
97
+ };
98
+ metadata = {
99
+ title: createDefaultBinding('metadata.title', ''),
100
+ description: createDefaultBinding('metadata.description', ''),
101
+ keywords: createDefaultBinding('metadata.finalKeywords', []),
102
+ funding: createDefaultBinding('metadata.funder', ''),
103
+ license: {
104
+ source: createDefaultBinding('metadata.license'),
105
+ matchBy: 'urlContains',
106
+ required: true
107
+ },
108
+ categories: {
109
+ source: createDefaultBinding('metadata.forCodes', []),
110
+ mappingStrategy: 'for2020Mapping'
111
+ },
112
+ relatedResource: {
113
+ title: createDefaultBinding('metadata.title', ''),
114
+ doi: createDefaultBinding('metadata.doi', '')
115
+ },
116
+ customFields: []
117
+ };
118
+ categories = {
119
+ strategy: 'for2020Mapping',
120
+ mappingTable: [],
121
+ allowUnmapped: false
122
+ };
123
+ assets = {
124
+ enableHostedFiles: true,
125
+ enableLinkFiles: true,
126
+ dedupeStrategy: 'sourceId',
127
+ staging: {
128
+ tempDir: '',
129
+ cleanupPolicy: 'deleteAfterSuccess',
130
+ diskSpaceThresholdBytes: 1073741824
131
+ }
132
+ };
133
+ embargo = {
134
+ mode: 'recordDriven',
135
+ forceSync: false,
136
+ accessRights: {
137
+ accessRights: createDefaultBinding('metadata.accessRights', ''),
138
+ fullEmbargoUntil: createDefaultBinding('metadata.embargoUntil'),
139
+ fileEmbargoUntil: createDefaultBinding('metadata.embargoUntil'),
140
+ reason: createDefaultBinding('metadata.embargoReason')
141
+ }
142
+ };
143
+ queue = {
144
+ publishAfterUploadDelay: 'in 2 minutes',
145
+ uploadedFilesCleanupDelay: 'in 5 minutes'
146
+ };
147
+ workflow = {
148
+ transitionRules: [],
149
+ transitionJob: {
150
+ enabled: false,
151
+ namedQuery: '',
152
+ targetStep: '',
153
+ paramMap: {},
154
+ figshareTargetFieldKey: '',
155
+ figshareTargetFieldValue: '',
156
+ username: '',
157
+ userType: ''
158
+ }
159
+ };
160
+ writeBack = {
161
+ articleId: 'metadata.figshare_article_id',
162
+ articleUrls: ['metadata.figshare_article_location'],
163
+ extraFields: []
164
+ };
165
+ static getFieldOrder() {
166
+ return [
167
+ 'enabled',
168
+ 'connection',
169
+ 'article',
170
+ 'record',
171
+ 'selection',
172
+ 'authors',
173
+ 'metadata',
174
+ 'categories',
175
+ 'assets',
176
+ 'embargo',
177
+ 'queue',
178
+ 'workflow',
179
+ 'writeBack'
180
+ ];
181
+ }
182
+ }
183
+ exports.FigsharePublishing = FigsharePublishing;
184
+ const VALUE_BINDING_EDITOR_WIDGET = {
185
+ widget: {
186
+ formlyConfig: {
187
+ type: 'value-binding-editor'
188
+ }
189
+ }
190
+ };
191
+ const CATEGORY_MAPPING_EDITOR_WIDGET = {
192
+ widget: {
193
+ formlyConfig: {
194
+ type: 'figshare-category-mapping-editor'
195
+ }
196
+ }
197
+ };
198
+ const VALUE_BINDING_SCHEMA = {
199
+ type: 'object',
200
+ title: 'Binding',
201
+ properties: {
202
+ kind: {
203
+ type: 'string',
204
+ title: 'Binding Type',
205
+ enum: ['path', 'handlebars', 'jsonata'],
206
+ default: 'path'
207
+ },
208
+ path: {
209
+ type: 'string',
210
+ title: 'Record Path'
211
+ },
212
+ template: {
213
+ type: 'string',
214
+ title: 'Handlebars Template'
215
+ },
216
+ expression: {
217
+ type: 'string',
218
+ title: 'JSONata Expression'
219
+ },
220
+ defaultValue: {
221
+ title: 'Default Value'
222
+ }
223
+ },
224
+ required: ['kind'],
225
+ ...VALUE_BINDING_EDITOR_WIDGET
226
+ };
227
+ exports.FIGSHARE_PUBLISHING_SCHEMA = {
228
+ type: 'object',
229
+ properties: {
230
+ enabled: {
231
+ type: 'boolean',
232
+ title: 'Enabled',
233
+ default: false
234
+ },
235
+ connection: {
236
+ type: 'object',
237
+ title: 'Connection',
238
+ properties: {
239
+ baseUrl: { type: 'string', title: 'Base URL' },
240
+ frontEndUrl: { type: 'string', title: 'Front End URL' },
241
+ token: {
242
+ type: 'string',
243
+ title: 'API Token',
244
+ description: 'Do not commit raw API tokens. Prefer an environment variable reference such as $FIGSHARE_TOKEN or the deployment secret manager.'
245
+ },
246
+ timeoutMs: { type: 'integer', title: 'Request Timeout (ms)', default: 30000 },
247
+ operationTimeouts: {
248
+ type: 'object',
249
+ title: 'Operation Timeouts',
250
+ properties: {
251
+ metadataMs: { type: 'integer', title: 'Metadata Timeout (ms)', default: 30000 },
252
+ uploadInitMs: { type: 'integer', title: 'Upload Init Timeout (ms)', default: 30000 },
253
+ uploadPartMs: { type: 'integer', title: 'Upload Part Timeout (ms)', default: 120000 },
254
+ publishMs: { type: 'integer', title: 'Publish Timeout (ms)', default: 60000 }
255
+ }
256
+ },
257
+ retry: {
258
+ type: 'object',
259
+ title: 'Retry Policy',
260
+ properties: {
261
+ maxAttempts: { type: 'integer', title: 'Max Attempts', default: 3 },
262
+ baseDelayMs: { type: 'integer', title: 'Base Delay (ms)', default: 500 },
263
+ maxDelayMs: { type: 'integer', title: 'Max Delay (ms)', default: 4000 },
264
+ retryOnStatusCodes: {
265
+ type: 'array',
266
+ title: 'Retry On Status Codes',
267
+ items: { type: 'integer' },
268
+ default: [408, 429, 500, 502, 503, 504]
269
+ },
270
+ retryOnMethods: {
271
+ type: 'array',
272
+ title: 'Retry On Methods',
273
+ items: { type: 'string' },
274
+ default: ['get', 'put', 'delete']
275
+ }
276
+ }
277
+ }
278
+ }
279
+ },
280
+ article: {
281
+ type: 'object',
282
+ title: 'Article',
283
+ properties: {
284
+ itemType: {
285
+ type: 'string',
286
+ title: 'Item Type',
287
+ enum: ['dataset', 'fileset', 'figure', 'media', 'poster', 'paper', 'presentation', 'thesis', 'code', 'metadata'],
288
+ default: 'dataset'
289
+ },
290
+ groupId: { type: 'integer', title: 'Group ID' },
291
+ publishMode: {
292
+ type: 'string',
293
+ title: 'Publish Mode',
294
+ enum: ['immediate', 'afterUploadsComplete', 'manual'],
295
+ default: 'afterUploadsComplete'
296
+ },
297
+ republishOnMetadataChange: { type: 'boolean', title: 'Republish On Metadata Change', default: true },
298
+ republishOnAssetChange: { type: 'boolean', title: 'Republish On Asset Change', default: true },
299
+ curationLock: {
300
+ type: 'object',
301
+ title: 'Curation Lock',
302
+ properties: {
303
+ enabled: { type: 'boolean', title: 'Enabled', default: false },
304
+ statusField: { type: 'string', title: 'Status Field', default: '' },
305
+ targetValue: { type: 'string', title: 'Target Value', default: 'public' }
306
+ }
307
+ }
308
+ }
309
+ },
310
+ record: {
311
+ type: 'object',
312
+ title: 'Record',
313
+ properties: {
314
+ articleIdPath: { type: 'string', title: 'Article ID Path', default: 'metadata.figshare_article_id' },
315
+ articleUrlPaths: {
316
+ type: 'array',
317
+ title: 'Article URL Paths',
318
+ items: { type: 'string' },
319
+ default: ['metadata.figshare_article_location']
320
+ },
321
+ dataLocationsPath: { type: 'string', title: 'Data Locations Path', default: 'metadata.dataLocations' },
322
+ statusPath: { type: 'string', title: 'Status Path', default: 'metadata.figshareStatus' },
323
+ errorPath: { type: 'string', title: 'Error Path', default: 'metadata.figshareError' },
324
+ syncStatePath: { type: 'string', title: 'Sync State Path', default: 'metadata.figshareSyncState' },
325
+ allFilesUploadedPath: { type: 'string', title: 'All Files Uploaded Path', default: '' }
326
+ }
327
+ },
328
+ selection: {
329
+ type: 'object',
330
+ title: 'Selection',
331
+ properties: {
332
+ attachmentMode: {
333
+ type: 'string',
334
+ title: 'Attachment Mode',
335
+ enum: ['selectedOnly', 'all'],
336
+ default: 'selectedOnly'
337
+ },
338
+ urlMode: {
339
+ type: 'string',
340
+ title: 'URL Mode',
341
+ enum: ['selectedOnly', 'all'],
342
+ default: 'selectedOnly'
343
+ },
344
+ selectedFlagPath: { type: 'string', title: 'Selected Flag Path', default: 'selected' }
345
+ }
346
+ },
347
+ authors: {
348
+ type: 'object',
349
+ title: 'Authors',
350
+ properties: {
351
+ source: {
352
+ type: 'string',
353
+ title: 'Source Strategy',
354
+ enum: ['defaultRedboxContributors'],
355
+ default: 'defaultRedboxContributors'
356
+ },
357
+ uniqueBy: {
358
+ type: 'string',
359
+ title: 'Unique By',
360
+ enum: ['email', 'orcid', 'username', 'none'],
361
+ default: 'email'
362
+ },
363
+ externalNameField: { type: 'string', title: 'External Name Field', default: 'text_full_name' },
364
+ maxInlineAuthors: { type: 'integer', title: 'Max Inline Authors', default: 50 },
365
+ lookup: {
366
+ type: 'array',
367
+ title: 'Lookup Rules',
368
+ items: {
369
+ type: 'object',
370
+ properties: {
371
+ matchBy: {
372
+ type: 'string',
373
+ title: 'Match By',
374
+ enum: ['email', 'orcid', 'username']
375
+ },
376
+ value: VALUE_BINDING_SCHEMA
377
+ }
378
+ }
379
+ },
380
+ contributorPaths: {
381
+ type: 'array',
382
+ title: 'Contributor Paths',
383
+ items: { type: 'string' },
384
+ default: [
385
+ 'metadata.contributor_ci',
386
+ 'metadata.contributor_data_manager',
387
+ 'metadata.dataOwner',
388
+ 'metadata.chiefInvestigator',
389
+ 'metadata.contributors'
390
+ ]
391
+ },
392
+ emailTransform: {
393
+ type: 'object',
394
+ title: 'Email Transform',
395
+ properties: {
396
+ prefix: { type: 'string', title: 'Prefix', default: '' },
397
+ domainOverride: { type: 'string', title: 'Domain Override', default: '' }
398
+ }
399
+ }
400
+ }
401
+ },
402
+ metadata: {
403
+ type: 'object',
404
+ title: 'Metadata',
405
+ properties: {
406
+ title: VALUE_BINDING_SCHEMA,
407
+ description: VALUE_BINDING_SCHEMA,
408
+ keywords: VALUE_BINDING_SCHEMA,
409
+ funding: VALUE_BINDING_SCHEMA,
410
+ license: {
411
+ type: 'object',
412
+ title: 'License',
413
+ properties: {
414
+ source: VALUE_BINDING_SCHEMA,
415
+ matchBy: {
416
+ type: 'string',
417
+ title: 'Match By',
418
+ enum: ['urlContains', 'nameExact', 'valueExact'],
419
+ default: 'urlContains'
420
+ },
421
+ required: { type: 'boolean', title: 'Required', default: true }
422
+ }
423
+ },
424
+ categories: {
425
+ type: 'object',
426
+ title: 'Categories Binding',
427
+ properties: {
428
+ source: VALUE_BINDING_SCHEMA,
429
+ mappingStrategy: {
430
+ type: 'string',
431
+ title: 'Mapping Strategy',
432
+ enum: ['for2020Mapping'],
433
+ default: 'for2020Mapping'
434
+ }
435
+ }
436
+ },
437
+ relatedResource: {
438
+ type: 'object',
439
+ title: 'Related Resource',
440
+ properties: {
441
+ title: VALUE_BINDING_SCHEMA,
442
+ doi: VALUE_BINDING_SCHEMA
443
+ }
444
+ },
445
+ customFields: {
446
+ type: 'array',
447
+ title: 'Custom Fields',
448
+ items: {
449
+ type: 'object',
450
+ properties: {
451
+ figshareField: { type: 'string', title: 'Figshare Field' },
452
+ value: VALUE_BINDING_SCHEMA,
453
+ validations: {
454
+ type: 'array',
455
+ title: 'Validations',
456
+ items: {
457
+ type: 'object',
458
+ properties: {
459
+ type: {
460
+ type: 'string',
461
+ title: 'Type',
462
+ enum: ['maxLength', 'url', 'doi', 'required']
463
+ },
464
+ value: {
465
+ type: 'integer',
466
+ title: 'Value'
467
+ }
468
+ }
469
+ }
470
+ }
471
+ }
472
+ }
473
+ }
474
+ }
475
+ },
476
+ categories: {
477
+ type: 'object',
478
+ title: 'Categories',
479
+ properties: {
480
+ strategy: {
481
+ type: 'string',
482
+ title: 'Strategy',
483
+ enum: ['for2020Mapping'],
484
+ default: 'for2020Mapping'
485
+ },
486
+ mappingTable: {
487
+ type: 'array',
488
+ title: 'Mapping Table',
489
+ items: {
490
+ type: 'object',
491
+ properties: {
492
+ sourceCode: { type: 'string', title: 'Source Code' },
493
+ figshareCategoryId: { type: 'integer', title: 'Figshare Category ID' }
494
+ }
495
+ },
496
+ ...CATEGORY_MAPPING_EDITOR_WIDGET
497
+ },
498
+ allowUnmapped: { type: 'boolean', title: 'Allow Unmapped Categories', default: false }
499
+ }
500
+ },
501
+ assets: {
502
+ type: 'object',
503
+ title: 'Assets',
504
+ properties: {
505
+ enableHostedFiles: { type: 'boolean', title: 'Enable Hosted Files', default: true },
506
+ enableLinkFiles: { type: 'boolean', title: 'Enable Link Files', default: true },
507
+ dedupeStrategy: {
508
+ type: 'string',
509
+ title: 'Dedupe Strategy',
510
+ enum: ['sourceId', 'nameAndMd5', 'url'],
511
+ default: 'sourceId'
512
+ },
513
+ staging: {
514
+ type: 'object',
515
+ title: 'Staging',
516
+ properties: {
517
+ tempDir: { type: 'string', title: 'Temp Directory' },
518
+ cleanupPolicy: {
519
+ type: 'string',
520
+ title: 'Cleanup Policy',
521
+ enum: ['deleteAfterSuccess', 'retainForRetry'],
522
+ default: 'deleteAfterSuccess'
523
+ },
524
+ diskSpaceThresholdBytes: { type: 'integer', title: 'Disk Space Threshold Bytes', default: 1073741824 }
525
+ }
526
+ }
527
+ }
528
+ },
529
+ embargo: {
530
+ type: 'object',
531
+ title: 'Embargo',
532
+ properties: {
533
+ mode: {
534
+ type: 'string',
535
+ title: 'Mode',
536
+ enum: ['none', 'recordDriven'],
537
+ default: 'recordDriven'
538
+ },
539
+ forceSync: { type: 'boolean', title: 'Force Sync', default: false },
540
+ accessRights: {
541
+ type: 'object',
542
+ title: 'Access Rights Binding',
543
+ properties: {
544
+ accessRights: VALUE_BINDING_SCHEMA,
545
+ fullEmbargoUntil: VALUE_BINDING_SCHEMA,
546
+ fileEmbargoUntil: VALUE_BINDING_SCHEMA,
547
+ reason: VALUE_BINDING_SCHEMA
548
+ }
549
+ }
550
+ }
551
+ },
552
+ queue: {
553
+ type: 'object',
554
+ title: 'Queue',
555
+ properties: {
556
+ publishAfterUploadDelay: { type: 'string', title: 'Publish After Upload Delay', default: 'in 2 minutes' },
557
+ uploadedFilesCleanupDelay: { type: 'string', title: 'Uploaded Files Cleanup Delay', default: 'in 5 minutes' }
558
+ }
559
+ },
560
+ workflow: {
561
+ type: 'object',
562
+ title: 'Workflow',
563
+ properties: {
564
+ transitionRules: {
565
+ type: 'array',
566
+ title: 'Transition Rules',
567
+ items: {
568
+ type: 'object',
569
+ properties: {
570
+ when: {
571
+ type: 'string',
572
+ title: 'When',
573
+ enum: ['published', 'republished', 'embargoUpdated', 'awaitingUploadCompletion']
574
+ },
575
+ targetWorkflowStageName: { type: 'string', title: 'Target Workflow Stage Name' },
576
+ targetWorkflowStageLabel: { type: 'string', title: 'Target Workflow Stage Label' },
577
+ targetForm: { type: 'string', title: 'Target Form' },
578
+ ifArticleField: { type: 'string', title: 'Article Field' },
579
+ equals: { title: 'Equals' }
580
+ }
581
+ }
582
+ },
583
+ transitionJob: {
584
+ type: 'object',
585
+ title: 'Transition Job',
586
+ properties: {
587
+ enabled: { type: 'boolean', title: 'Enabled', default: false },
588
+ namedQuery: { type: 'string', title: 'Named Query', default: '' },
589
+ targetStep: { type: 'string', title: 'Target Step', default: '' },
590
+ paramMap: { type: 'object', title: 'Parameter Map', default: {} },
591
+ figshareTargetFieldKey: { type: 'string', title: 'Figshare Target Field Key', default: '' },
592
+ figshareTargetFieldValue: { type: 'string', title: 'Figshare Target Field Value', default: '' },
593
+ username: { type: 'string', title: 'Username', default: '' },
594
+ userType: { type: 'string', title: 'User Type', default: '' }
595
+ }
596
+ }
597
+ }
598
+ },
599
+ writeBack: {
600
+ type: 'object',
601
+ title: 'Write Back',
602
+ properties: {
603
+ articleId: { type: 'string', title: 'Article ID Target Path', default: 'metadata.figshare_article_id' },
604
+ articleUrls: {
605
+ type: 'array',
606
+ title: 'Article URL Target Paths',
607
+ items: { type: 'string' },
608
+ default: ['metadata.figshare_article_location']
609
+ },
610
+ extraFields: {
611
+ type: 'array',
612
+ title: 'Extra Fields',
613
+ items: {
614
+ type: 'object',
615
+ properties: {
616
+ from: {
617
+ type: 'string',
618
+ title: 'From',
619
+ enum: ['article', 'publishResult', 'assetSyncResult']
620
+ },
621
+ sourcePath: { type: 'string', title: 'Source Path' },
622
+ targetPath: { type: 'string', title: 'Target Path' }
623
+ }
624
+ }
625
+ }
626
+ }
627
+ }
628
+ }
629
+ };
630
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlnc2hhcmVQdWJsaXNoaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ21vZGVscy9GaWdzaGFyZVB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMEhBLHdFQWNDO0FBeElELCtEQUFrRDtBQTBIbEQsU0FBZ0IsOEJBQThCLENBQUMsS0FBYSxFQUFFLFVBQW9DLEVBQUU7SUFDbEcsTUFBTSxLQUFLLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RCxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsVUFBVSwwQkFBMEIsQ0FBQyxDQUFDO1FBQzNHLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQWlHRCxTQUFTLG9CQUFvQixDQUFDLElBQVksRUFBRSxZQUFzQjtJQUNoRSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJO1FBQ0osWUFBWTtLQUNiLENBQUM7QUFD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