Skip to content

Commit dcf872f

Browse files
vezenovmAztecBot
andauthored
refactor: rename app tagging secret (#23602)
## Summary Renames `ExtendedDirectionalAppTaggingSecret` to `AppTaggingSecret`, including the source file, exports, call sites, tests, and generated API references. This prepares for #23359 to make `AppTaggingSecret` the single concrete tagging secret type with a `kind` discriminator. Review context: #23359 (comment) --------- Co-authored-by: AztecBot <tech@aztec-labs.com>
1 parent 755877c commit dcf872f

28 files changed

Lines changed: 145 additions & 174 deletions

docs/docs-developers/docs/resources/migration_notes.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,22 @@ Aztec is in active development. Each version may introduce breaking changes that
99

1010
## TBD
1111

12+
### [Aztec.js] `ExtendedDirectionalAppTaggingSecret` renamed to `AppTaggingSecret`
13+
14+
`ExtendedDirectionalAppTaggingSecret` has been renamed to `AppTaggingSecret`.
15+
16+
**Migration:**
17+
18+
```diff
19+
- import { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
20+
+ import { AppTaggingSecret } from '@aztec/stdlib/logs';
21+
22+
- ExtendedDirectionalAppTaggingSecret.fromString(value)
23+
+ AppTaggingSecret.fromString(value)
24+
```
25+
26+
**Impact**: Code importing or referencing `ExtendedDirectionalAppTaggingSecret` should update to `AppTaggingSecret`.
27+
1228
### [Aztec.nr] `public_checks` helpers moved to `aztec-nr`
1329

1430
The `privately_check_timestamp`, `privately_check_block_number`, and related caller helpers previously in `noir-contracts/contracts/protocol/public_checks_contract/src/utils.nr` are now in `aztec-nr/aztec/src/public_checks.nr`. Consumer contracts should update their imports:

docs/static/typescript-api/mainnet/pxe.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -281,10 +281,10 @@ new RecipientTaggingStore(store: AztecAsyncKVStore)
281281
**Methods**
282282
- `commit(jobId: string) => Promise<void>` - Writes all job-specific in-memory data to persistent storage.
283283
- `discardStaged(jobId: string) => Promise<void>` - Discards staged data without committing. Called on abort.
284-
- `getHighestAgedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string) => Promise<number | undefined>`
285-
- `getHighestFinalizedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string) => Promise<number | undefined>`
286-
- `updateHighestAgedIndex(secret: ExtendedDirectionalAppTaggingSecret, index: number, jobId: string) => Promise<void>`
287-
- `updateHighestFinalizedIndex(secret: ExtendedDirectionalAppTaggingSecret, index: number, jobId: string) => Promise<void>`
284+
- `getHighestAgedIndex(secret: AppTaggingSecret, jobId: string) => Promise<number | undefined>`
285+
- `getHighestFinalizedIndex(secret: AppTaggingSecret, jobId: string) => Promise<number | undefined>`
286+
- `updateHighestAgedIndex(secret: AppTaggingSecret, index: number, jobId: string) => Promise<void>`
287+
- `updateHighestFinalizedIndex(secret: AppTaggingSecret, index: number, jobId: string) => Promise<void>`
288288

289289
### SenderAddressBookStore
290290

@@ -319,9 +319,9 @@ new SenderTaggingStore(store: AztecAsyncKVStore)
319319
- `dropPendingIndexes(txHashes: TxHash[], jobId: string) => Promise<void>` - Drops all pending indexes corresponding to the given transaction hashes.
320320
- `finalizePendingIndexes(txHashes: TxHash[], jobId: string) => Promise<void>` - Updates pending indexes corresponding to the given transaction hashes to be finalized and prunes any lower pending indexes.
321321
- `finalizePendingIndexesOfAPartiallyRevertedTx(txEffect: TxEffect, jobId: string) => Promise<void>` - Handles finalization of pending indexes for a transaction whose execution was partially reverted. Recomputes the siloed tags for each pending index of the given tx and checks which ones appear in the TxEffect's private logs (i.e., which ones made it onchain). Those that survived are finalized; those that didn't are dropped.
322-
- `getLastFinalizedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string) => Promise<number | undefined>` - Returns the last (highest) finalized index for a given secret.
323-
- `getLastUsedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string) => Promise<number | undefined>` - Returns the last used index for a given directional app tagging secret, considering both finalized and pending indexes.
324-
- `getTxHashesOfPendingIndexes(secret: ExtendedDirectionalAppTaggingSecret, startIndex: number, endIndex: number, jobId: string) => Promise<TxHash[]>` - Returns the transaction hashes of all pending transactions that contain highest indexes within a specified range for a given directional app tagging secret. We check based on the highest indexes only as that is the relevant information for the caller of this function.
322+
- `getLastFinalizedIndex(secret: AppTaggingSecret, jobId: string) => Promise<number | undefined>` - Returns the last (highest) finalized index for a given secret.
323+
- `getLastUsedIndex(secret: AppTaggingSecret, jobId: string) => Promise<number | undefined>` - Returns the last used index for a given directional app tagging secret, considering both finalized and pending indexes.
324+
- `getTxHashesOfPendingIndexes(secret: AppTaggingSecret, startIndex: number, endIndex: number, jobId: string) => Promise<TxHash[]>` - Returns the transaction hashes of all pending transactions that contain highest indexes within a specified range for a given directional app tagging secret. We check based on the highest indexes only as that is the relevant information for the caller of this function.
325325
- `storePendingIndexes(ranges: TaggingIndexRange[], txHash: TxHash, jobId: string) => Promise<void>` - Stores pending index ranges.
326326

327327
## Interfaces
@@ -548,4 +548,4 @@ This package references types from other Aztec packages:
548548
- `AztecAsyncKVStore`, `DataStoreConfig`
549549

550550
**@aztec/stdlib**
551-
- `AztecAddress`, `AztecNode`, `BlockHeader`, `Capsule`, `ChainConfig`, `CompleteAddress`, `ContractArtifact`, `ContractClass`, `ContractClassCommitments`, `ContractClassIdPreimage`, `ContractInstance`, `ContractInstanceWithAddress`, `DataInBlock`, `DebugLog`, `EventSelector`, `ExtendedDirectionalAppTaggingSecret`, `FunctionAbi`, `FunctionArtifactWithContractName`, `FunctionCall`, `FunctionDebugMetadata`, `FunctionSelector`, `InTx`, `IndexedTxEffect`, `Note`, `NoteDao`, `NoteStatus`, `SimulationError`, `TaggingIndexRange`, `TxEffect`, `TxExecutionRequest`, `TxHash`, `TxProfileResult`, `TxProvingResult`, `TxSimulationResult`, `UtilityExecutionResult`
551+
- `AppTaggingSecret`, `AztecAddress`, `AztecNode`, `BlockHeader`, `Capsule`, `ChainConfig`, `CompleteAddress`, `ContractArtifact`, `ContractClass`, `ContractClassCommitments`, `ContractClassIdPreimage`, `ContractInstance`, `ContractInstanceWithAddress`, `DataInBlock`, `DebugLog`, `EventSelector`, `FunctionAbi`, `FunctionArtifactWithContractName`, `FunctionCall`, `FunctionDebugMetadata`, `FunctionSelector`, `InTx`, `IndexedTxEffect`, `Note`, `NoteDao`, `NoteStatus`, `SimulationError`, `TaggingIndexRange`, `TxEffect`, `TxExecutionRequest`, `TxHash`, `TxProfileResult`, `TxProvingResult`, `TxSimulationResult`, `UtilityExecutionResult`

docs/static/typescript-api/mainnet/stdlib.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -646,22 +646,22 @@ new ExtendedContractClassLog(id: LogId, log: ContractClassLog)
646646
- `toBuffer() => Buffer` - Serializes log to a buffer.
647647
- `toString() => string` - Serializes log to a string.
648648

649-
### ExtendedDirectionalAppTaggingSecret
649+
### AppTaggingSecret
650650

651-
Extended directional application tagging secret used for log tagging. "Extended" because it bundles the directional app tagging secret with the app (contract) address. This bundling was done because where this type is used we commonly need access to both the secret and the address. "Directional" because the derived secret is bound to the recipient address: A→B differs from B→A even with the same participants and app. Note: It's a bit unfortunate that this type resides in `stdlib` as the rest of the tagging functionality resides in `pxe/src/tagging`. We need to use this type in `PreTag` that in turn is used by other types in stdlib hence there doesn't seem to be a good way around this.
651+
Application tagging secret used for log tagging. It bundles the directional app tagging secret with the app (contract) address. This bundling was done because where this type is used we commonly need access to both the secret and the address. The derived secret is directional because it is bound to the recipient address: A→B differs from B→A even with the same participants and app. Note: It's a bit unfortunate that this type resides in `stdlib` as the rest of the tagging functionality resides in `pxe/src/tagging`. We need to use this type in `PreTag` that in turn is used by other types in stdlib hence there doesn't seem to be a good way around this.
652652

653653
**Constructor**
654654
```typescript
655-
new ExtendedDirectionalAppTaggingSecret(secret: Fr, app: AztecAddress)
655+
new AppTaggingSecret(secret: Fr, app: AztecAddress)
656656
```
657657

658658
**Properties**
659659
- `readonly app: AztecAddress`
660660
- `readonly secret: Fr`
661661

662662
**Methods**
663-
- `static compute(localAddress: CompleteAddress, localIvsk: Fq, externalAddress: AztecAddress, app: AztecAddress, recipient: AztecAddress) => Promise<ExtendedDirectionalAppTaggingSecret | undefined>` - Derives shared tagging secret and from that, the app address and recipient derives the directional app tagging secret. Returns undefined if `externalAddress` is an invalid address.
664-
- `static fromString(str: string) => ExtendedDirectionalAppTaggingSecret`
663+
- `static compute(localAddress: CompleteAddress, localIvsk: Fq, externalAddress: AztecAddress, app: AztecAddress, recipient: AztecAddress) => Promise<AppTaggingSecret | undefined>` - Derives shared tagging secret and from that, the app address and recipient derives the directional app tagging secret. Returns undefined if `externalAddress` is an invalid address.
664+
- `static fromString(str: string) => AppTaggingSecret`
665665
- `toString() => string`
666666

667667
### ExtendedPublicLog
@@ -4110,7 +4110,7 @@ type TX_ERROR_SIZE_ABOVE_LIMIT = "Transaction size above size limit"
41104110
```typescript
41114111
type TaggingIndexRange = unknown
41124112
```
4113-
Represents a range of tagging indexes for a given extended directional app tagging secret. Used to track the lowest and highest indexes used in a transaction for a given (sender, recipient, app/contract) tuple.
4113+
Represents a range of tagging indexes for a given app tagging secret.
41144114
41154115
### TxValidationResult
41164116
```typescript

yarn-project/pxe/src/contract_function_simulator/execution_tagging_index_cache.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
1-
import { ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
1+
import { AppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
22

3-
/**
4-
* A map that stores the tagging index range for a given extended directional app tagging secret.
5-
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
6-
* of sender -> recipient matters.
7-
*/
3+
/** A map that stores the tagging index range for a given app tagging secret. */
84
export class ExecutionTaggingIndexCache {
95
private taggingIndexMap: Map<string, { lowestIndex: number; highestIndex: number }> = new Map();
106

11-
public getLastUsedIndex(secret: ExtendedDirectionalAppTaggingSecret): number | undefined {
7+
public getLastUsedIndex(secret: AppTaggingSecret): number | undefined {
128
return this.taggingIndexMap.get(secret.toString())?.highestIndex;
139
}
1410

15-
public setLastUsedIndex(secret: ExtendedDirectionalAppTaggingSecret, index: number) {
11+
public setLastUsedIndex(secret: AppTaggingSecret, index: number) {
1612
const currentValue = this.taggingIndexMap.get(secret.toString());
1713
if (currentValue !== undefined && currentValue.highestIndex !== index - 1) {
1814
throw new Error(`Invalid tagging index update. Current value: ${currentValue.highestIndex}, new value: ${index}`);
@@ -29,7 +25,7 @@ export class ExecutionTaggingIndexCache {
2925
*/
3026
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
3127
return Array.from(this.taggingIndexMap.entries()).map(([secret, { lowestIndex, highestIndex }]) => ({
32-
extendedSecret: ExtendedDirectionalAppTaggingSecret.fromString(secret),
28+
extendedSecret: AppTaggingSecret.fromString(secret),
3329
lowestIndex,
3430
highestIndex,
3531
}));

yarn-project/pxe/src/contract_function_simulator/oracle/private_execution_oracle.ts

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
import { AztecAddress } from '@aztec/stdlib/aztec-address';
1414
import { siloNullifier } from '@aztec/stdlib/hash';
1515
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
16-
import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
16+
import { AppTaggingSecret, type ContractClassLog, type TaggingIndexRange } from '@aztec/stdlib/logs';
1717
import { Tag } from '@aztec/stdlib/logs';
1818
import { Note, type NoteStatus } from '@aztec/stdlib/note';
1919
import {
@@ -207,11 +207,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
207207
* @returns An app tag to be used in a log.
208208
*/
209209
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
210-
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
211-
this.contractAddress,
212-
sender,
213-
recipient,
214-
);
210+
const extendedSecret = await this.#calculateAppTaggingSecret(this.contractAddress, sender, recipient);
215211

216212
if (!extendedSecret) {
217213
// We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
@@ -232,23 +228,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
232228
return Tag.compute({ extendedSecret, index });
233229
}
234230

235-
async #calculateExtendedDirectionalAppTaggingSecret(
236-
contractAddress: AztecAddress,
237-
sender: AztecAddress,
238-
recipient: AztecAddress,
239-
) {
231+
async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
240232
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
241233
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
242-
return ExtendedDirectionalAppTaggingSecret.compute(
243-
senderCompleteAddress,
244-
senderIvsk,
245-
recipient,
246-
contractAddress,
247-
recipient,
248-
);
234+
return AppTaggingSecret.compute(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
249235
}
250236

251-
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
237+
async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
252238
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
253239
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
254240

yarn-project/pxe/src/logs/log_service.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,7 @@ import type { KeyStore } from '@aztec/key-store';
44
import { AztecAddress } from '@aztec/stdlib/aztec-address';
55
import type { BlockHash, L2TipsProvider } from '@aztec/stdlib/block';
66
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
7-
import {
8-
ExtendedDirectionalAppTaggingSecret,
9-
PendingTaggedLog,
10-
SiloedTag,
11-
type TxScopedL2Log,
12-
} from '@aztec/stdlib/logs';
7+
import { AppTaggingSecret, PendingTaggedLog, SiloedTag, type TxScopedL2Log } from '@aztec/stdlib/logs';
138
import type { BlockHeader } from '@aztec/stdlib/tx';
149

1510
import {
@@ -158,10 +153,7 @@ export class LogService {
158153
);
159154
}
160155

161-
async #getSecretsForSenders(
162-
contractAddress: AztecAddress,
163-
recipient: AztecAddress,
164-
): Promise<ExtendedDirectionalAppTaggingSecret[]> {
156+
async #getSecretsForSenders(contractAddress: AztecAddress, recipient: AztecAddress): Promise<AppTaggingSecret[]> {
165157
const recipientCompleteAddress = await this.addressStore.getCompleteAddress(recipient);
166158
if (!recipientCompleteAddress) {
167159
return [];
@@ -179,7 +171,7 @@ export class LogService {
179171

180172
return Promise.all(
181173
deduplicatedSenders.map(async sender => {
182-
const secret = await ExtendedDirectionalAppTaggingSecret.compute(
174+
const secret = await AppTaggingSecret.compute(
183175
recipientCompleteAddress,
184176
recipientIvsk,
185177
sender,

yarn-project/pxe/src/storage/backwards_compatibility_tests/schema_tests.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import { CompleteAddress, SerializableContractInstance } from '@aztec/stdlib/con
1616
import { GasFees } from '@aztec/stdlib/gas';
1717
import { PublicKey, PublicKeys } from '@aztec/stdlib/keys';
1818
import {
19+
AppTaggingSecret,
1920
ContractClassLog,
2021
ContractClassLogFields,
21-
ExtendedDirectionalAppTaggingSecret,
2222
PrivateLog,
2323
PublicLog,
2424
type TaggingIndexRange,
@@ -478,8 +478,8 @@ export const SCHEMA_TESTS: readonly SchemaTest[] = [
478478
const recipientTaggingStore = new RecipientTaggingStore(kvStore);
479479

480480
const jobId = 'fixture-job';
481-
const secretA = new ExtendedDirectionalAppTaggingSecret(new Fr(2n), AztecAddress.fromBigInt(3n));
482-
const secretB = new ExtendedDirectionalAppTaggingSecret(new Fr(5n), AztecAddress.fromBigInt(7n));
481+
const secretA = new AppTaggingSecret(new Fr(2n), AztecAddress.fromBigInt(3n));
482+
const secretB = new AppTaggingSecret(new Fr(5n), AztecAddress.fromBigInt(7n));
483483

484484
await recipientTaggingStore.updateHighestFinalizedIndex(secretA, 11, jobId);
485485
await recipientTaggingStore.updateHighestAgedIndex(secretA, 13, jobId);
@@ -512,9 +512,9 @@ export const SCHEMA_TESTS: readonly SchemaTest[] = [
512512
const senderTaggingStore = new SenderTaggingStore(kvStore);
513513

514514
const jobId = 'fixture-job';
515-
const secretA = new ExtendedDirectionalAppTaggingSecret(new Fr(2n), AztecAddress.fromBigInt(3n));
516-
const secretB = new ExtendedDirectionalAppTaggingSecret(new Fr(5n), AztecAddress.fromBigInt(7n));
517-
const secretC = new ExtendedDirectionalAppTaggingSecret(new Fr(11n), AztecAddress.fromBigInt(13n));
515+
const secretA = new AppTaggingSecret(new Fr(2n), AztecAddress.fromBigInt(3n));
516+
const secretB = new AppTaggingSecret(new Fr(5n), AztecAddress.fromBigInt(7n));
517+
const secretC = new AppTaggingSecret(new Fr(11n), AztecAddress.fromBigInt(13n));
518518
const txHashA = TxHash.fromBigInt(17n);
519519
const txHashB = TxHash.fromBigInt(19n);
520520
const txHashC = TxHash.fromBigInt(23n);

yarn-project/pxe/src/storage/tagging_store/recipient_tagging_store.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
2-
import type { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
3-
import { randomExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/testing';
2+
import type { AppTaggingSecret } from '@aztec/stdlib/logs';
3+
import { randomAppTaggingSecret } from '@aztec/stdlib/testing';
44

55
import { RecipientTaggingStore } from './recipient_tagging_store.js';
66

77
describe('RecipientTaggingStore', () => {
88
let taggingStore: RecipientTaggingStore;
9-
let secret1: ExtendedDirectionalAppTaggingSecret;
10-
let secret2: ExtendedDirectionalAppTaggingSecret;
9+
let secret1: AppTaggingSecret;
10+
let secret2: AppTaggingSecret;
1111

1212
beforeEach(async () => {
1313
taggingStore = new RecipientTaggingStore(await openTmpStore('test'));
14-
secret1 = await randomExtendedDirectionalAppTaggingSecret();
15-
secret2 = await randomExtendedDirectionalAppTaggingSecret();
14+
secret1 = await randomAppTaggingSecret();
15+
secret2 = await randomAppTaggingSecret();
1616
});
1717

1818
describe('staged writes', () => {

yarn-project/pxe/src/storage/tagging_store/recipient_tagging_store.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
2-
import type { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
2+
import type { AppTaggingSecret } from '@aztec/stdlib/logs';
33

44
import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
55

@@ -106,11 +106,11 @@ export class RecipientTaggingStore implements StagedStore {
106106
return Promise.resolve();
107107
}
108108

109-
getHighestAgedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
109+
getHighestAgedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
110110
return this.#store.transactionAsync(() => this.#readHighestAgedIndex(jobId, secret.toString()));
111111
}
112112

113-
updateHighestAgedIndex(secret: ExtendedDirectionalAppTaggingSecret, index: number, jobId: string): Promise<void> {
113+
updateHighestAgedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
114114
return this.#store.transactionAsync(async () => {
115115
const currentIndex = await this.#readHighestAgedIndex(jobId, secret.toString());
116116
if (currentIndex !== undefined && index <= currentIndex) {
@@ -121,15 +121,11 @@ export class RecipientTaggingStore implements StagedStore {
121121
});
122122
}
123123

124-
getHighestFinalizedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
124+
getHighestFinalizedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
125125
return this.#store.transactionAsync(() => this.#readHighestFinalizedIndex(jobId, secret.toString()));
126126
}
127127

128-
updateHighestFinalizedIndex(
129-
secret: ExtendedDirectionalAppTaggingSecret,
130-
index: number,
131-
jobId: string,
132-
): Promise<void> {
128+
updateHighestFinalizedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
133129
return this.#store.transactionAsync(async () => {
134130
const currentIndex = await this.#readHighestFinalizedIndex(jobId, secret.toString());
135131
if (currentIndex !== undefined && index < currentIndex) {

0 commit comments

Comments
 (0)