@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,173 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DoiRunContextTag = exports.DoiConfigTag = void 0;
37
+ exports.makeRuntimeLayer = makeRuntimeLayer;
38
+ exports.runCreateDoiProgram = runCreateDoiProgram;
39
+ exports.runUpdateDoiProgram = runUpdateDoiProgram;
40
+ exports.runDeleteDoiProgram = runDeleteDoiProgram;
41
+ exports.runChangeDoiStateProgram = runChangeDoiStateProgram;
42
+ const effect_1 = require("effect");
43
+ const Cause = __importStar(require("effect/Cause"));
44
+ const http_1 = require("./http");
45
+ const audit_1 = require("./audit");
46
+ const IntegrationAuditModel_1 = require("../../model/storage/IntegrationAuditModel");
47
+ exports.DoiConfigTag = effect_1.Context.GenericTag('redbox/DoiConfig');
48
+ exports.DoiRunContextTag = effect_1.Context.GenericTag('redbox/DoiRunContext');
49
+ function makeRuntimeLayer(config, runContext) {
50
+ return effect_1.Layer.mergeAll(effect_1.Layer.succeed(exports.DoiConfigTag, config), effect_1.Layer.succeed(exports.DoiRunContextTag, runContext), (0, http_1.makeClientLayer)(config, runContext));
51
+ }
52
+ async function runProgram(program) {
53
+ const exit = await effect_1.Effect.runPromiseExit(program);
54
+ if (exit._tag === 'Success') {
55
+ return exit.value;
56
+ }
57
+ const failure = Cause.failureOrCause(exit.cause);
58
+ if (failure._tag === 'Left') {
59
+ throw failure.left;
60
+ }
61
+ throw Cause.squash(failure.right);
62
+ }
63
+ function buildHttpRequestSummary(requestSummary, method, path) {
64
+ return {
65
+ ...(requestSummary ?? {}),
66
+ method,
67
+ path,
68
+ };
69
+ }
70
+ function isRecord(value) {
71
+ return value != null && typeof value === 'object' && !Array.isArray(value);
72
+ }
73
+ function toResponseSummary(value) {
74
+ if (isRecord(value)) {
75
+ return value;
76
+ }
77
+ return { rawResponseBody: value };
78
+ }
79
+ function extractDoiId(responseSummary, statusCode, operationName) {
80
+ const responseData = responseSummary['data'];
81
+ if (isRecord(responseData)) {
82
+ const id = responseData['id'];
83
+ if (typeof id === 'string' && id.trim() !== '') {
84
+ return id;
85
+ }
86
+ }
87
+ if (statusCode >= 200 && statusCode < 300) {
88
+ sails.log.warn(`${operationName} returned a successful response without a DOI id.`);
89
+ sails.log.warn(responseSummary);
90
+ }
91
+ return null;
92
+ }
93
+ async function runAuditedHttpOperation(auditAction, runContext, requestSummary, parentAuditContext, successMessage, failureMessage, operation) {
94
+ const auditCtx = (0, audit_1.startDoiAudit)(parentAuditContext?.redboxOid ?? runContext.recordOid, auditAction, runContext, requestSummary ?? {}, parentAuditContext);
95
+ try {
96
+ const result = await operation();
97
+ (0, audit_1.completeDoiAudit)(auditCtx, {
98
+ message: successMessage,
99
+ httpStatusCode: result.statusCode,
100
+ requestSummary,
101
+ responseSummary: result.responseSummary,
102
+ });
103
+ return result;
104
+ }
105
+ catch (error) {
106
+ (0, audit_1.failDoiAudit)(auditCtx, error, {
107
+ message: failureMessage,
108
+ requestSummary,
109
+ httpStatusCode: error instanceof Error && 'statusCode' in error ? error.statusCode : undefined,
110
+ responseSummary: error instanceof Error && 'responseBody' in error ? error.responseBody : undefined,
111
+ });
112
+ throw error;
113
+ }
114
+ }
115
+ async function runCreateDoiProgram(config, runContext, payload, options = {}) {
116
+ return runAuditedHttpOperation(IntegrationAuditModel_1.IntegrationAuditAction.createDoiRequest, runContext, buildHttpRequestSummary(options.requestSummary, 'post', '/dois'), options.auditContext, 'DataCite create DOI request completed.', 'DataCite create DOI request failed.', async () => {
117
+ const program = effect_1.Effect.gen(function* () {
118
+ const client = yield* http_1.DoiClientTag;
119
+ const response = yield* effect_1.Effect.promise(() => client.createDoi(payload));
120
+ const responseSummary = toResponseSummary(response.data);
121
+ return {
122
+ doi: extractDoiId(responseSummary, response.statusCode, 'DataCite create DOI request'),
123
+ statusCode: response.statusCode,
124
+ responseSummary,
125
+ };
126
+ }).pipe(effect_1.Effect.provide(makeRuntimeLayer(config, runContext)));
127
+ return runProgram(program);
128
+ });
129
+ }
130
+ async function runUpdateDoiProgram(config, runContext, doi, payload, options = {}) {
131
+ return runAuditedHttpOperation(IntegrationAuditModel_1.IntegrationAuditAction.updateDoiRequest, runContext, buildHttpRequestSummary(options.requestSummary, 'patch', `/dois/${encodeURIComponent(doi)}`), options.auditContext, 'DataCite update DOI request completed.', 'DataCite update DOI request failed.', async () => {
132
+ const program = effect_1.Effect.gen(function* () {
133
+ const client = yield* http_1.DoiClientTag;
134
+ const response = yield* effect_1.Effect.promise(() => client.updateDoi(doi, payload));
135
+ const responseSummary = toResponseSummary(response.data);
136
+ return {
137
+ doi: extractDoiId(responseSummary, response.statusCode, 'DataCite update DOI request') ?? doi,
138
+ statusCode: response.statusCode,
139
+ responseSummary,
140
+ };
141
+ }).pipe(effect_1.Effect.provide(makeRuntimeLayer(config, runContext)));
142
+ return runProgram(program);
143
+ });
144
+ }
145
+ async function runDeleteDoiProgram(config, runContext, doi, options = {}) {
146
+ return runAuditedHttpOperation(IntegrationAuditModel_1.IntegrationAuditAction.deleteDoiRequest, runContext, buildHttpRequestSummary(options.requestSummary, 'delete', `/dois/${encodeURIComponent(doi)}`), options.auditContext, 'DataCite delete DOI request completed.', 'DataCite delete DOI request failed.', async () => {
147
+ const program = effect_1.Effect.gen(function* () {
148
+ const client = yield* http_1.DoiClientTag;
149
+ const response = yield* effect_1.Effect.promise(() => client.deleteDoi(doi));
150
+ return {
151
+ doi,
152
+ statusCode: response.statusCode,
153
+ responseSummary: { deleted: response.statusCode === 204, doi }
154
+ };
155
+ }).pipe(effect_1.Effect.provide(makeRuntimeLayer(config, runContext)));
156
+ return runProgram(program);
157
+ });
158
+ }
159
+ async function runChangeDoiStateProgram(config, runContext, doi, event, options = {}) {
160
+ return runAuditedHttpOperation(IntegrationAuditModel_1.IntegrationAuditAction.changeDoiStateRequest, runContext, buildHttpRequestSummary(options.requestSummary, 'put', `/dois/${encodeURIComponent(doi)}`), options.auditContext, 'DataCite change DOI state request completed.', 'DataCite change DOI state request failed.', async () => {
161
+ const program = effect_1.Effect.gen(function* () {
162
+ const client = yield* http_1.DoiClientTag;
163
+ const response = yield* effect_1.Effect.promise(() => client.changeDoiState(doi, event));
164
+ return {
165
+ doi,
166
+ statusCode: response.statusCode,
167
+ responseSummary: { changed: response.statusCode === 200, doi, event }
168
+ };
169
+ }).pipe(effect_1.Effect.provide(makeRuntimeLayer(config, runContext)));
170
+ return runProgram(program);
171
+ });
172
+ }
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9kb2ktdjIvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsNENBTUM7QUE0RkQsa0RBMkJDO0FBRUQsa0RBNEJDO0FBRUQsa0RBMEJDO0FBRUQsNERBMkJDO0FBcE9ELG1DQUFnRDtBQUNoRCxvREFBc0M7QUFFdEMsaUNBQXVEO0FBRXZELG1DQUF3RTtBQUN4RSxxRkFBbUY7QUFFdEUsUUFBQSxZQUFZLEdBQUcsZ0JBQU8sQ0FBQyxVQUFVLENBQWdCLGtCQUFrQixDQUFDLENBQUM7QUFDckUsUUFBQSxnQkFBZ0IsR0FBRyxnQkFBTyxDQUFDLFVBQVUsQ0FBZ0Isc0JBQXNCLENBQUMsQ0FBQztBQU8xRixTQUFnQixnQkFBZ0IsQ0FBQyxNQUFxQixFQUFFLFVBQXlCO0lBQy9FLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FDbkIsY0FBSyxDQUFDLE9BQU8sQ0FBQyxvQkFBWSxFQUFFLE1BQU0sQ0FBQyxFQUNuQyxjQUFLLENBQUMsT0FBTyxDQUFDLHdCQUFnQixFQUFFLFVBQVUsQ0FBQyxFQUMzQyxJQUFBLHNCQUFlLEVBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUNwQyxDQUFDO0FBQ0osQ0FBQztBQUVELEtBQUssVUFBVSxVQUFVLENBQUksT0FBeUM7SUFDcEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxlQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELElBQUksT0FBTyxDQUFD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
@@ -0,0 +1,49 @@
1
+ import type { DoiProfile, DoiPublishingConfigData } from '../../configmodels/DoiPublishing';
2
+ export interface DoiRecordModel extends Record<string, unknown> {
3
+ redboxOid?: string;
4
+ id?: string;
5
+ branding?: string;
6
+ metaMetadata?: {
7
+ brandId?: string;
8
+ };
9
+ metadata: Record<string, unknown>;
10
+ }
11
+ export type DoiAction = 'create' | 'update';
12
+ export type DoiChangeEvent = 'draft' | 'register' | 'publish' | 'hide';
13
+ export interface DoiRunContext {
14
+ recordOid: string;
15
+ brandId: string;
16
+ correlationId: string;
17
+ triggerSource: string;
18
+ jobId?: string;
19
+ profileName?: string;
20
+ }
21
+ export interface DoiPublishing extends DoiPublishingConfigData {
22
+ }
23
+ export interface ResolvedDoiProfile {
24
+ name: string;
25
+ profile: DoiProfile;
26
+ }
27
+ export interface DoiBindingContext {
28
+ record: DoiRecordModel;
29
+ oid: string;
30
+ profile: DoiProfile;
31
+ now: string;
32
+ helpers: {
33
+ mapSubjectEntries: (items: unknown) => Array<Record<string, unknown>>;
34
+ };
35
+ }
36
+ export interface DoiBindingIterationContext extends DoiBindingContext {
37
+ item: Record<string, unknown>;
38
+ index: number;
39
+ }
40
+ export interface DoiHttpResult<T = Record<string, unknown>> {
41
+ statusCode: number;
42
+ data: T;
43
+ }
44
+ export interface DoiOperationResult {
45
+ doi?: string | null;
46
+ statusCode?: number;
47
+ responseSummary?: Record<string, unknown>;
48
+ }
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/doi-v2/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE5F,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC5C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAc,SAAQ,uBAAuB;CAC7D;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,UAAU,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QACP,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACvE,CAAC;CACH;AAED,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZG9pLXYyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,5 @@
1
+ import { FigshareClient } from './http';
2
+ import { ResolvedFigsharePublishingConfigData } from './config';
3
+ import { RecordModel, FigshareArticle, FigshareSyncState, AssetSyncResult } from './types';
4
+ export declare function syncAssetsPhase(client: FigshareClient, config: ResolvedFigsharePublishingConfigData, record: RecordModel, article: FigshareArticle, syncState: FigshareSyncState): Promise<AssetSyncResult>;
5
+ //# sourceMappingURL=assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/assets.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,oCAAoC,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EACL,WAAW,EACX,eAAe,EAEf,iBAAiB,EAEjB,eAAe,EAChB,MAAM,SAAS,CAAC;AAyOjB,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,oCAAoC,EAC5C,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAyF1B"}
@@ -0,0 +1,297 @@
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.syncAssetsPhase = syncAssetsPhase;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const check_disk_space_1 = __importDefault(require("check-disk-space"));
10
+ const RBValidationError_1 = require("../../model/RBValidationError");
11
+ const config_1 = require("./config");
12
+ const plan_1 = require("./plan");
13
+ const UNKNOWN_SIZE_STAGING_BUFFER_BYTES = 50 * 1024 * 1024;
14
+ const LINK_FILE_CREATE_RETRY_COUNT = 3;
15
+ 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
+ }
22
+ function getRecordOid(record) {
23
+ return record.redboxOid ?? record.id ?? '';
24
+ }
25
+ function getDatastreamService() {
26
+ const recordConfig = sails.config.record;
27
+ const serviceName = String(recordConfig?.datastreamService ?? '');
28
+ return serviceName ? sails.services?.[serviceName] : undefined;
29
+ }
30
+ function validationError(message) {
31
+ return new RBValidationError_1.RBValidationError({
32
+ message,
33
+ displayErrors: [{ title: message, detail: message }]
34
+ });
35
+ }
36
+ async function getAttachmentStream(oid, fileId) {
37
+ const datastreamService = getDatastreamService();
38
+ if (datastreamService == null) {
39
+ throw new Error('Datastream service is not configured');
40
+ }
41
+ const response = await datastreamService.getDatastream(oid, fileId);
42
+ if (response?.readstream == null) {
43
+ throw new Error(`Unable to read datastream '${fileId}' for record '${oid}'`);
44
+ }
45
+ return response;
46
+ }
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;
59
+ }
60
+ function sanitizePathComponent(value) {
61
+ return value.replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '') || 'item';
62
+ }
63
+ async function listArticleFiles(client, articleId) {
64
+ const currentFiles = [];
65
+ let page = 1;
66
+ const pageSize = 20;
67
+ while (true) {
68
+ const pageResults = await client.listArticleFiles(articleId, page, pageSize);
69
+ if (!Array.isArray(pageResults) || pageResults.length === 0) {
70
+ break;
71
+ }
72
+ currentFiles.push(...pageResults);
73
+ if (pageResults.length < pageSize) {
74
+ break;
75
+ }
76
+ page++;
77
+ }
78
+ return currentFiles;
79
+ }
80
+ function hasPendingUploads(files) {
81
+ return files.some((entry) => String(entry.status ?? '').toLowerCase() === FIGSHARE_UPLOAD_PENDING_STATUS);
82
+ }
83
+ async function uploadAttachment(client, config, articleId, oid, attachment) {
84
+ const fileId = attachment.fileId ?? '';
85
+ const fileName = attachment.name ?? '';
86
+ if (fileId === '' || fileName === '') {
87
+ throw validationError('Attachment entry is missing fileId or name');
88
+ }
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
+ }
101
+ 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
+ let uploadSucceeded = false;
117
+ 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
+ }
125
+ const uploadInit = await client.createArticleFile(articleId, {
126
+ name: fileName,
127
+ size: stagedSize
128
+ });
129
+ const uploadDescriptor = await client.getLocation(uploadInit.location);
130
+ const uploadUrl = uploadDescriptor.upload_url;
131
+ const figshareFileId = String(uploadDescriptor.id);
132
+ const partsDescriptor = await client.getLocation(uploadUrl);
133
+ 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);
140
+ }
141
+ await client.completeFileUpload(articleId, figshareFileId, {});
142
+ const uploadedFile = await client.getLocation(uploadInit.location);
143
+ uploadSucceeded = true;
144
+ return uploadedFile;
145
+ }
146
+ 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 });
150
+ }
151
+ }
152
+ }
153
+ async function syncLinkOnlyFiles(client, articleId, selectedUrls, currentFiles) {
154
+ const existingLinkFiles = currentFiles.filter((entry) => entry.is_link_only === true);
155
+ const uploadedUrls = [];
156
+ const creationErrors = [];
157
+ for (const entry of selectedUrls) {
158
+ if (entry.ignore === true) {
159
+ continue;
160
+ }
161
+ let responseLocation = null;
162
+ let attempt = 0;
163
+ while (attempt < LINK_FILE_CREATE_RETRY_COUNT) {
164
+ attempt += 1;
165
+ try {
166
+ responseLocation = await client.createArticleFile(articleId, {
167
+ link: entry.location ?? ''
168
+ });
169
+ break;
170
+ }
171
+ catch (error) {
172
+ if (attempt >= LINK_FILE_CREATE_RETRY_COUNT) {
173
+ creationErrors.push(error instanceof Error ? error : new Error(String(error)));
174
+ }
175
+ }
176
+ }
177
+ if (responseLocation != null) {
178
+ try {
179
+ const uploadedFile = await client.getLocation(responseLocation.location);
180
+ uploadedUrls.push({
181
+ id: uploadedFile.id,
182
+ article_id: articleId,
183
+ name: entry.name ?? entry.originalFileName ?? String(entry.location ?? ''),
184
+ status: uploadedFile.status,
185
+ download_url: uploadedFile.download_url,
186
+ is_link_only: true
187
+ });
188
+ }
189
+ catch (error) {
190
+ creationErrors.push(error instanceof Error ? error : new Error(String(error)));
191
+ }
192
+ }
193
+ }
194
+ if (creationErrors.length > 0) {
195
+ throw validationError(`Failed to create ${creationErrors.length} Figshare link file(s); existing link files were not deleted`);
196
+ }
197
+ for (const file of existingLinkFiles) {
198
+ await client.deleteArticleFile(articleId, String(file.id));
199
+ }
200
+ return uploadedUrls;
201
+ }
202
+ function toFixtureFigshareFile(entry, articleId, index, isLinkOnly) {
203
+ const derivedName = entry.name ?? entry.originalFileName ?? (isLinkOnly ? `link-${index + 1}` : `attachment-${index + 1}`);
204
+ return {
205
+ id: `fixture-${isLinkOnly ? 'url' : 'attachment'}-${index + 1}`,
206
+ name: derivedName,
207
+ article_id: articleId,
208
+ status: 'available',
209
+ size: 0,
210
+ is_link_only: isLinkOnly,
211
+ download_url: isLinkOnly ? String(entry.location ?? '') : String(entry.download_url ?? ''),
212
+ computed_md5: 'fixture-md5'
213
+ };
214
+ }
215
+ async function syncAssetsPhase(client, config, record, article, syncState) {
216
+ 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');
219
+ const articleId = String(article.id);
220
+ const attachmentCount = selectedAttachments.length;
221
+ const urlCount = selectedUrls.length;
222
+ const currentFiles = await listArticleFiles(client, articleId);
223
+ if (hasPendingUploads(currentFiles)) {
224
+ throw validationError(`Figshare file uploads are already in progress for article '${articleId}'`);
225
+ }
226
+ if (config.runtime.mode === 'fixture') {
227
+ const uploadsComplete = !(attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete');
228
+ syncState.status = attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete'
229
+ ? 'awaiting_upload_completion'
230
+ : 'syncing';
231
+ syncState.partialProgress = {
232
+ articleId,
233
+ attachmentCount,
234
+ urlCount,
235
+ uploadsComplete,
236
+ uploadedAttachmentCount: attachmentCount,
237
+ uploadedUrlCount: urlCount
238
+ };
239
+ (0, config_1.setSyncState)(config, record, syncState);
240
+ return {
241
+ articleId,
242
+ attachmentCount,
243
+ urlCount,
244
+ uploadsComplete,
245
+ uploadedAttachments: selectedAttachments.map((entry, index) => toFixtureFigshareFile(entry, articleId, index, false)),
246
+ uploadedUrls: selectedUrls.map((entry, index) => toFixtureFigshareFile(entry, articleId, index, true)),
247
+ dataLocations: selectedDataLocations
248
+ };
249
+ }
250
+ const oid = getRecordOid(record);
251
+ const uploadedAttachments = [];
252
+ let uploadedAttachmentCountThisRun = 0;
253
+ if (config.assets.enableHostedFiles) {
254
+ for (const attachment of selectedAttachments) {
255
+ const fileName = attachment.name ?? '';
256
+ const alreadyUploaded = currentFiles.find((entry) => entry.name === fileName);
257
+ if (alreadyUploaded != null) {
258
+ uploadedAttachments.push(alreadyUploaded);
259
+ continue;
260
+ }
261
+ uploadedAttachments.push(await uploadAttachment(client, config, articleId, oid, attachment));
262
+ uploadedAttachmentCountThisRun += 1;
263
+ }
264
+ }
265
+ const uploadedUrls = config.assets.enableLinkFiles
266
+ ? await syncLinkOnlyFiles(client, articleId, selectedUrls, currentFiles)
267
+ : [];
268
+ const refreshedFiles = attachmentCount > 0 ? await listArticleFiles(client, articleId) : currentFiles;
269
+ const uploadsComplete = attachmentCount === 0
270
+ ? true
271
+ : config.article.publishMode === 'afterUploadsComplete' && uploadedAttachmentCountThisRun > 0
272
+ ? false
273
+ : !hasPendingUploads(refreshedFiles);
274
+ syncState.status = attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete'
275
+ ? 'awaiting_upload_completion'
276
+ : 'syncing';
277
+ syncState.partialProgress = {
278
+ articleId,
279
+ attachmentCount,
280
+ urlCount,
281
+ uploadsComplete,
282
+ uploadedAttachmentCountThisRun,
283
+ uploadedAttachmentCount: uploadedAttachments.length,
284
+ uploadedUrlCount: uploadedUrls.length
285
+ };
286
+ (0, config_1.setSyncState)(config, record, syncState);
287
+ return {
288
+ articleId,
289
+ attachmentCount,
290
+ urlCount,
291
+ uploadsComplete,
292
+ uploadedAttachments,
293
+ uploadedUrls,
294
+ dataLocations: selectedDataLocations
295
+ };
296
+ }
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXdQQSwwQ0ErRkM7QUF2VkQsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4Qix3RUFBOEM7QUFHOUMscUVBQWtFO0FBV2xFLHFDQUF3QztBQUN4QyxpQ0FBa0Q7QUFFbEQsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMzRCxNQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQztBQUN2QyxNQUFNLDhCQUE4QixHQUFHLFNBQVMsQ0FBQztBQUVqRCxTQUFTLFVBQVUsQ0FBQyxNQUFvQztJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDaEQsSUFBSSxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDaEMsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLE1BQW1CO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBUyxvQkFBb0I7SUFDM0IsTUFBTSxZQUFZLEdBQUksS0FBSyxDQUFDLE1BQWtDLENBQUMsTUFBNkMsQ0FBQztJQUM3RyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBRSxLQUFLLENBQUMsUUFBb0MsRUFBRSxDQUFDLFdBQVcsQ0FBd0MsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3JJLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxPQUFlO0lBQ3RDLE9BQU8sSUFBSSxxQ0FBaUIsQ0FBQztRQUMzQixP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
@@ -0,0 +1,6 @@
1
+ import { ValueBinding } from '../../configmodels/FigsharePublishing';
2
+ import { AnyRecord } from './types';
3
+ export declare function ensureHandlebarsHelpersRegistered(): void;
4
+ export declare function validateHandlebarsTemplate(template: string): void;
5
+ export declare function evaluateBinding(binding: ValueBinding | undefined, record: AnyRecord): Promise<unknown>;
6
+ //# sourceMappingURL=bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/bindings.ts"],"names":[],"mappings":"AAIA,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"}