@tiangong-lca/cli 0.0.21 → 0.0.22

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset-maintenance-alias-rewrite.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-alias-rewrite.ts"],"names":[],"mappings":"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","sourcesContent":["import { FlowPropertySchema, FlowSchema, ProcessSchema } from '@tiangong-lca/tidas-sdk';\nimport {\n isJsonObject,\n maintenanceRowKey,\n sha256Json,\n type DatasetMaintenanceAliasBatch,\n type DatasetMaintenanceAliasBatchPlan,\n type DatasetMaintenanceAliasExchangeRewrite,\n type DatasetMaintenanceBlocker,\n type DatasetMaintenancePlanAction,\n type DatasetMaintenanceRemoteRow,\n type DatasetMaintenanceRowSnapshot,\n type DatasetMaintenanceScope,\n type JsonObject,\n} from './dataset-maintenance-contract.js';\nimport type { SafeParseSchema } from './tidas-sdk-validation.js';\n\nexport type DatasetMaintenanceAliasSchemas = {\n flowproperties: SafeParseSchema;\n flows: SafeParseSchema;\n processes: SafeParseSchema;\n};\n\nconst DEFAULT_ALIAS_SCHEMAS: DatasetMaintenanceAliasSchemas = {\n flowproperties: FlowPropertySchema as unknown as SafeParseSchema,\n flows: FlowSchema as unknown as SafeParseSchema,\n processes: ProcessSchema as unknown as SafeParseSchema,\n};\n\nconst ALIAS_PROFILES = {\n time: {\n factor: '0.00011415525114155251',\n rows: 25,\n flowproperties: 1,\n flows: 10,\n processes: 14,\n exchanges: 20,\n target_flow_refs: 106,\n target_exchange_refs: 441,\n },\n length_time: {\n factor: '1000',\n rows: 27,\n flowproperties: 1,\n flows: 13,\n processes: 13,\n exchanges: 39,\n target_flow_refs: 32,\n target_exchange_refs: 3216,\n },\n} as const;\n\nconst EXPECTED_UNRELATED_EXCHANGES = 309;\nconst DECIMAL_PATTERN = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$/u;\n\ntype DecimalParts = { negative: boolean; coefficient: bigint; scale: number };\n\nfunction decimalParts(value: string): DecimalParts | null {\n if (value.length > 256 || !DECIMAL_PATTERN.test(value)) {\n return null;\n }\n const negative = value.startsWith('-');\n const unsigned = negative ? value.slice(1) : value;\n const [integer, fraction = ''] = unsigned.split('.');\n return {\n negative,\n coefficient: BigInt(`${integer}${fraction}`),\n scale: fraction.length,\n };\n}\n\nfunction decimalEqual(left: string, right: string): boolean {\n const leftParts = decimalParts(left);\n const rightParts = decimalParts(right);\n if (!leftParts || !rightParts) return false;\n const scale = Math.max(leftParts.scale, rightParts.scale);\n const leftCoefficient = leftParts.coefficient * 10n ** BigInt(scale - leftParts.scale);\n const rightCoefficient = rightParts.coefficient * 10n ** BigInt(scale - rightParts.scale);\n return (\n leftCoefficient === rightCoefficient &&\n (leftCoefficient === 0n || leftParts.negative === rightParts.negative)\n );\n}\n\nfunction decimalText(parts: DecimalParts): string {\n let digits = parts.coefficient.toString().padStart(parts.scale + 1, '0');\n if (parts.scale) {\n const split = digits.length - parts.scale;\n digits = `${digits.slice(0, split)}.${digits.slice(split)}`;\n }\n return `${parts.negative && parts.coefficient !== 0n ? '-' : ''}${digits}`;\n}\n\nexport function multiplyExactDecimal(value: string, factor: string): string | null {\n const left = decimalParts(value);\n const right = decimalParts(factor);\n if (!left || !right) {\n return null;\n }\n return decimalText({\n negative: left.negative !== right.negative,\n coefficient: left.coefficient * right.coefficient,\n scale: left.scale + right.scale,\n });\n}\n\nfunction aliasBlocker(\n action: DatasetMaintenancePlanAction,\n code: string,\n message: string,\n details?: unknown,\n): DatasetMaintenanceBlocker {\n return {\n code,\n message,\n action_id: action.action_id,\n table: action.table,\n id: action.id,\n version: action.version,\n ...(details === undefined ? {} : { details }),\n };\n}\n\nfunction firstAction(\n actions: DatasetMaintenancePlanAction[],\n batchId: string,\n): DatasetMaintenancePlanAction | null {\n return actions.find((action) => action.batch_id === batchId) ?? null;\n}\n\nfunction addBatchBlocker(\n actions: DatasetMaintenancePlanAction[],\n batchId: string,\n code: string,\n message: string,\n details?: unknown,\n): void {\n const action = firstAction(actions, batchId);\n if (!action) {\n return;\n }\n action.blockers.push(aliasBlocker(action, code, message, details));\n action.status = 'blocked';\n}\n\nfunction clonePayload(payload: JsonObject): JsonObject {\n return structuredClone(payload);\n}\n\nfunction flowPropertyEntries(payload: JsonObject): JsonObject[] | null {\n const root = payload.flowDataSet;\n const properties = isJsonObject(root) ? root.flowProperties : null;\n const value = isJsonObject(properties) ? properties.flowProperty : null;\n if (Array.isArray(value)) {\n return value.every(isJsonObject) ? value : null;\n }\n return isJsonObject(value) ? [value] : null;\n}\n\nfunction flowPropertySingleton(payload: JsonObject): JsonObject | null {\n const root = payload.flowDataSet;\n const properties = isJsonObject(root) ? root.flowProperties : null;\n const value = isJsonObject(properties) ? properties.flowProperty : null;\n return isJsonObject(value) ? value : null;\n}\n\nfunction processExchangeEntries(payload: JsonObject): JsonObject[] | null {\n const root = payload.processDataSet;\n const exchanges = isJsonObject(root) ? root.exchanges : null;\n const value = isJsonObject(exchanges) ? exchanges.exchange : null;\n if (Array.isArray(value)) {\n return value.every(isJsonObject) ? value : null;\n }\n return isJsonObject(value) ? [value] : null;\n}\n\nfunction referenceIdentity(value: unknown): { id: string | null; version: string | null } {\n return isJsonObject(value)\n ? {\n id: typeof value['@refObjectId'] === 'string' ? value['@refObjectId'] : null,\n version: typeof value['@version'] === 'string' ? value['@version'] : null,\n }\n : { id: null, version: null };\n}\n\nfunction referenceMatches(value: unknown, id: string, version?: string | null): boolean {\n const identity = referenceIdentity(value);\n return identity.id === id && (!version || identity.version === version);\n}\n\nfunction entityRefKey(id: string, version: string): string {\n return `${id}@${version}`;\n}\n\nfunction targetSnapshotValid(\n snapshot: DatasetMaintenanceRowSnapshot | null,\n table: 'unitgroups' | 'flowproperties',\n batch: DatasetMaintenanceAliasBatch,\n userId: string,\n): boolean {\n const target = table === 'unitgroups' ? batch.target.unitgroup : batch.target.flowproperty;\n return Boolean(\n snapshot &&\n snapshot.table === table &&\n snapshot.id === target.id &&\n snapshot.version === target.version &&\n snapshot.user_id === userId &&\n snapshot.state_code === 0 &&\n snapshot.modified_at &&\n snapshot.json_ordered &&\n snapshot.payload_sha256,\n );\n}\n\nfunction sourceUnitGroupSnapshotValid(\n snapshot: DatasetMaintenanceRowSnapshot | null,\n batch: DatasetMaintenanceAliasBatch,\n userId: string,\n): boolean {\n return Boolean(\n snapshot &&\n snapshot.table === 'unitgroups' &&\n snapshot.id === batch.source.unitgroup.id &&\n snapshot.version === batch.source.unitgroup.version &&\n snapshot.user_id === userId &&\n snapshot.state_code === 0 &&\n snapshot.modified_at &&\n snapshot.json_ordered &&\n snapshot.payload_sha256,\n );\n}\n\nfunction sourceReferenceUnit(\n snapshot: DatasetMaintenanceRowSnapshot | null,\n batch: DatasetMaintenanceAliasBatch,\n): JsonObject | null {\n const root = snapshot?.json_ordered?.unitGroupDataSet;\n const information = isJsonObject(root) ? root.unitGroupInformation : null;\n const quantitative = isJsonObject(information) ? information.quantitativeReference : null;\n const referenceId = isJsonObject(quantitative) ? quantitative.referenceToReferenceUnit : null;\n const units = isJsonObject(root) ? root.units : null;\n const raw = isJsonObject(units) ? units.unit : null;\n const entries = Array.isArray(raw) ? raw : [raw];\n const reference = entries.find(\n (entry) => isJsonObject(entry) && entry['@dataSetInternalID'] === referenceId,\n );\n const expectedName = batch.dimension === 'time' ? 'hr' : 'kmy';\n return isJsonObject(reference) &&\n reference.name === expectedName &&\n typeof reference.meanValue === 'string' &&\n decimalEqual(reference.meanValue, '1')\n ? clonePayload(reference)\n : null;\n}\n\nfunction targetConversionUnit(options: {\n source: JsonObject | null;\n target: DatasetMaintenanceRowSnapshot | null;\n factor: string;\n}): JsonObject | null {\n const sourceName = options.source?.name;\n const root = options.target?.json_ordered?.unitGroupDataSet;\n const units = isJsonObject(root) ? root.units : null;\n const raw = isJsonObject(units) ? units.unit : null;\n const entries = Array.isArray(raw) ? raw : [raw];\n const match = entries.find(\n (entry) =>\n isJsonObject(entry) &&\n entry.name === sourceName &&\n typeof entry.meanValue === 'string' &&\n decimalEqual(entry.meanValue, options.factor),\n );\n return isJsonObject(match) ? clonePayload(match) : null;\n}\n\nfunction targetUnitGroupReferenceFromFlowProperty(\n snapshot: DatasetMaintenanceRowSnapshot | null,\n batch: DatasetMaintenanceAliasBatch,\n): JsonObject | null {\n const root = snapshot?.json_ordered?.flowPropertyDataSet;\n const information = isJsonObject(root) ? root.flowPropertiesInformation : null;\n const quantitative = isJsonObject(information) ? information.quantitativeReference : null;\n const reference = isJsonObject(quantitative) ? quantitative.referenceToReferenceUnitGroup : null;\n return isJsonObject(reference) &&\n referenceMatches(reference, batch.target.unitgroup.id, batch.target.unitgroup.version)\n ? clonePayload(reference)\n : null;\n}\n\nfunction canonicalFlowPropertyReference(\n rows: DatasetMaintenanceRemoteRow[],\n batch: DatasetMaintenanceAliasBatch,\n): JsonObject | null {\n const references = rows\n .filter((row) => row.table === 'flows' && row.json_ordered)\n .flatMap((row) => flowPropertyEntries(row.json_ordered!) ?? [])\n .map((entry) => entry.referenceToFlowPropertyDataSet)\n .filter(\n (reference): reference is JsonObject =>\n isJsonObject(reference) &&\n referenceMatches(\n reference,\n batch.target.flowproperty.id,\n batch.target.flowproperty.version,\n ),\n );\n const unique = new Map(references.map((reference) => [sha256Json(reference), reference]));\n return unique.size === 1 ? clonePayload([...unique.values()][0]!) : null;\n}\n\nfunction replaceAliasFlowProperty(\n payload: JsonObject,\n batch: DatasetMaintenanceAliasBatch,\n targetReference: JsonObject,\n): JsonObject | null {\n const desired = clonePayload(payload);\n const root = desired.flowPropertyDataSet;\n const information = isJsonObject(root) ? root.flowPropertiesInformation : null;\n const quantitative = isJsonObject(information) ? information.quantitativeReference : null;\n if (\n !isJsonObject(quantitative) ||\n !referenceMatches(\n quantitative.referenceToReferenceUnitGroup,\n batch.source.unitgroup.id,\n batch.source.unitgroup.version,\n )\n ) {\n return null;\n }\n quantitative.referenceToReferenceUnitGroup = clonePayload(targetReference);\n return desired;\n}\n\nfunction replaceFlowReferenceProperty(\n payload: JsonObject,\n batch: DatasetMaintenanceAliasBatch,\n targetReference: JsonObject,\n): JsonObject | null {\n const desired = clonePayload(payload);\n const matching = flowPropertySingleton(desired);\n if (\n !matching ||\n !referenceMatches(\n matching.referenceToFlowPropertyDataSet,\n batch.source.flowproperty.id,\n batch.source.flowproperty.version,\n ) ||\n matching['@dataSetInternalID'] !== '1' ||\n typeof matching.meanValue !== 'string' ||\n !decimalEqual(matching.meanValue, '1')\n ) {\n return null;\n }\n matching.referenceToFlowPropertyDataSet = clonePayload(targetReference);\n return desired;\n}\n\nfunction rewriteProcessExchanges(options: {\n payload: JsonObject;\n action: DatasetMaintenancePlanAction;\n batch: DatasetMaintenanceAliasBatch;\n}): { payload: JsonObject; rewrites: DatasetMaintenanceAliasExchangeRewrite[] } | null {\n const desired = clonePayload(options.payload);\n const exchanges = processExchangeEntries(desired);\n if (!exchanges || !options.action.exchange_instances) {\n return null;\n }\n const rewrites: DatasetMaintenanceAliasExchangeRewrite[] = [];\n for (const instance of options.action.exchange_instances) {\n const exchange = exchanges[instance.exchange_index];\n if (\n !exchange ||\n exchange['@dataSetInternalID'] !== instance.data_set_internal_id ||\n !referenceMatches(exchange.referenceToFlowDataSet, instance.flow_id, instance.flow_version) ||\n exchange.exchangeDirection !== instance.direction ||\n sha256Json(exchange) !== instance.before_exchange_sha256 ||\n exchange.meanAmount !== instance.before_mean_amount ||\n exchange.resultingAmount !== instance.before_resulting_amount ||\n typeof exchange.exchangeDirection !== 'string'\n ) {\n return null;\n }\n const afterMean = multiplyExactDecimal(instance.before_mean_amount, options.batch.factor);\n const afterResulting = multiplyExactDecimal(\n instance.before_resulting_amount,\n options.batch.factor,\n );\n if (afterMean === null || afterResulting === null) {\n return null;\n }\n exchange.meanAmount = afterMean;\n exchange.resultingAmount = afterResulting;\n rewrites.push({\n ...instance,\n action_id: options.action.action_id,\n process_id: options.action.id,\n process_version: options.action.version,\n after_mean_amount: afterMean,\n after_resulting_amount: afterResulting,\n after_exchange_sha256: sha256Json(exchange),\n });\n }\n return { payload: desired, rewrites };\n}\n\nfunction countFlowPropertyRefs(\n rows: DatasetMaintenanceRemoteRow[],\n flowpropertyId: string,\n flowpropertyVersion: string,\n): number {\n return rows\n .filter((row) => row.table === 'flows' && row.json_ordered)\n .flatMap((row) => flowPropertyEntries(row.json_ordered!) ?? [])\n .filter((entry) =>\n referenceMatches(entry.referenceToFlowPropertyDataSet, flowpropertyId, flowpropertyVersion),\n ).length;\n}\n\nfunction countUnitGroupRefs(\n rows: DatasetMaintenanceRemoteRow[],\n unitgroupId: string,\n unitgroupVersion: string,\n): number {\n return rows.filter((row) => {\n if (row.table !== 'flowproperties' || !row.json_ordered) return false;\n const root = row.json_ordered.flowPropertyDataSet;\n const information = isJsonObject(root) ? root.flowPropertiesInformation : null;\n const quantitative = isJsonObject(information) ? information.quantitativeReference : null;\n return (\n isJsonObject(quantitative) &&\n referenceMatches(quantitative.referenceToReferenceUnitGroup, unitgroupId, unitgroupVersion)\n );\n }).length;\n}\n\nfunction flowsWithProperty(\n rows: DatasetMaintenanceRemoteRow[],\n flowpropertyId: string,\n flowpropertyVersion: string,\n): Set<string> {\n return new Set(\n rows\n .filter(\n (row) =>\n row.table === 'flows' &&\n row.json_ordered &&\n (flowPropertyEntries(row.json_ordered) ?? []).some((entry) =>\n referenceMatches(\n entry.referenceToFlowPropertyDataSet,\n flowpropertyId,\n flowpropertyVersion,\n ),\n ),\n )\n .map((row) => entityRefKey(row.id, row.version)),\n );\n}\n\nfunction countExchangeFlowRefs(rows: DatasetMaintenanceRemoteRow[], flowRefs: Set<string>): number {\n return rows\n .filter((row) => row.table === 'processes' && row.json_ordered)\n .flatMap((row) => processExchangeEntries(row.json_ordered!) ?? [])\n .filter((exchange) => {\n const identity = referenceIdentity(exchange.referenceToFlowDataSet);\n return (\n identity.id !== null &&\n identity.version !== null &&\n flowRefs.has(entityRefKey(identity.id, identity.version))\n );\n }).length;\n}\n\nfunction exchangeClosureKeys(\n rows: DatasetMaintenanceRemoteRow[],\n flowRefs: Set<string>,\n): Set<string> {\n const keys = new Set<string>();\n for (const row of rows.filter((entry) => entry.table === 'processes' && entry.json_ordered)) {\n for (const [index, exchange] of (processExchangeEntries(row.json_ordered!) ?? []).entries()) {\n const identity = referenceIdentity(exchange.referenceToFlowDataSet);\n if (\n identity.id &&\n identity.version &&\n flowRefs.has(entityRefKey(identity.id, identity.version))\n ) {\n keys.add(\n `${row.id}\\u0000${row.version}\\u0000${index}\\u0000${String(exchange['@dataSetInternalID'])}\\u0000${identity.id}\\u0000${identity.version}`,\n );\n }\n }\n }\n return keys;\n}\n\nfunction selectorClosureKeys(actions: DatasetMaintenancePlanAction[]): Set<string> {\n return new Set(\n actions.flatMap((action) =>\n (action.exchange_instances ?? []).map(\n (instance) =>\n `${action.id}\\u0000${action.version}\\u0000${instance.exchange_index}\\u0000${instance.data_set_internal_id}\\u0000${instance.flow_id}\\u0000${instance.flow_version}`,\n ),\n ),\n );\n}\n\nfunction projectRows(\n rows: DatasetMaintenanceRemoteRow[],\n desiredPayloads: Map<string, JsonObject>,\n actions: DatasetMaintenancePlanAction[],\n): DatasetMaintenanceRemoteRow[] {\n const actionByKey = new Map(actions.map((action) => [maintenanceRowKey(action), action]));\n return rows.map((row) => {\n const action = actionByKey.get(maintenanceRowKey(row));\n const desired = action ? desiredPayloads.get(action.action_id) : null;\n return desired ? { ...row, json_ordered: desired } : row;\n });\n}\n\nexport function buildAliasRewritePlan(options: {\n scope: DatasetMaintenanceScope;\n actions: DatasetMaintenancePlanAction[];\n accountRows: DatasetMaintenanceRemoteRow[];\n targetSnapshots: Map<string, DatasetMaintenanceAliasBatchPlan['target_snapshots']>;\n schemas?: DatasetMaintenanceAliasSchemas;\n}): {\n desired_payloads: Map<string, JsonObject>;\n batches: DatasetMaintenanceAliasBatchPlan[];\n} {\n const batches = options.scope.alias_batches ?? [];\n const schemas = options.schemas ?? DEFAULT_ALIAS_SCHEMAS;\n const desiredPayloads = new Map<string, JsonObject>();\n const batchPlans: DatasetMaintenanceAliasBatchPlan[] = [];\n\n for (const batch of batches) {\n const profile = ALIAS_PROFILES[batch.dimension];\n const actions = options.actions.filter((action) => action.batch_id === batch.batch_id);\n const byTable = {\n flowproperties: actions.filter((action) => action.table === 'flowproperties'),\n flows: actions.filter((action) => action.table === 'flows'),\n processes: actions.filter((action) => action.table === 'processes'),\n };\n const targetSnapshots = options.targetSnapshots.get(batch.batch_id) ?? {\n unitgroup: null,\n flowproperty: null,\n source_unitgroup: null,\n };\n const targetUnitGroupReference = targetUnitGroupReferenceFromFlowProperty(\n targetSnapshots.flowproperty,\n batch,\n );\n const targetFlowPropertyReference = canonicalFlowPropertyReference(options.accountRows, batch);\n if (\n actions.length !== profile.rows ||\n byTable.flowproperties.length !== profile.flowproperties ||\n byTable.flows.length !== profile.flows ||\n byTable.processes.length !== profile.processes\n ) {\n addBatchBlocker(\n options.actions,\n batch.batch_id,\n 'ALIAS_BATCH_ROW_COUNTS_MISMATCH',\n 'Alias batch row/table counts do not match the frozen dimension profile.',\n {\n profile,\n observed: {\n rows: actions.length,\n ...Object.fromEntries(\n Object.entries(byTable).map(([key, value]) => [key, value.length]),\n ),\n },\n },\n );\n }\n if (\n byTable.flowproperties[0]?.id !== batch.source.flowproperty.id ||\n byTable.flowproperties[0]?.version !== batch.source.flowproperty.version\n ) {\n addBatchBlocker(\n options.actions,\n batch.batch_id,\n 'ALIAS_SOURCE_FLOWPROPERTY_ACTION_MISMATCH',\n 'The one flowproperty action must target the frozen source flowproperty.',\n );\n }\n if (\n !targetSnapshotValid(\n targetSnapshots.unitgroup,\n 'unitgroups',\n batch,\n options.scope.account.user_id,\n ) ||\n !targetSnapshotValid(\n targetSnapshots.flowproperty,\n 'flowproperties',\n batch,\n options.scope.account.user_id,\n ) ||\n !sourceUnitGroupSnapshotValid(\n targetSnapshots.source_unitgroup,\n batch,\n options.scope.account.user_id,\n )\n ) {\n addBatchBlocker(\n options.actions,\n batch.batch_id,\n 'ALIAS_SUPPORT_NOT_OWNER_DRAFT',\n 'Source and target FP/UG support must be exact current-owner state_code=0 drafts.',\n );\n }\n const referenceUnit = sourceReferenceUnit(targetSnapshots.source_unitgroup, batch);\n const conversionUnit = targetConversionUnit({\n source: referenceUnit,\n target: targetSnapshots.unitgroup,\n factor: batch.factor,\n });\n if (\n !targetUnitGroupReference ||\n !targetFlowPropertyReference ||\n !referenceUnit ||\n !conversionUnit\n ) {\n addBatchBlocker(\n options.actions,\n batch.batch_id,\n 'ALIAS_TARGET_REFERENCE_INVALID',\n 'Target references could not be derived from the frozen owner-draft support rows.',\n );\n }\n\n const exchangeRewrites: DatasetMaintenanceAliasExchangeRewrite[] = [];\n for (const action of actions) {\n const payload = action.before?.json_ordered;\n let desired: JsonObject | null = null;\n if (payload && action.table === 'flowproperties' && targetUnitGroupReference) {\n desired = replaceAliasFlowProperty(payload, batch, targetUnitGroupReference);\n } else if (payload && action.table === 'flows' && targetFlowPropertyReference) {\n desired = replaceFlowReferenceProperty(payload, batch, targetFlowPropertyReference);\n } else if (payload && action.table === 'processes') {\n const result = rewriteProcessExchanges({ payload, action, batch });\n desired = result?.payload ?? null;\n exchangeRewrites.push(...(result?.rewrites ?? []));\n }\n const schema =\n action.table === 'flowproperties'\n ? schemas.flowproperties\n : action.table === 'flows'\n ? schemas.flows\n : schemas.processes;\n if (\n !desired ||\n (payload && sha256Json(desired) === sha256Json(payload)) ||\n !schema.safeParse(desired).success\n ) {\n action.blockers.push(\n aliasBlocker(\n action,\n 'ALIAS_DESIRED_PAYLOAD_INVALID',\n 'The exact authorized alias rewrite could not be generated from the frozen row.',\n ),\n );\n action.status = 'blocked';\n } else {\n desiredPayloads.set(action.action_id, desired);\n if (action.table === 'flowproperties') {\n action.alias_mutation = { kind: 'flowproperty_unitgroup_reference' };\n } else if (action.table === 'flows') {\n const entry = flowPropertySingleton(payload!);\n const internalId = entry?.['@dataSetInternalID'];\n if (typeof internalId === 'string') {\n action.alias_mutation = {\n kind: 'flow_flowproperty_reference',\n flow_property_internal_id: internalId,\n source_flowproperty_id: batch.source.flowproperty.id,\n source_flowproperty_version: batch.source.flowproperty.version,\n };\n }\n } else {\n action.alias_mutation = {\n kind: 'process_exchange_amounts',\n exchanges: action.exchange_instances!.map((instance) => ({\n index: instance.exchange_index,\n internal_id: instance.data_set_internal_id,\n flow_id: instance.flow_id,\n flow_version: instance.flow_version,\n direction: instance.direction,\n before_exchange_sha256: instance.before_exchange_sha256,\n })),\n };\n }\n }\n }\n\n const sourceFlowIds = new Set(\n byTable.flows.map((action) => entityRefKey(action.id, action.version)),\n );\n const observedSourceFlowIds = flowsWithProperty(\n options.accountRows,\n batch.source.flowproperty.id,\n batch.source.flowproperty.version,\n );\n const observedClosure = exchangeClosureKeys(options.accountRows, sourceFlowIds);\n const selectedClosure = selectorClosureKeys(byTable.processes);\n if (\n sha256Json([...sourceFlowIds].sort()) !== sha256Json([...observedSourceFlowIds].sort()) ||\n sha256Json([...observedClosure].sort()) !== sha256Json([...selectedClosure].sort())\n ) {\n addBatchBlocker(\n options.actions,\n batch.batch_id,\n 'ALIAS_REFERENCE_CLOSURE_MISMATCH',\n 'Flow actions and frozen exchange selectors do not exactly cover the source alias closure.',\n {\n action_flow_ids: [...sourceFlowIds].sort(),\n observed_flow_ids: [...observedSourceFlowIds].sort(),\n observed_exchanges: observedClosure.size,\n selected_exchanges: selectedClosure.size,\n },\n );\n }\n if (exchangeRewrites.length !== profile.exchanges) {\n addBatchBlocker(\n options.actions,\n batch.batch_id,\n 'ALIAS_EXCHANGE_COUNT_MISMATCH',\n 'Scaled exchange count does not match the frozen dimension profile.',\n { expected: profile.exchanges, actual: exchangeRewrites.length },\n );\n }\n const processExchangeCount = byTable.processes.reduce(\n (sum, action) =>\n sum + (processExchangeEntries(action.before?.json_ordered ?? {})?.length ?? 0),\n 0,\n );\n batchPlans.push({\n ...batch,\n action_ids: actions.map((action) => action.action_id),\n target_snapshots: targetSnapshots,\n conversion_evidence: {\n source_unitgroup_payload_sha256: targetSnapshots.source_unitgroup?.payload_sha256 ?? null,\n source_reference_unit: referenceUnit,\n target_conversion_unit: conversionUnit,\n },\n exchange_rewrites: exchangeRewrites,\n summary: {\n rows: actions.length,\n flowproperties: byTable.flowproperties.length,\n flows: byTable.flows.length,\n processes: byTable.processes.length,\n exchanges: exchangeRewrites.length,\n amount_fields: exchangeRewrites.length * 2,\n unrelated_exchanges: processExchangeCount - exchangeRewrites.length,\n },\n postconditions: {\n source_unitgroup_incoming_refs: -1,\n source_flowproperty_flow_refs: -1,\n target_flow_refs: -1,\n target_exchange_refs: -1,\n },\n });\n }\n\n const projected = projectRows(options.accountRows, desiredPayloads, options.actions);\n for (const batchPlan of batchPlans) {\n const targetFlows = flowsWithProperty(\n projected,\n batchPlan.target.flowproperty.id,\n batchPlan.target.flowproperty.version,\n );\n batchPlan.postconditions = {\n source_unitgroup_incoming_refs: countUnitGroupRefs(\n projected,\n batchPlan.source.unitgroup.id,\n batchPlan.source.unitgroup.version,\n ),\n source_flowproperty_flow_refs: countFlowPropertyRefs(\n projected,\n batchPlan.source.flowproperty.id,\n batchPlan.source.flowproperty.version,\n ),\n target_flow_refs: targetFlows.size,\n target_exchange_refs: countExchangeFlowRefs(projected, targetFlows),\n };\n const profile = ALIAS_PROFILES[batchPlan.dimension];\n if (\n batchPlan.postconditions.source_unitgroup_incoming_refs !== 0 ||\n batchPlan.postconditions.source_flowproperty_flow_refs !== 0 ||\n batchPlan.postconditions.target_flow_refs !== profile.target_flow_refs ||\n batchPlan.postconditions.target_exchange_refs !== profile.target_exchange_refs\n ) {\n addBatchBlocker(\n options.actions,\n batchPlan.batch_id,\n 'ALIAS_POSTCONDITIONS_MISMATCH',\n 'Projected alias reference counts do not match the frozen postconditions.',\n { expected: profile, actual: batchPlan.postconditions },\n );\n }\n }\n const unrelated = batchPlans.reduce((sum, batch) => sum + batch.summary.unrelated_exchanges, 0);\n if (unrelated !== EXPECTED_UNRELATED_EXCHANGES) {\n addBatchBlocker(\n options.actions,\n batchPlans[0]?.batch_id ?? '',\n 'ALIAS_UNRELATED_EXCHANGE_COUNT_MISMATCH',\n 'The exact process closure must preserve 309 unrelated exchanges.',\n { expected: EXPECTED_UNRELATED_EXCHANGES, actual: unrelated },\n );\n }\n return { desired_payloads: desiredPayloads, batches: batchPlans };\n}\n\nexport const __testInternals = {\n ALIAS_PROFILES,\n EXPECTED_UNRELATED_EXCHANGES,\n countExchangeFlowRefs,\n countFlowPropertyRefs,\n countUnitGroupRefs,\n decimalEqual,\n decimalParts,\n decimalText,\n exchangeClosureKeys,\n flowPropertyEntries,\n flowPropertySingleton,\n flowsWithProperty,\n processExchangeEntries,\n projectRows,\n referenceIdentity,\n referenceMatches,\n replaceAliasFlowProperty,\n replaceFlowReferenceProperty,\n rewriteProcessExchanges,\n selectorClosureKeys,\n targetUnitGroupReferenceFromFlowProperty,\n canonicalFlowPropertyReference,\n targetSnapshotValid,\n sourceReferenceUnit,\n sourceUnitGroupSnapshotValid,\n targetConversionUnit,\n};\n"]}