@mysten/sui
Version:
Sui TypeScript API
1 lines • 24.3 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","names":["bcs"],"sources":["../../src/client/utils.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toBase64 } from '@mysten/utils';\n\nimport { bcs } from '../bcs/index.js';\nimport { ExecutionStatus } from '../bcs/effects.js';\nimport { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport type { SuiClientTypes } from './types.js';\n\nconst ordinalRules = new Intl.PluralRules('en-US', { type: 'ordinal' });\nconst ordinalSuffixes = new Map([\n\t['one', 'st'],\n\t['two', 'nd'],\n\t['few', 'rd'],\n\t['other', 'th'],\n]);\n\nexport function formatOrdinal(n: number): string {\n\treturn `${n}${ordinalSuffixes.get(ordinalRules.select(n))}`;\n}\n\nexport function formatMoveAbortMessage(options: {\n\tcommand?: number;\n\tlocation?: {\n\t\tpackage?: string;\n\t\tmodule?: string;\n\t\tfunctionName?: string;\n\t\tinstruction?: number;\n\t};\n\tabortCode: string;\n\tcleverError?: {\n\t\tlineNumber?: number;\n\t\tconstantName?: string;\n\t\tvalue?: string;\n\t};\n}): string {\n\tconst { command, location, abortCode, cleverError } = options;\n\tconst parts: string[] = [];\n\n\tif (command != null) {\n\t\tparts.push(`MoveAbort in ${formatOrdinal(command + 1)} command`);\n\t} else {\n\t\tparts.push('MoveAbort');\n\t}\n\n\tif (cleverError?.constantName) {\n\t\tconst errorStr = cleverError!.value\n\t\t\t? `'${cleverError!.constantName}': ${cleverError!.value}`\n\t\t\t: `'${cleverError!.constantName}'`;\n\t\tparts.push(errorStr);\n\t} else {\n\t\tparts.push(`abort code: ${abortCode}`);\n\t}\n\n\tif (location?.package && location?.module) {\n\t\tconst pkg = location.package.startsWith('0x') ? location.package : `0x${location.package}`;\n\t\tconst locationParts = [pkg, location.module, location.functionName].filter(Boolean);\n\t\tconst locationStr = [`in '${locationParts.join('::')}'`];\n\n\t\tif (cleverError?.lineNumber != null) {\n\t\t\tlocationStr.push(`(line ${cleverError.lineNumber})`);\n\t\t} else if (location.instruction != null) {\n\t\t\tlocationStr.push(`(instruction ${location.instruction})`);\n\t\t}\n\n\t\tparts.push(locationStr.join(' '));\n\t}\n\n\treturn parts.join(', ');\n}\n\n// Minimal BCS types for extracting just the status from transaction effects.\n// BCS fields are read sequentially, so we only need to define fields up to and including status.\n// This avoids parsing the entire effects structure when we only need success/failure.\n\n// First, try with the full ExecutionStatus to get detailed error info\nconst MinimalEffectsWithError = bcs.struct('MinimalEffectsWithError', {\n\tstatus: ExecutionStatus,\n});\n\nconst MinimalTransactionEffectsWithError = bcs.enum('MinimalTransactionEffectsWithError', {\n\tV1: MinimalEffectsWithError,\n\tV2: MinimalEffectsWithError,\n});\n\n// Fallback version that doesn't parse error details - used when ExecutionFailureStatus has unknown variants\nconst MinimalExecutionStatusNoError = bcs.enum('MinimalExecutionStatusNoError', {\n\tSuccess: null,\n\tFailed: null, // Don't parse the error structure\n});\n\nconst MinimalEffectsNoError = bcs.struct('MinimalEffectsNoError', {\n\tstatus: MinimalExecutionStatusNoError,\n});\n\nconst MinimalTransactionEffectsNoError = bcs.enum('MinimalTransactionEffectsNoError', {\n\tV1: MinimalEffectsNoError,\n\tV2: MinimalEffectsNoError,\n});\n\ntype BcsExecutionFailureStatus = NonNullable<\n\t(typeof ExecutionStatus.$inferType)['Failure']\n>['error'];\n\nfunction formatErrorMessage($kind: string, data: unknown): string {\n\tif (data !== null && data !== undefined && typeof data !== 'boolean') {\n\t\treturn `${$kind}(${JSON.stringify(data, (_key, value) => (typeof value === 'bigint' ? value.toString() : value))})`;\n\t}\n\treturn $kind;\n}\n\nfunction parseBcsExecutionError(failure: {\n\terror: BcsExecutionFailureStatus;\n\tcommand: string | null;\n}): SuiClientTypes.ExecutionError {\n\tconst error = failure.error;\n\tconst command = failure.command != null ? Number(failure.command) : undefined;\n\n\tswitch (error.$kind) {\n\t\tcase 'MoveAbort': {\n\t\t\tconst [location, abortCode] = error.MoveAbort;\n\t\t\tconst moveLocation = {\n\t\t\t\tpackage: location.module.address,\n\t\t\t\tmodule: location.module.name,\n\t\t\t\tfunction: location.function,\n\t\t\t\tfunctionName: location.functionName ?? undefined,\n\t\t\t\tinstruction: location.instruction,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatMoveAbortMessage({\n\t\t\t\t\tcommand,\n\t\t\t\t\tlocation: moveLocation,\n\t\t\t\t\tabortCode: String(abortCode),\n\t\t\t\t}),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: {\n\t\t\t\t\tabortCode: String(abortCode),\n\t\t\t\t\tlocation: moveLocation,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase 'MoveObjectTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveObjectTooBig', error.MoveObjectTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'ObjectTooBig',\n\t\t\t\t\tsize: Number(error.MoveObjectTooBig.objectSize),\n\t\t\t\t\tmaxSize: Number(error.MoveObjectTooBig.maxObjectSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MovePackageTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MovePackageTooBig', error.MovePackageTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'PackageTooBig',\n\t\t\t\t\tsize: Number(error.MovePackageTooBig.objectSize),\n\t\t\t\t\tmaxSize: Number(error.MovePackageTooBig.maxObjectSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'EffectsTooLarge':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('EffectsTooLarge', error.EffectsTooLarge),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'EffectsTooLarge',\n\t\t\t\t\tsize: Number(error.EffectsTooLarge.currentSize),\n\t\t\t\t\tmaxSize: Number(error.EffectsTooLarge.maxSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'WrittenObjectsTooLarge':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('WrittenObjectsTooLarge', error.WrittenObjectsTooLarge),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'WrittenObjectsTooLarge',\n\t\t\t\t\tsize: Number(error.WrittenObjectsTooLarge.currentSize),\n\t\t\t\t\tmaxSize: Number(error.WrittenObjectsTooLarge.maxSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MoveVectorElemTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveVectorElemTooBig', error.MoveVectorElemTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'MoveVectorElemTooBig',\n\t\t\t\t\tsize: Number(error.MoveVectorElemTooBig.valueSize),\n\t\t\t\t\tmaxSize: Number(error.MoveVectorElemTooBig.maxScaledSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'MoveRawValueTooBig':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage: formatErrorMessage('MoveRawValueTooBig', error.MoveRawValueTooBig),\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: 'MoveRawValueTooBig',\n\t\t\t\t\tsize: Number(error.MoveRawValueTooBig.valueSize),\n\t\t\t\t\tmaxSize: Number(error.MoveRawValueTooBig.maxScaledSize),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CommandArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CommandArgumentError',\n\t\t\t\tmessage: formatErrorMessage('CommandArgumentError', error.CommandArgumentError),\n\t\t\t\tcommand,\n\t\t\t\tCommandArgumentError: {\n\t\t\t\t\targument: error.CommandArgumentError.argIdx,\n\t\t\t\t\tname: error.CommandArgumentError.kind.$kind,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'TypeArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'TypeArgumentError',\n\t\t\t\tmessage: formatErrorMessage('TypeArgumentError', error.TypeArgumentError),\n\t\t\t\tcommand,\n\t\t\t\tTypeArgumentError: {\n\t\t\t\t\ttypeArgument: error.TypeArgumentError.argumentIdx,\n\t\t\t\t\tname: error.TypeArgumentError.kind.$kind,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'PackageUpgradeError': {\n\t\t\tconst upgradeError = error.PackageUpgradeError.upgradeError;\n\t\t\treturn {\n\t\t\t\t$kind: 'PackageUpgradeError',\n\t\t\t\tmessage: formatErrorMessage('PackageUpgradeError', error.PackageUpgradeError),\n\t\t\t\tcommand,\n\t\t\t\tPackageUpgradeError: {\n\t\t\t\t\tname: upgradeError.$kind,\n\t\t\t\t\tpackageId:\n\t\t\t\t\t\tupgradeError.$kind === 'UnableToFetchPackage'\n\t\t\t\t\t\t\t? upgradeError.UnableToFetchPackage.packageId\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tdigest:\n\t\t\t\t\t\tupgradeError.$kind === 'DigestDoesNotMatch'\n\t\t\t\t\t\t\t? toBase64(upgradeError.DigestDoesNotMatch.digest)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase 'ExecutionCancelledDueToSharedObjectCongestion':\n\t\t\treturn {\n\t\t\t\t$kind: 'CongestedObjects',\n\t\t\t\tmessage: formatErrorMessage(\n\t\t\t\t\t'ExecutionCancelledDueToSharedObjectCongestion',\n\t\t\t\t\terror.ExecutionCancelledDueToSharedObjectCongestion,\n\t\t\t\t),\n\t\t\t\tcommand,\n\t\t\t\tCongestedObjects: {\n\t\t\t\t\tname: 'ExecutionCanceledDueToConsensusObjectCongestion',\n\t\t\t\t\tobjects: error.ExecutionCancelledDueToSharedObjectCongestion.congested_objects,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'AddressDeniedForCoin':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage: formatErrorMessage('AddressDeniedForCoin', error.AddressDeniedForCoin),\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: 'AddressDeniedForCoin',\n\t\t\t\t\taddress: error.AddressDeniedForCoin.address,\n\t\t\t\t\tcoinType: error.AddressDeniedForCoin.coinType,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CoinTypeGlobalPause':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage: formatErrorMessage('CoinTypeGlobalPause', error.CoinTypeGlobalPause),\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: 'CoinTypeGlobalPause',\n\t\t\t\t\tcoinType: error.CoinTypeGlobalPause.coinType,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'CircularObjectOwnership':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: formatErrorMessage('CircularObjectOwnership', error.CircularObjectOwnership),\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'CircularObjectOwnership',\n\t\t\t\t\tobjectId: error.CircularObjectOwnership.object,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InvalidGasObject':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InvalidGasObject',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InvalidGasObject',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InputObjectDeleted':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InputObjectDeleted',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InputObjectDeleted',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'InvalidTransferObject':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage: 'InvalidTransferObject',\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: 'InvalidTransferObject',\n\t\t\t\t\tobjectId: '',\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'NonExclusiveWriteInputObjectModified':\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: formatErrorMessage(\n\t\t\t\t\t'NonExclusiveWriteInputObjectModified',\n\t\t\t\t\terror.NonExclusiveWriteInputObjectModified,\n\t\t\t\t),\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\n\t\tcase 'InsufficientGas':\n\t\tcase 'InvariantViolation':\n\t\tcase 'FeatureNotYetSupported':\n\t\tcase 'InsufficientCoinBalance':\n\t\tcase 'CoinBalanceOverflow':\n\t\tcase 'PublishErrorNonZeroAddress':\n\t\tcase 'SuiMoveVerificationError':\n\t\tcase 'MovePrimitiveRuntimeError':\n\t\tcase 'VMVerificationOrDeserializationError':\n\t\tcase 'VMInvariantViolation':\n\t\tcase 'FunctionNotFound':\n\t\tcase 'ArityMismatch':\n\t\tcase 'TypeArityMismatch':\n\t\tcase 'NonEntryFunctionInvoked':\n\t\tcase 'UnusedValueWithoutDrop':\n\t\tcase 'InvalidPublicFunctionReturnType':\n\t\tcase 'PublishUpgradeMissingDependency':\n\t\tcase 'PublishUpgradeDependencyDowngrade':\n\t\tcase 'CertificateDenied':\n\t\tcase 'SuiMoveVerificationTimedout':\n\t\tcase 'SharedObjectOperationNotAllowed':\n\t\tcase 'ExecutionCancelledDueToRandomnessUnavailable':\n\t\tcase 'InvalidLinkage':\n\t\tcase 'InsufficientBalanceForWithdraw':\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: error.$kind,\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\n\t\tdefault:\n\t\t\terror satisfies never;\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: 'Unknown error',\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\t}\n}\n\nexport function parseTransactionBcs(\n\tbytes: Uint8Array,\n\tonlyTransactionKind = false,\n): SuiClientTypes.TransactionData {\n\treturn (\n\t\tonlyTransactionKind\n\t\t\t? TransactionDataBuilder.fromKindBytes(bytes)\n\t\t\t: TransactionDataBuilder.fromBytes(bytes)\n\t).snapshot();\n}\n\n/**\n * Extracts just the status from transaction effects BCS without fully parsing.\n * This is optimized for cases where we only need the status (success/failure)\n * without parsing the entire effects structure.\n *\n * Uses a minimal BCS struct that only parses fields up to and including status,\n * since BCS fields are read sequentially. First tries to parse with full error details,\n * then falls back to a version without error parsing if the error enum has unknown variants.\n *\n * For errors with data, serializes the error as JSON to preserve all information.\n */\nexport function extractStatusFromEffectsBcs(\n\teffectsBytes: Uint8Array,\n): SuiClientTypes.ExecutionStatus {\n\t// First try parsing with full error details\n\tlet parsed: ReturnType<typeof MinimalTransactionEffectsWithError.parse> | null = null;\n\ttry {\n\t\tparsed = MinimalTransactionEffectsWithError.parse(effectsBytes);\n\t} catch {\n\t\t// Fall back to parsing without error details if the error enum has unknown variants\n\t\tconst parsedNoError = MinimalTransactionEffectsNoError.parse(effectsBytes);\n\t\tconst status = (parsedNoError.V1 ?? parsedNoError.V2)!.status;\n\n\t\tif (status.$kind === 'Success') {\n\t\t\treturn { success: true, error: null };\n\t\t}\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage: 'ExecutionFailed',\n\t\t\t\tUnknown: null,\n\t\t\t},\n\t\t};\n\t}\n\n\tconst status = (parsed.V1 ?? parsed.V2)!.status;\n\n\tif (status.$kind === 'Success') {\n\t\treturn { success: true, error: null };\n\t}\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: parseBcsExecutionError(status.Failure),\n\t};\n}\n\nexport function parseTransactionEffectsBcs(effects: Uint8Array): SuiClientTypes.TransactionEffects {\n\tconst parsed = bcs.TransactionEffects.parse(effects);\n\n\tswitch (parsed.$kind) {\n\t\tcase 'V1':\n\t\t\treturn parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1 });\n\t\tcase 'V2':\n\t\t\treturn parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2 });\n\t\tdefault:\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown transaction effects version: ${(parsed as { $kind: string }).$kind}`,\n\t\t\t);\n\t}\n}\n\nfunction parseTransactionEffectsV1(_: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V1']>;\n}): SuiClientTypes.TransactionEffects {\n\tthrow new Error('V1 effects are not supported yet');\n}\n\nfunction parseTransactionEffectsV2({\n\tbytes,\n\teffects,\n}: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V2']>;\n}): SuiClientTypes.TransactionEffects {\n\tconst changedObjects = effects.changedObjects.map(\n\t\t([id, change]): SuiClientTypes.ChangedObject => {\n\t\t\treturn {\n\t\t\t\tobjectId: id,\n\t\t\t\tinputState: change.inputState.$kind === 'Exist' ? 'Exists' : 'DoesNotExist',\n\t\t\t\tinputVersion: change.inputState.Exist?.[0][0] ?? null,\n\t\t\t\tinputDigest: change.inputState.Exist?.[0][1] ?? null,\n\t\t\t\tinputOwner: change.inputState.Exist?.[1] ?? null,\n\t\t\t\toutputState:\n\t\t\t\t\tchange.outputState.$kind === 'NotExist' ? 'DoesNotExist' : change.outputState.$kind,\n\t\t\t\toutputVersion:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[0]\n\t\t\t\t\t\t: change.outputState.$kind === 'ObjectWrite'\n\t\t\t\t\t\t\t? effects.lamportVersion\n\t\t\t\t\t\t\t: null,\n\t\t\t\toutputDigest:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[1]\n\t\t\t\t\t\t: change.outputState.$kind === 'ObjectWrite'\n\t\t\t\t\t\t\t? (change.outputState.ObjectWrite?.[0] ?? null)\n\t\t\t\t\t\t\t: null,\n\t\t\t\toutputOwner:\n\t\t\t\t\tchange.outputState.$kind === 'ObjectWrite' ? change.outputState.ObjectWrite[1] : null,\n\t\t\t\tidOperation: change.idOperation.$kind,\n\t\t\t};\n\t\t},\n\t);\n\n\treturn {\n\t\tbcs: bytes,\n\t\tversion: 2,\n\t\tstatus:\n\t\t\teffects.status.$kind === 'Success'\n\t\t\t\t? {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\terror: null,\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: parseBcsExecutionError(effects.status.Failure),\n\t\t\t\t\t},\n\t\tgasUsed: effects.gasUsed,\n\t\ttransactionDigest: effects.transactionDigest,\n\t\tgasObject:\n\t\t\teffects.gasObjectIndex === null ? null : (changedObjects[effects.gasObjectIndex] ?? null),\n\t\teventsDigest: effects.eventsDigest,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion,\n\t\tchangedObjects,\n\t\tunchangedConsensusObjects: effects.unchangedConsensusObjects.map(\n\t\t\t([objectId, object]): SuiClientTypes.UnchangedConsensusObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: object.$kind,\n\t\t\t\t\tobjectId: objectId,\n\t\t\t\t\tversion:\n\t\t\t\t\t\tobject.$kind === 'ReadOnlyRoot'\n\t\t\t\t\t\t\t? object.ReadOnlyRoot[0]\n\t\t\t\t\t\t\t: (object[object.$kind] as string | null),\n\t\t\t\t\tdigest: object.$kind === 'ReadOnlyRoot' ? object.ReadOnlyRoot[1] : null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxDataDigest,\n\t};\n}\n"],"mappings":"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"}