@researchdatabox/redbox-core 0.0.1-beta.8936 → 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 (209) hide show
  1. package/dist/IntegrationAuditParams.d.ts +11 -0
  2. package/dist/IntegrationAuditParams.d.ts.map +1 -0
  3. package/dist/IntegrationAuditParams.js +14 -0
  4. package/dist/RecordAuditParams.d.ts +2 -0
  5. package/dist/RecordAuditParams.d.ts.map +1 -1
  6. package/dist/RecordAuditParams.js +3 -1
  7. package/dist/RecordsService.d.ts +14 -0
  8. package/dist/RecordsService.d.ts.map +1 -1
  9. package/dist/StorageService.d.ts +3 -0
  10. package/dist/StorageService.d.ts.map +1 -1
  11. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  12. package/dist/config/agendaQueue.config.js +10 -1
  13. package/dist/config/auth.config.d.ts.map +1 -1
  14. package/dist/config/auth.config.js +2 -1
  15. package/dist/config/brandingConfigurationDefaults.config.d.ts +3 -0
  16. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  17. package/dist/config/brandingConfigurationDefaults.config.js +154 -3
  18. package/dist/config/figshareDev.config.d.ts +12 -0
  19. package/dist/config/figshareDev.config.d.ts.map +1 -0
  20. package/dist/config/figshareDev.config.js +9 -0
  21. package/dist/config/index.d.ts +4 -16
  22. package/dist/config/index.d.ts.map +1 -1
  23. package/dist/config/index.js +4 -13
  24. package/dist/config/recordtype.config.d.ts.map +1 -1
  25. package/dist/config/recordtype.config.js +17 -1
  26. package/dist/config/routes.config.d.ts.map +1 -1
  27. package/dist/config/routes.config.js +47 -43
  28. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  29. package/dist/configmodels/AdminSidebarConfig.js +3 -2
  30. package/dist/configmodels/AuthorizedDomainsEmails.d.ts +48 -0
  31. package/dist/configmodels/AuthorizedDomainsEmails.d.ts.map +1 -1
  32. package/dist/configmodels/AuthorizedDomainsEmails.js +50 -2
  33. package/dist/configmodels/ConfigModels.d.ts +7 -1
  34. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  35. package/dist/configmodels/ConfigModels.js +25 -1
  36. package/dist/configmodels/DoiPublishing.d.ts +4711 -0
  37. package/dist/configmodels/DoiPublishing.d.ts.map +1 -0
  38. package/dist/configmodels/DoiPublishing.js +639 -0
  39. package/dist/configmodels/FigsharePublishing.d.ts +1376 -0
  40. package/dist/configmodels/FigsharePublishing.d.ts.map +1 -0
  41. package/dist/configmodels/FigsharePublishing.js +630 -0
  42. package/dist/configmodels/SystemMessage.d.ts +32 -0
  43. package/dist/configmodels/SystemMessage.d.ts.map +1 -1
  44. package/dist/configmodels/SystemMessage.js +34 -2
  45. package/dist/controllers/AppConfigController.js +3 -3
  46. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  47. package/dist/controllers/FormVocabularyController.js +4 -1
  48. package/dist/controllers/RecordAuditController.d.ts +29 -14
  49. package/dist/controllers/RecordAuditController.d.ts.map +1 -1
  50. package/dist/controllers/RecordAuditController.js +455 -57
  51. package/dist/controllers/RecordController.d.ts +1 -16
  52. package/dist/controllers/RecordController.d.ts.map +1 -1
  53. package/dist/controllers/RecordController.js +20 -39
  54. package/dist/controllers/index.d.ts.map +1 -1
  55. package/dist/controllers/index.js +4 -1
  56. package/dist/controllers/webservice/AppConfigController.js +3 -3
  57. package/dist/controllers/webservice/IntegrationAuditController.d.ts +10 -0
  58. package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -0
  59. package/dist/controllers/webservice/IntegrationAuditController.js +98 -0
  60. package/dist/form-config/default-1.0-draft.d.ts.map +1 -1
  61. package/dist/form-config/default-1.0-draft.js +26 -2
  62. package/dist/form-config/index.d.ts.map +1 -1
  63. package/dist/form-config/index.js +1 -1
  64. package/dist/index.d.ts +4 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +12 -2
  67. package/dist/model/storage/IntegrationAuditModel.d.ts +47 -0
  68. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -0
  69. package/dist/model/storage/IntegrationAuditModel.js +104 -0
  70. package/dist/model/storage/index.d.ts +1 -0
  71. package/dist/model/storage/index.d.ts.map +1 -1
  72. package/dist/model/storage/index.js +7 -2
  73. package/dist/services/AppConfigService.d.ts +20 -2
  74. package/dist/services/AppConfigService.d.ts.map +1 -1
  75. package/dist/services/AppConfigService.js +129 -15
  76. package/dist/services/DoiService.d.ts +19 -25
  77. package/dist/services/DoiService.d.ts.map +1 -1
  78. package/dist/services/DoiService.js +258 -408
  79. package/dist/services/FigshareService.d.ts +35 -65
  80. package/dist/services/FigshareService.d.ts.map +1 -1
  81. package/dist/services/FigshareService.js +477 -2056
  82. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  83. package/dist/services/FormRecordConsistencyService.js +4 -2
  84. package/dist/services/FormsService.d.ts.map +1 -1
  85. package/dist/services/FormsService.js +4 -2
  86. package/dist/services/IntegrationAuditService.d.ts +100 -0
  87. package/dist/services/IntegrationAuditService.d.ts.map +1 -0
  88. package/dist/services/IntegrationAuditService.js +561 -0
  89. package/dist/services/RecordsService.d.ts +16 -0
  90. package/dist/services/RecordsService.d.ts.map +1 -1
  91. package/dist/services/RecordsService.js +54 -2
  92. package/dist/services/SolrSearchService.d.ts +1 -0
  93. package/dist/services/SolrSearchService.d.ts.map +1 -1
  94. package/dist/services/SolrSearchService.js +14 -3
  95. package/dist/services/VocabularyService.d.ts +1 -0
  96. package/dist/services/VocabularyService.d.ts.map +1 -1
  97. package/dist/services/VocabularyService.js +4 -1
  98. package/dist/services/doi-v2/audit.d.ts +7 -0
  99. package/dist/services/doi-v2/audit.d.ts.map +1 -0
  100. package/dist/services/doi-v2/audit.js +30 -0
  101. package/dist/services/doi-v2/bindings.d.ts +8 -0
  102. package/dist/services/doi-v2/bindings.d.ts.map +1 -0
  103. package/dist/services/doi-v2/bindings.js +85 -0
  104. package/dist/services/doi-v2/config.d.ts +7 -0
  105. package/dist/services/doi-v2/config.d.ts.map +1 -0
  106. package/dist/services/doi-v2/config.js +51 -0
  107. package/dist/services/doi-v2/context.d.ts +18 -0
  108. package/dist/services/doi-v2/context.d.ts.map +1 -0
  109. package/dist/services/doi-v2/context.js +41 -0
  110. package/dist/services/doi-v2/http.d.ts +21 -0
  111. package/dist/services/doi-v2/http.d.ts.map +1 -0
  112. package/dist/services/doi-v2/http.js +88 -0
  113. package/dist/services/doi-v2/payload.d.ts +4 -0
  114. package/dist/services/doi-v2/payload.d.ts.map +1 -0
  115. package/dist/services/doi-v2/payload.js +291 -0
  116. package/dist/services/doi-v2/profiles.d.ts +5 -0
  117. package/dist/services/doi-v2/profiles.d.ts.map +1 -0
  118. package/dist/services/doi-v2/profiles.js +31 -0
  119. package/dist/services/doi-v2/runtime.d.ts +16 -0
  120. package/dist/services/doi-v2/runtime.d.ts.map +1 -0
  121. package/dist/services/doi-v2/runtime.js +173 -0
  122. package/dist/services/doi-v2/types.d.ts +49 -0
  123. package/dist/services/doi-v2/types.d.ts.map +1 -0
  124. package/dist/services/doi-v2/types.js +3 -0
  125. package/dist/services/figshare-v2/assets.d.ts +5 -0
  126. package/dist/services/figshare-v2/assets.d.ts.map +1 -0
  127. package/dist/services/figshare-v2/assets.js +297 -0
  128. package/dist/services/figshare-v2/bindings.d.ts +6 -0
  129. package/dist/services/figshare-v2/bindings.d.ts.map +1 -0
  130. package/dist/services/figshare-v2/bindings.js +60 -0
  131. package/dist/services/figshare-v2/config.d.ts +13 -0
  132. package/dist/services/figshare-v2/config.d.ts.map +1 -0
  133. package/dist/services/figshare-v2/config.js +81 -0
  134. package/dist/services/figshare-v2/context.d.ts +4 -0
  135. package/dist/services/figshare-v2/context.d.ts.map +1 -0
  136. package/dist/services/figshare-v2/context.js +20 -0
  137. package/dist/services/figshare-v2/embargo.d.ts +5 -0
  138. package/dist/services/figshare-v2/embargo.d.ts.map +1 -0
  139. package/dist/services/figshare-v2/embargo.js +36 -0
  140. package/dist/services/figshare-v2/http.d.ts +25 -0
  141. package/dist/services/figshare-v2/http.d.ts.map +1 -0
  142. package/dist/services/figshare-v2/http.js +270 -0
  143. package/dist/services/figshare-v2/metadata.d.ts +6 -0
  144. package/dist/services/figshare-v2/metadata.d.ts.map +1 -0
  145. package/dist/services/figshare-v2/metadata.js +221 -0
  146. package/dist/services/figshare-v2/observability.d.ts +7 -0
  147. package/dist/services/figshare-v2/observability.d.ts.map +1 -0
  148. package/dist/services/figshare-v2/observability.js +85 -0
  149. package/dist/services/figshare-v2/plan.d.ts +5 -0
  150. package/dist/services/figshare-v2/plan.d.ts.map +1 -0
  151. package/dist/services/figshare-v2/plan.js +51 -0
  152. package/dist/services/figshare-v2/publish.d.ts +5 -0
  153. package/dist/services/figshare-v2/publish.d.ts.map +1 -0
  154. package/dist/services/figshare-v2/publish.js +20 -0
  155. package/dist/services/figshare-v2/queue.d.ts +4 -0
  156. package/dist/services/figshare-v2/queue.d.ts.map +1 -0
  157. package/dist/services/figshare-v2/queue.js +11 -0
  158. package/dist/services/figshare-v2/runtime.d.ts +11 -0
  159. package/dist/services/figshare-v2/runtime.d.ts.map +1 -0
  160. package/dist/services/figshare-v2/runtime.js +116 -0
  161. package/dist/services/figshare-v2/types.d.ts +194 -0
  162. package/dist/services/figshare-v2/types.d.ts.map +1 -0
  163. package/dist/services/figshare-v2/types.js +37 -0
  164. package/dist/services/figshare-v2/workflow.d.ts +3 -0
  165. package/dist/services/figshare-v2/workflow.d.ts.map +1 -0
  166. package/dist/services/figshare-v2/workflow.js +7 -0
  167. package/dist/services/figshare-v2/writeback.d.ts +5 -0
  168. package/dist/services/figshare-v2/writeback.d.ts.map +1 -0
  169. package/dist/services/figshare-v2/writeback.js +45 -0
  170. package/dist/services/index.d.ts +3 -0
  171. package/dist/services/index.d.ts.map +1 -1
  172. package/dist/services/index.js +7 -2
  173. package/dist/visitor/client.visitor.d.ts +3 -0
  174. package/dist/visitor/client.visitor.d.ts.map +1 -1
  175. package/dist/visitor/client.visitor.js +8 -1
  176. package/dist/visitor/construct.visitor.d.ts +3 -0
  177. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  178. package/dist/visitor/construct.visitor.js +95 -70
  179. package/dist/visitor/data-value.visitor.d.ts +3 -0
  180. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  181. package/dist/visitor/data-value.visitor.js +5 -1
  182. package/dist/visitor/json-type-def.visitor.d.ts +3 -0
  183. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  184. package/dist/visitor/json-type-def.visitor.js +5 -1
  185. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +3 -0
  186. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  187. package/dist/visitor/migrate-config-v4-v5.visitor.js +77 -64
  188. package/dist/visitor/template.visitor.d.ts +3 -0
  189. package/dist/visitor/template.visitor.d.ts.map +1 -1
  190. package/dist/visitor/template.visitor.js +5 -1
  191. package/dist/visitor/validator.visitor.d.ts +3 -1
  192. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  193. package/dist/visitor/validator.visitor.js +6 -1
  194. package/dist/visitor/vocab-inline.visitor.d.ts +16 -1
  195. package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
  196. package/dist/visitor/vocab-inline.visitor.js +109 -14
  197. package/package.json +23 -16
  198. package/dist/config/datacite.config.d.ts +0 -51
  199. package/dist/config/datacite.config.d.ts.map +0 -1
  200. package/dist/config/datacite.config.js +0 -44
  201. package/dist/config/figshareAPI.config.d.ts +0 -116
  202. package/dist/config/figshareAPI.config.d.ts.map +0 -1
  203. package/dist/config/figshareAPI.config.js +0 -857
  204. package/dist/config/figshareAPIEnv.config.d.ts +0 -11
  205. package/dist/config/figshareAPIEnv.config.d.ts.map +0 -1
  206. package/dist/config/figshareAPIEnv.config.js +0 -13
  207. package/dist/config/figshareRedboxFORMapping.config.d.ts +0 -15
  208. package/dist/config/figshareRedboxFORMapping.config.d.ts.map +0 -1
  209. package/dist/config/figshareRedboxFORMapping.config.js +0 -7458
