* Creates a standard resolve number function for issue/PR handlers that use resolveTarget helper * This factory eliminates duplication between update_issue and update_pull_request * * @param {Object} config - Configuration for the resolve function * @param {string} config.itemType - Type of item
(config)
| 41 | * @returns {Function} Resolve number function |
| 42 | */ |
| 43 | function createStandardResolveNumber(config) { |
| 44 | const { itemType, itemNumberField, supportsPR, supportsIssue } = config; |
| 45 | |
| 46 | return function resolveNumber(item, updateTarget, context, resolvedTemporaryIds) { |
| 47 | // Resolve temporary IDs in the item number field before target resolution |
| 48 | let resolvedItem = item; |
| 49 | const itemNumberValue = item[itemNumberField]; |
| 50 | if (resolvedTemporaryIds && itemNumberValue != null) { |
| 51 | const tempIdMap = loadTemporaryIdMapFromResolved(resolvedTemporaryIds); |
| 52 | const resolvedTarget = resolveRepoIssueTarget(itemNumberValue, tempIdMap, context.repo.owner, context.repo.repo); |
| 53 | if (resolvedTarget.wasTemporaryId && resolvedTarget.resolved) { |
| 54 | resolvedItem = { ...item, [itemNumberField]: resolvedTarget.resolved.number }; |
| 55 | core.info(`Resolved temporary ID '${itemNumberValue}' to #${resolvedTarget.resolved.number}`); |
| 56 | } else if (resolvedTarget.wasTemporaryId && !resolvedTarget.resolved) { |
| 57 | return { |
| 58 | success: false, |
| 59 | deferred: true, |
| 60 | error: resolvedTarget.errorMessage || `Unresolved temporary ID: ${itemNumberValue}`, |
| 61 | }; |
| 62 | } |
| 63 | } |
| 64 | |
| 65 | const targetResult = resolveTarget({ |
| 66 | targetConfig: updateTarget, |
| 67 | item: { ...resolvedItem, item_number: resolvedItem[itemNumberField] }, |
| 68 | context: context, |
| 69 | itemType: itemType, |
| 70 | supportsPR: supportsPR, |
| 71 | supportsIssue: supportsIssue, |
| 72 | }); |
| 73 | |
| 74 | if (!targetResult.success) { |
| 75 | return { success: false, shouldFail: targetResult.shouldFail, error: targetResult.error }; |
| 76 | } |
| 77 | |
| 78 | return { success: true, number: targetResult.number }; |
| 79 | }; |
| 80 | } |
| 81 | |
| 82 | /** |
| 83 | * Creates a standard format success result function |
no test coverage detected