@@ -0,0 +1,639 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DOI_PUBLISHING_SCHEMA = exports.DoiPublishing = void 0;
7
+ exports.createDefaultBinding = createDefaultBinding;
8
+ exports.resolveDoiConnectionPassword = resolveDoiConnectionPassword;
9
+ exports.toDoiPublishingFormModel = toDoiPublishingFormModel;
10
+ exports.fromDoiPublishingFormModel = fromDoiPublishingFormModel;
11
+ const lodash_1 = __importDefault(require("lodash"));
12
+ const AppConfig_interface_1 = require("./AppConfig.interface");
13
+ function createDefaultBinding(path, defaultValue) {
14
+ return {
15
+ kind: 'path',
16
+ path,
17
+ defaultValue
18
+ };
19
+ }
20
+ function resolveDoiConnectionPassword(password, options = {}) {
21
+ const value = typeof password === 'string' ? password.trim() : '';
22
+ if (value.startsWith('$')) {
23
+ const envVarName = value.slice(1);
24
+ const resolved = process.env[envVarName]?.trim() ?? '';
25
+ if (!resolved && !options.allowEmpty) {
26
+ throw new Error(`DOI connection password environment variable '${envVarName}' is not set or is empty`);
27
+ }
28
+ return resolved;
29
+ }
30
+ if (!value) {
31
+ for (const envVarName of options.fallbackEnvVarNames ?? []) {
32
+ const resolved = process.env[envVarName]?.trim() ?? '';
33
+ if (resolved) {
34
+ return resolved;
35
+ }
36
+ }
37
+ }
38
+ if (!value && !options.allowEmpty) {
39
+ throw new Error('DOI connection password must not be empty');
40
+ }
41
+ return value;
42
+ }
43
+ function isRecord(value) {
44
+ return value != null && typeof value === 'object' && !Array.isArray(value);
45
+ }
46
+ function normaliseProfileName(name, fallback) {
47
+ const trimmed = String(name ?? '').trim();
48
+ return trimmed !== '' ? trimmed : fallback;
49
+ }
50
+ function cloneProfileAsFormEntry(name, profile) {
51
+ const entry = isRecord(profile) ? lodash_1.default.cloneDeep(profile) : {};
52
+ return {
53
+ ...entry,
54
+ name
55
+ };
56
+ }
57
+ function toDoiPublishingFormModel(model) {
58
+ const cloned = lodash_1.default.cloneDeep(model ?? {});
59
+ const profiles = cloned.profiles;
60
+ if (Array.isArray(profiles)) {
61
+ cloned.profiles = profiles.map((profile, index) => {
62
+ if (!isRecord(profile)) {
63
+ return { name: `profile-${index + 1}` };
64
+ }
65
+ const entry = lodash_1.default.cloneDeep(profile);
66
+ entry.name = normaliseProfileName(entry.name, `profile-${index + 1}`);
67
+ return entry;
68
+ });
69
+ return cloned;
70
+ }
71
+ if (isRecord(profiles)) {
72
+ cloned.profiles = Object.entries(profiles).map(([name, profile], index) => {
73
+ const entryName = normaliseProfileName(name, `profile-${index + 1}`);
74
+ return cloneProfileAsFormEntry(entryName, profile);
75
+ });
76
+ return cloned;
77
+ }
78
+ cloned.profiles = [];
79
+ return cloned;
80
+ }
81
+ function fromDoiPublishingFormModel(model) {
82
+ const cloned = lodash_1.default.cloneDeep(model ?? {});
83
+ const profiles = cloned.profiles;
84
+ if (!Array.isArray(profiles)) {
85
+ return cloned;
86
+ }
87
+ const mappedProfiles = {};
88
+ profiles.forEach((profile, index) => {
89
+ if (!isRecord(profile)) {
90
+ return;
91
+ }
92
+ const entry = lodash_1.default.cloneDeep(profile);
93
+ const name = normaliseProfileName(entry.name, `profile-${index + 1}`);
94
+ if (mappedProfiles[name] != null) {
95
+ throw new Error(`Duplicate DOI profile name '${name}' resolved from profile entry at index ${index} (original name: '${String(entry.name ?? '')}').`);
96
+ }
97
+ delete entry.name;
98
+ mappedProfiles[name] = entry;
99
+ });
100
+ cloned.profiles = mappedProfiles;
101
+ return cloned;
102
+ }
103
+ const VALUE_BINDING_EDITOR_WIDGET = {
104
+ widget: {
105
+ formlyConfig: {
106
+ type: 'value-binding-editor'
107
+ }
108
+ }
109
+ };
110
+ const VALUE_BINDING_SCHEMA = {
111
+ type: 'object',
112
+ title: 'Binding',
113
+ properties: {
114
+ kind: {
115
+ type: 'string',
116
+ title: 'Binding Type',
117
+ enum: ['path', 'handlebars', 'jsonata'],
118
+ default: 'path'
119
+ },
120
+ path: {
121
+ type: 'string',
122
+ title: 'Record Path'
123
+ },
124
+ template: {
125
+ type: 'string',
126
+ title: 'Handlebars Template'
127
+ },
128
+ expression: {
129
+ type: 'string',
130
+ title: 'JSONata Expression'
131
+ },
132
+ defaultValue: {
133
+ title: 'Default Value'
134
+ }
135
+ },
136
+ required: ['kind'],
137
+ ...VALUE_BINDING_EDITOR_WIDGET
138
+ };
139
+ const NAME_IDENTIFIER_SCHEMA = {
140
+ type: 'object',
141
+ title: 'Name Identifier',
142
+ properties: {
143
+ nameIdentifier: VALUE_BINDING_SCHEMA,
144
+ nameIdentifierScheme: VALUE_BINDING_SCHEMA,
145
+ schemeUri: VALUE_BINDING_SCHEMA
146
+ }
147
+ };
148
+ const AFFILIATION_SCHEMA = {
149
+ type: 'object',
150
+ title: 'Affiliation',
151
+ properties: {
152
+ name: VALUE_BINDING_SCHEMA,
153
+ affiliationIdentifier: VALUE_BINDING_SCHEMA,
154
+ affiliationIdentifierScheme: VALUE_BINDING_SCHEMA,
155
+ schemeUri: VALUE_BINDING_SCHEMA
156
+ }
157
+ };
158
+ const CREATOR_SCHEMA = {
159
+ type: 'object',
160
+ title: 'Creator',
161
+ properties: {
162
+ sourcePath: { type: 'string', title: 'Source Path' },
163
+ itemMode: {
164
+ type: 'string',
165
+ title: 'Item Mode',
166
+ enum: ['array'],
167
+ default: 'array'
168
+ },
169
+ name: VALUE_BINDING_SCHEMA,
170
+ nameType: VALUE_BINDING_SCHEMA,
171
+ givenName: VALUE_BINDING_SCHEMA,
172
+ familyName: VALUE_BINDING_SCHEMA,
173
+ affiliations: {
174
+ type: 'array',
175
+ title: 'Affiliations',
176
+ items: AFFILIATION_SCHEMA,
177
+ default: []
178
+ },
179
+ nameIdentifiers: {
180
+ type: 'array',
181
+ title: 'Name Identifiers',
182
+ items: NAME_IDENTIFIER_SCHEMA,
183
+ default: []
184
+ }
185
+ },
186
+ required: ['sourcePath', 'itemMode', 'name']
187
+ };
188
+ const CONTRIBUTOR_SCHEMA = {
189
+ type: 'object',
190
+ title: 'Contributor',
191
+ properties: {
192
+ sourcePath: { type: 'string', title: 'Source Path' },
193
+ itemMode: {
194
+ type: 'string',
195
+ title: 'Item Mode',
196
+ enum: ['array'],
197
+ default: 'array'
198
+ },
199
+ name: VALUE_BINDING_SCHEMA,
200
+ nameType: VALUE_BINDING_SCHEMA,
201
+ givenName: VALUE_BINDING_SCHEMA,
202
+ familyName: VALUE_BINDING_SCHEMA,
203
+ affiliations: {
204
+ type: 'array',
205
+ title: 'Affiliations',
206
+ items: AFFILIATION_SCHEMA,
207
+ default: []
208
+ },
209
+ nameIdentifiers: {
210
+ type: 'array',
211
+ title: 'Name Identifiers',
212
+ items: NAME_IDENTIFIER_SCHEMA,
213
+ default: []
214
+ },
215
+ contributorType: VALUE_BINDING_SCHEMA
216
+ },
217
+ required: ['sourcePath', 'itemMode', 'name', 'contributorType']
218
+ };
219
+ const TITLE_SCHEMA = {
220
+ type: 'object',
221
+ title: 'Title',
222
+ properties: {
223
+ title: VALUE_BINDING_SCHEMA,
224
+ titleType: VALUE_BINDING_SCHEMA,
225
+ lang: VALUE_BINDING_SCHEMA
226
+ },
227
+ required: ['title']
228
+ };
229
+ const SUBJECT_SCHEMA = {
230
+ type: 'object',
231
+ title: 'Subject',
232
+ properties: {
233
+ subject: VALUE_BINDING_SCHEMA,
234
+ subjectScheme: VALUE_BINDING_SCHEMA,
235
+ schemeUri: VALUE_BINDING_SCHEMA,
236
+ valueUri: VALUE_BINDING_SCHEMA,
237
+ classificationCode: VALUE_BINDING_SCHEMA,
238
+ lang: VALUE_BINDING_SCHEMA
239
+ },
240
+ required: ['subject']
241
+ };
242
+ const DATE_SCHEMA = {
243
+ type: 'object',
244
+ title: 'Date',
245
+ properties: {
246
+ date: VALUE_BINDING_SCHEMA,
247
+ dateType: VALUE_BINDING_SCHEMA,
248
+ dateInformation: VALUE_BINDING_SCHEMA
249
+ },
250
+ required: ['date', 'dateType']
251
+ };
252
+ const IDENTIFIER_SCHEMA = {
253
+ type: 'object',
254
+ title: 'Alternate Identifier',
255
+ properties: {
256
+ identifier: VALUE_BINDING_SCHEMA,
257
+ identifierType: VALUE_BINDING_SCHEMA
258
+ },
259
+ required: ['identifier', 'identifierType']
260
+ };
261
+ const RELATED_IDENTIFIER_SCHEMA = {
262
+ type: 'object',
263
+ title: 'Related Identifier',
264
+ properties: {
265
+ relatedIdentifier: VALUE_BINDING_SCHEMA,
266
+ relatedIdentifierType: VALUE_BINDING_SCHEMA,
267
+ relationType: VALUE_BINDING_SCHEMA,
268
+ relatedMetadataScheme: VALUE_BINDING_SCHEMA,
269
+ schemeUri: VALUE_BINDING_SCHEMA,
270
+ schemeType: VALUE_BINDING_SCHEMA,
271
+ resourceTypeGeneral: VALUE_BINDING_SCHEMA
272
+ },
273
+ required: ['relatedIdentifier', 'relatedIdentifierType', 'relationType']
274
+ };
275
+ const RIGHTS_SCHEMA = {
276
+ type: 'object',
277
+ title: 'Rights',
278
+ properties: {
279
+ rights: VALUE_BINDING_SCHEMA,
280
+ rightsUri: VALUE_BINDING_SCHEMA,
281
+ rightsIdentifier: VALUE_BINDING_SCHEMA,
282
+ rightsIdentifierScheme: VALUE_BINDING_SCHEMA,
283
+ schemeUri: VALUE_BINDING_SCHEMA,
284
+ lang: VALUE_BINDING_SCHEMA
285
+ }
286
+ };
287
+ const DESCRIPTION_SCHEMA = {
288
+ type: 'object',
289
+ title: 'Description',
290
+ properties: {
291
+ description: VALUE_BINDING_SCHEMA,
292
+ descriptionType: VALUE_BINDING_SCHEMA,
293
+ lang: VALUE_BINDING_SCHEMA
294
+ },
295
+ required: ['description', 'descriptionType']
296
+ };
297
+ const GEOLOCATION_POINT_SCHEMA = {
298
+ type: 'object',
299
+ title: 'Geo Location Point',
300
+ properties: {
301
+ pointLongitude: VALUE_BINDING_SCHEMA,
302
+ pointLatitude: VALUE_BINDING_SCHEMA
303
+ },
304
+ required: ['pointLongitude', 'pointLatitude']
305
+ };
306
+ const GEOLOCATION_BOX_SCHEMA = {
307
+ type: 'object',
308
+ title: 'Geo Location Box',
309
+ properties: {
310
+ westBoundLongitude: VALUE_BINDING_SCHEMA,
311
+ eastBoundLongitude: VALUE_BINDING_SCHEMA,
312
+ southBoundLatitude: VALUE_BINDING_SCHEMA,
313
+ northBoundLatitude: VALUE_BINDING_SCHEMA
314
+ },
315
+ required: ['westBoundLongitude', 'eastBoundLongitude', 'southBoundLatitude', 'northBoundLatitude']
316
+ };
317
+ const GEOLOCATION_PLACE_SCHEMA = {
318
+ type: 'object',
319
+ title: 'Geo Location Place',
320
+ properties: {
321
+ geoLocationPlace: VALUE_BINDING_SCHEMA
322
+ },
323
+ required: ['geoLocationPlace']
324
+ };
325
+ const GEOLOCATION_SCHEMA = {
326
+ type: 'object',
327
+ title: 'Geo Location',
328
+ properties: {
329
+ geoLocationPoint: GEOLOCATION_POINT_SCHEMA,
330
+ geoLocationBox: GEOLOCATION_BOX_SCHEMA,
331
+ geoLocationPlace: GEOLOCATION_PLACE_SCHEMA
332
+ }
333
+ };
334
+ const FUNDING_REFERENCE_SCHEMA = {
335
+ type: 'object',
336
+ title: 'Funding Reference',
337
+ properties: {
338
+ funderName: VALUE_BINDING_SCHEMA,
339
+ funderIdentifier: VALUE_BINDING_SCHEMA,
340
+ funderIdentifierType: VALUE_BINDING_SCHEMA,
341
+ awardNumber: VALUE_BINDING_SCHEMA,
342
+ awardUri: VALUE_BINDING_SCHEMA,
343
+ awardTitle: VALUE_BINDING_SCHEMA
344
+ },
345
+ required: ['funderName']
346
+ };
347
+ const RELATED_ITEM_SCHEMA = {
348
+ type: 'object',
349
+ title: 'Related Item',
350
+ properties: {
351
+ relationType: VALUE_BINDING_SCHEMA,
352
+ relatedItemType: VALUE_BINDING_SCHEMA,
353
+ titles: {
354
+ type: 'array',
355
+ title: 'Titles',
356
+ items: TITLE_SCHEMA,
357
+ default: []
358
+ },
359
+ creators: {
360
+ type: 'array',
361
+ title: 'Creators',
362
+ items: CREATOR_SCHEMA,
363
+ default: []
364
+ },
365
+ publicationYear: VALUE_BINDING_SCHEMA,
366
+ volume: VALUE_BINDING_SCHEMA,
367
+ issue: VALUE_BINDING_SCHEMA,
368
+ number: VALUE_BINDING_SCHEMA,
369
+ firstPage: VALUE_BINDING_SCHEMA,
370
+ lastPage: VALUE_BINDING_SCHEMA,
371
+ publisher: VALUE_BINDING_SCHEMA,
372
+ edition: VALUE_BINDING_SCHEMA,
373
+ contributors: {
374
+ type: 'array',
375
+ title: 'Contributors',
376
+ items: CONTRIBUTOR_SCHEMA,
377
+ default: []
378
+ }
379
+ },
380
+ required: ['relationType', 'relatedItemType']
381
+ };
382
+ const TYPE_SCHEMA = {
383
+ type: 'object',
384
+ title: 'Types',
385
+ properties: {
386
+ resourceTypeGeneral: VALUE_BINDING_SCHEMA,
387
+ resourceType: VALUE_BINDING_SCHEMA,
388
+ ris: VALUE_BINDING_SCHEMA,
389
+ bibtex: VALUE_BINDING_SCHEMA,
390
+ citeproc: VALUE_BINDING_SCHEMA,
391
+ schemaOrg: VALUE_BINDING_SCHEMA
392
+ },
393
+ required: ['resourceTypeGeneral']
394
+ };
395
+ const WRITE_BACK_SCHEMA = {
396
+ type: 'object',
397
+ title: 'Write Back',
398
+ properties: {
399
+ citationUrlPath: { type: 'string', title: 'Citation URL Path' },
400
+ citationDoiPath: { type: 'string', title: 'Citation DOI Path' },
401
+ generatedCitationPath: { type: 'string', title: 'Generated Citation Path' },
402
+ citationString: VALUE_BINDING_SCHEMA,
403
+ extraFields: {
404
+ type: 'array',
405
+ title: 'Extra Fields',
406
+ items: {
407
+ type: 'object',
408
+ properties: {
409
+ sourcePath: { type: 'string', title: 'Source Path' },
410
+ targetPath: { type: 'string', title: 'Target Path' }
411
+ },
412
+ required: ['sourcePath', 'targetPath']
413
+ },
414
+ default: []
415
+ }
416
+ }
417
+ };
418
+ const VALIDATION_SCHEMA = {
419
+ type: 'object',
420
+ title: 'Validation',
421
+ widget: {
422
+ formlyConfig: {
423
+ hide: true
424
+ }
425
+ },
426
+ properties: {
427
+ requireUrl: { type: 'boolean', title: 'Require Url', default: true },
428
+ requirePublisher: { type: 'boolean', title: 'Require Publisher', default: true },
429
+ requirePublicationYear: { type: 'boolean', title: 'Require Publication Year', default: true },
430
+ requireCreators: { type: 'boolean', title: 'Require Creators', default: true },
431
+ requireTitles: { type: 'boolean', title: 'Require Titles', default: true }
432
+ }
433
+ };
434
+ const PROFILE_SCHEMA = {
435
+ type: 'object',
436
+ title: 'Profile',
437
+ properties: {
438
+ name: { type: 'string', title: 'Profile Name' },
439
+ enabled: { type: 'boolean', title: 'Enabled', default: true },
440
+ label: { type: 'string', title: 'Label' },
441
+ metadata: {
442
+ type: 'object',
443
+ title: 'Metadata',
444
+ properties: {
445
+ doi: VALUE_BINDING_SCHEMA,
446
+ prefix: VALUE_BINDING_SCHEMA,
447
+ url: VALUE_BINDING_SCHEMA,
448
+ contentUrl: VALUE_BINDING_SCHEMA,
449
+ publicationYear: VALUE_BINDING_SCHEMA,
450
+ language: VALUE_BINDING_SCHEMA,
451
+ publisher: VALUE_BINDING_SCHEMA,
452
+ version: VALUE_BINDING_SCHEMA,
453
+ formats: VALUE_BINDING_SCHEMA,
454
+ sizes: VALUE_BINDING_SCHEMA,
455
+ creators: {
456
+ type: 'array',
457
+ title: 'Creators',
458
+ items: CREATOR_SCHEMA,
459
+ default: []
460
+ },
461
+ titles: {
462
+ type: 'array',
463
+ title: 'Titles',
464
+ items: TITLE_SCHEMA,
465
+ default: []
466
+ },
467
+ subjects: {
468
+ type: 'array',
469
+ title: 'Subjects',
470
+ items: SUBJECT_SCHEMA,
471
+ default: []
472
+ },
473
+ contributors: {
474
+ type: 'array',
475
+ title: 'Contributors',
476
+ items: CONTRIBUTOR_SCHEMA,
477
+ default: []
478
+ },
479
+ dates: {
480
+ type: 'array',
481
+ title: 'Dates',
482
+ items: DATE_SCHEMA,
483
+ default: []
484
+ },
485
+ alternateIdentifiers: {
486
+ type: 'array',
487
+ title: 'Alternate Identifiers',
488
+ items: IDENTIFIER_SCHEMA,
489
+ default: []
490
+ },
491
+ relatedIdentifiers: {
492
+ type: 'array',
493
+ title: 'Related Identifiers',
494
+ items: RELATED_IDENTIFIER_SCHEMA,
495
+ default: []
496
+ },
497
+ rightsList: {
498
+ type: 'array',
499
+ title: 'Rights List',
500
+ items: RIGHTS_SCHEMA,
501
+ default: []
502
+ },
503
+ descriptions: {
504
+ type: 'array',
505
+ title: 'Descriptions',
506
+ items: DESCRIPTION_SCHEMA,
507
+ default: []
508
+ },
509
+ geoLocations: {
510
+ type: 'array',
511
+ title: 'Geo Locations',
512
+ items: GEOLOCATION_SCHEMA,
513
+ default: []
514
+ },
515
+ fundingReferences: {
516
+ type: 'array',
517
+ title: 'Funding References',
518
+ items: FUNDING_REFERENCE_SCHEMA,
519
+ default: []
520
+ },
521
+ relatedItems: {
522
+ type: 'array',
523
+ title: 'Related Items',
524
+ items: RELATED_ITEM_SCHEMA,
525
+ default: []
526
+ },
527
+ types: TYPE_SCHEMA
528
+ },
529
+ required: ['url', 'publicationYear', 'publisher', 'creators', 'titles', 'types']
530
+ },
531
+ writeBack: WRITE_BACK_SCHEMA,
532
+ validation: VALIDATION_SCHEMA
533
+ },
534
+ required: ['name', 'enabled', 'label', 'metadata', 'writeBack', 'validation']
535
+ };
536
+ const PROFILES_SCHEMA = {
537
+ type: 'array',
538
+ title: 'Profiles',
539
+ items: PROFILE_SCHEMA,
540
+ default: []
541
+ };
542
+ const CONNECTION_RETRY_SCHEMA = {
543
+ type: 'object',
544
+ title: 'Retry Policy',
545
+ properties: {
546
+ maxAttempts: { type: 'integer', title: 'Max Attempts', default: 3 },
547
+ baseDelayMs: { type: 'integer', title: 'Base Delay (ms)', default: 500 },
548
+ maxDelayMs: { type: 'integer', title: 'Max Delay (ms)', default: 4000 },
549
+ retryOnStatusCodes: {
550
+ type: 'array',
551
+ title: 'Retry On Status Codes',
552
+ items: { type: 'integer' },
553
+ default: [408, 429, 500, 502, 503, 504]
554
+ },
555
+ retryOnMethods: {
556
+ type: 'array',
557
+ title: 'Retry On Methods',
558
+ items: { type: 'string' },
559
+ default: ['get', 'put', 'patch', 'delete']
560
+ }
561
+ }
562
+ };
563
+ const OPERATIONS_SCHEMA = {
564
+ type: 'object',
565
+ title: 'Operations',
566
+ properties: {
567
+ createEvent: {
568
+ type: 'string',
569
+ title: 'Create Event',
570
+ enum: ['draft', 'register', 'publish'],
571
+ default: 'publish'
572
+ },
573
+ updateEvent: {
574
+ type: 'string',
575
+ title: 'Update Event',
576
+ enum: ['draft', 'register', 'publish', 'hide'],
577
+ default: 'publish'
578
+ },
579
+ allowDeleteDraft: {
580
+ type: 'boolean',
581
+ title: 'Allow Delete Draft',
582
+ default: true
583
+ },
584
+ allowStateChange: {
585
+ type: 'boolean',
586
+ title: 'Allow State Change',
587
+ default: true
588
+ }
589
+ }
590
+ };
591
+ class DoiPublishing extends AppConfig_interface_1.AppConfig {
592
+ enabled = false;
593
+ defaultProfile = '';
594
+ connection = {
595
+ baseUrl: 'https://api.test.datacite.org',
596
+ username: '',
597
+ password: '',
598
+ timeoutMs: 30000,
599
+ retry: {
600
+ maxAttempts: 3,
601
+ baseDelayMs: 500,
602
+ maxDelayMs: 4000,
603
+ retryOnStatusCodes: [408, 429, 500, 502, 503, 504],
604
+ retryOnMethods: ['get', 'put', 'patch', 'delete']
605
+ }
606
+ };
607
+ operations = {
608
+ createEvent: 'publish',
609
+ updateEvent: 'publish',
610
+ allowDeleteDraft: true,
611
+ allowStateChange: true
612
+ };
613
+ profiles = {};
614
+ static getFieldOrder() {
615
+ return ['enabled', 'defaultProfile', 'connection', 'profiles'];
616
+ }
617
+ }
618
+ exports.DoiPublishing = DoiPublishing;
619
+ exports.DOI_PUBLISHING_SCHEMA = {
620
+ type: 'object',
621
+ properties: {
622
+ enabled: { type: 'boolean', title: 'Enabled', default: false },
623
+ defaultProfile: { type: 'string', title: 'Default Profile', default: '' },
624
+ connection: {
625
+ type: 'object',
626
+ title: 'Connection',
627
+ properties: {
628
+ baseUrl: { type: 'string', title: 'Base URL' },
629
+ username: { type: 'string', title: 'Username' },
630
+ password: { type: 'string', title: 'Password' },
631
+ timeoutMs: { type: 'number', title: 'Timeout (ms)' },
632
+ retry: CONNECTION_RETRY_SCHEMA
633
+ }
634
+ },
635
+ operations: OPERATIONS_SCHEMA,
636
+ profiles: PROFILES_SCHEMA
637
+ }
638
+ };
639
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9pUHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWdtb2RlbHMvRG9pUHVibGlzaGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUE4T0Esb0RBTUM7QUFFRCxvRUF5QkM7QUFtQkQsNERBMEJDO0FBRUQsZ0VBMEJDO0FBeFZELG9EQUF1QjtBQUN2QiwrREFBa0Q7QUE2T2xELFNBQWdCLG9CQUFvQixDQUFDLElBQVksRUFBRSxZQUFzQjtJQUN2RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJO1FBQ0osWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsNEJBQTRCLENBQzFDLFFBQWdCLEVBQ2hCLFVBQW9FLEVBQUU7SUFFdEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsVUFBVSwwQkFBMEIsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLENBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFF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