@aztec/archiver 0.0.1-commit.f504929 → 0.0.1-commit.f5a9928

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 (121) hide show
  1. package/README.md +19 -13
  2. package/dest/archiver.d.ts +73 -18
  3. package/dest/archiver.d.ts.map +1 -1
  4. package/dest/archiver.js +321 -81
  5. package/dest/config.d.ts +7 -3
  6. package/dest/config.d.ts.map +1 -1
  7. package/dest/config.js +43 -14
  8. package/dest/errors.d.ts +55 -9
  9. package/dest/errors.d.ts.map +1 -1
  10. package/dest/errors.js +81 -14
  11. package/dest/factory.d.ts +20 -9
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +85 -37
  14. package/dest/index.d.ts +11 -3
  15. package/dest/index.d.ts.map +1 -1
  16. package/dest/index.js +10 -2
  17. package/dest/l1/calldata_retriever.d.ts +9 -1
  18. package/dest/l1/calldata_retriever.d.ts.map +1 -1
  19. package/dest/l1/calldata_retriever.js +22 -11
  20. package/dest/l1/data_retrieval.d.ts +25 -11
  21. package/dest/l1/data_retrieval.d.ts.map +1 -1
  22. package/dest/l1/data_retrieval.js +25 -32
  23. package/dest/l1/trace_tx.d.ts +12 -66
  24. package/dest/l1/trace_tx.d.ts.map +1 -1
  25. package/dest/l1/validate_historical_logs.d.ts +23 -0
  26. package/dest/l1/validate_historical_logs.d.ts.map +1 -0
  27. package/dest/l1/validate_historical_logs.js +108 -0
  28. package/dest/modules/contract_data_source_adapter.d.ts +25 -0
  29. package/dest/modules/contract_data_source_adapter.d.ts.map +1 -0
  30. package/dest/modules/contract_data_source_adapter.js +32 -0
  31. package/dest/modules/data_source_base.d.ts +73 -50
  32. package/dest/modules/data_source_base.d.ts.map +1 -1
  33. package/dest/modules/data_source_base.js +250 -144
  34. package/dest/modules/data_store_updater.d.ts +42 -17
  35. package/dest/modules/data_store_updater.d.ts.map +1 -1
  36. package/dest/modules/data_store_updater.js +198 -123
  37. package/dest/modules/instrumentation.d.ts +15 -2
  38. package/dest/modules/instrumentation.d.ts.map +1 -1
  39. package/dest/modules/instrumentation.js +48 -9
  40. package/dest/modules/l1_synchronizer.d.ts +14 -8
  41. package/dest/modules/l1_synchronizer.d.ts.map +1 -1
  42. package/dest/modules/l1_synchronizer.js +477 -213
  43. package/dest/modules/outbox_trees_resolver.d.ts +64 -0
  44. package/dest/modules/outbox_trees_resolver.d.ts.map +1 -0
  45. package/dest/modules/outbox_trees_resolver.js +184 -0
  46. package/dest/modules/validation.d.ts +30 -7
  47. package/dest/modules/validation.d.ts.map +1 -1
  48. package/dest/modules/validation.js +35 -17
  49. package/dest/store/block_store.d.ts +186 -78
  50. package/dest/store/block_store.d.ts.map +1 -1
  51. package/dest/store/block_store.js +763 -290
  52. package/dest/store/contract_class_store.d.ts +17 -4
  53. package/dest/store/contract_class_store.d.ts.map +1 -1
  54. package/dest/store/contract_class_store.js +42 -68
  55. package/dest/store/contract_instance_store.d.ts +28 -1
  56. package/dest/store/contract_instance_store.d.ts.map +1 -1
  57. package/dest/store/contract_instance_store.js +58 -6
  58. package/dest/store/data_stores.d.ts +68 -0
  59. package/dest/store/data_stores.d.ts.map +1 -0
  60. package/dest/store/data_stores.js +54 -0
  61. package/dest/store/function_names_cache.d.ts +17 -0
  62. package/dest/store/function_names_cache.d.ts.map +1 -0
  63. package/dest/store/function_names_cache.js +30 -0
  64. package/dest/store/l2_tips_cache.d.ts +13 -7
  65. package/dest/store/l2_tips_cache.d.ts.map +1 -1
  66. package/dest/store/l2_tips_cache.js +13 -76
  67. package/dest/store/log_store.d.ts +42 -37
  68. package/dest/store/log_store.d.ts.map +1 -1
  69. package/dest/store/log_store.js +262 -408
  70. package/dest/store/log_store_codec.d.ts +78 -0
  71. package/dest/store/log_store_codec.d.ts.map +1 -0
  72. package/dest/store/log_store_codec.js +110 -0
  73. package/dest/store/message_store.d.ts +11 -1
  74. package/dest/store/message_store.d.ts.map +1 -1
  75. package/dest/store/message_store.js +51 -9
  76. package/dest/test/fake_l1_state.d.ts +20 -1
  77. package/dest/test/fake_l1_state.d.ts.map +1 -1
  78. package/dest/test/fake_l1_state.js +117 -21
  79. package/dest/test/mock_l2_block_source.d.ts +51 -52
  80. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  81. package/dest/test/mock_l2_block_source.js +232 -180
  82. package/dest/test/mock_structs.d.ts +4 -1
  83. package/dest/test/mock_structs.d.ts.map +1 -1
  84. package/dest/test/mock_structs.js +15 -3
  85. package/dest/test/noop_l1_archiver.d.ts +17 -6
  86. package/dest/test/noop_l1_archiver.d.ts.map +1 -1
  87. package/dest/test/noop_l1_archiver.js +31 -11
  88. package/package.json +15 -14
  89. package/src/archiver.ts +415 -90
  90. package/src/config.ts +51 -13
  91. package/src/errors.ts +122 -21
  92. package/src/factory.ts +99 -30
  93. package/src/index.ts +18 -2
  94. package/src/l1/calldata_retriever.ts +29 -11
  95. package/src/l1/data_retrieval.ts +44 -46
  96. package/src/l1/validate_historical_logs.ts +140 -0
  97. package/src/modules/contract_data_source_adapter.ts +46 -0
  98. package/src/modules/data_source_base.ts +327 -189
  99. package/src/modules/data_store_updater.ts +235 -155
  100. package/src/modules/instrumentation.ts +43 -10
  101. package/src/modules/l1_synchronizer.ts +646 -259
  102. package/src/modules/outbox_trees_resolver.ts +220 -0
  103. package/src/modules/validation.ts +80 -23
  104. package/src/store/block_store.ts +930 -348
  105. package/src/store/contract_class_store.ts +49 -103
  106. package/src/store/contract_instance_store.ts +74 -11
  107. package/src/store/data_stores.ts +104 -0
  108. package/src/store/function_names_cache.ts +37 -0
  109. package/src/store/l2_tips_cache.ts +16 -70
  110. package/src/store/log_store.ts +302 -559
  111. package/src/store/log_store_codec.ts +143 -0
  112. package/src/store/message_store.ts +60 -10
  113. package/src/structs/inbox_message.ts +1 -1
  114. package/src/test/fake_l1_state.ts +145 -32
  115. package/src/test/mock_l2_block_source.ts +292 -227
  116. package/src/test/mock_structs.ts +25 -8
  117. package/src/test/noop_l1_archiver.ts +61 -12
  118. package/dest/store/kv_archiver_store.d.ts +0 -354
  119. package/dest/store/kv_archiver_store.d.ts.map +0 -1
  120. package/dest/store/kv_archiver_store.js +0 -464
  121. package/src/store/kv_archiver_store.ts +0 -671
@@ -1,89 +1,26 @@
1
- import { GENESIS_BLOCK_HEADER_HASH, INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
2
- import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
- import { GENESIS_CHECKPOINT_HEADER_HASH } from '@aztec/stdlib/block';
4
1
  /**
5
2
  * In-memory cache for L2 chain tips (proposed, checkpointed, proven, finalized).
6
3
  * Populated from the BlockStore on first access, then kept up-to-date by the ArchiverDataStoreUpdater.
7
- * Refresh calls should happen within the store transaction that mutates block data to ensure consistency.
4
+ * Refresh calls should happen *after* the store transaction that mutates block data has committed,
5
+ * so the cache loads from committed state and is never replaced if the writer aborts.
8
6
  */ export class L2TipsCache {
9
7
  blockStore;
8
+ initialBlockHash;
10
9
  #tipsPromise;
11
- constructor(blockStore){
10
+ /**
11
+ * The genesis block hash is dynamic — derived from the injected initial header, which depends on
12
+ * `genesisTimestamp` and any prefilled state — so it is supplied here rather than read from store.
13
+ * The genesis checkpoint hash, by contrast, is the static protocol constant and is resolved
14
+ * inside the block store.
15
+ */ constructor(blockStore, initialBlockHash){
12
16
  this.blockStore = blockStore;
17
+ this.initialBlockHash = initialBlockHash;
13
18
  }
14
19
  /** Returns the cached L2 tips. Loads from the block store on first call. */ getL2Tips() {
15
- return this.#tipsPromise ??= this.loadFromStore();
20
+ return this.#tipsPromise ??= this.blockStore.getL2TipsData(this.initialBlockHash);
16
21
  }
17
- /** Reloads the L2 tips from the block store. Should be called within the store transaction that mutates data. */ async refresh() {
18
- this.#tipsPromise = this.loadFromStore();
22
+ /** Reloads the L2 tips from the block store. Should be called after the writer transaction has committed. */ async refresh() {
23
+ this.#tipsPromise = this.blockStore.getL2TipsData(this.initialBlockHash);
19
24
  await this.#tipsPromise;
20
25
  }
21
- async loadFromStore() {
22
- const [latestBlockNumber, provenBlockNumber, checkpointedBlockNumber, finalizedBlockNumber] = await Promise.all([
23
- this.blockStore.getLatestBlockNumber(),
24
- this.blockStore.getProvenBlockNumber(),
25
- this.blockStore.getCheckpointedL2BlockNumber(),
26
- this.blockStore.getFinalizedL2BlockNumber()
27
- ]);
28
- const genesisBlockHeader = {
29
- blockHash: GENESIS_BLOCK_HEADER_HASH,
30
- checkpointNumber: CheckpointNumber.ZERO
31
- };
32
- const beforeInitialBlockNumber = BlockNumber(INITIAL_L2_BLOCK_NUM - 1);
33
- const getBlockData = (blockNumber)=>blockNumber > beforeInitialBlockNumber ? this.blockStore.getBlockData(blockNumber) : genesisBlockHeader;
34
- const [latestBlockData, provenBlockData, checkpointedBlockData, finalizedBlockData] = await Promise.all([
35
- latestBlockNumber,
36
- provenBlockNumber,
37
- checkpointedBlockNumber,
38
- finalizedBlockNumber
39
- ].map(getBlockData));
40
- if (!latestBlockData || !provenBlockData || !finalizedBlockData || !checkpointedBlockData) {
41
- throw new Error('Failed to load block data for L2 tips');
42
- }
43
- const [provenCheckpointId, finalizedCheckpointId, checkpointedCheckpointId] = await Promise.all([
44
- this.getCheckpointIdForBlock(provenBlockData),
45
- this.getCheckpointIdForBlock(finalizedBlockData),
46
- this.getCheckpointIdForBlock(checkpointedBlockData)
47
- ]);
48
- return {
49
- proposed: {
50
- number: latestBlockNumber,
51
- hash: latestBlockData.blockHash.toString()
52
- },
53
- proven: {
54
- block: {
55
- number: provenBlockNumber,
56
- hash: provenBlockData.blockHash.toString()
57
- },
58
- checkpoint: provenCheckpointId
59
- },
60
- finalized: {
61
- block: {
62
- number: finalizedBlockNumber,
63
- hash: finalizedBlockData.blockHash.toString()
64
- },
65
- checkpoint: finalizedCheckpointId
66
- },
67
- checkpointed: {
68
- block: {
69
- number: checkpointedBlockNumber,
70
- hash: checkpointedBlockData.blockHash.toString()
71
- },
72
- checkpoint: checkpointedCheckpointId
73
- }
74
- };
75
- }
76
- async getCheckpointIdForBlock(blockData) {
77
- const checkpointData = await this.blockStore.getCheckpointData(blockData.checkpointNumber);
78
- if (!checkpointData) {
79
- return {
80
- number: CheckpointNumber.ZERO,
81
- hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
82
- };
83
- }
84
- return {
85
- number: checkpointData.checkpointNumber,
86
- hash: checkpointData.header.hash().toString()
87
- };
88
- }
89
26
  }
@@ -1,54 +1,59 @@
1
1
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import { L2Block } from '@aztec/stdlib/block';
4
- import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
5
- import { type LogFilter, type SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
2
+ import type { BlockHash, L2Block } from '@aztec/stdlib/block';
3
+ import type { LogResult, PrivateLogsQuery, PublicLogsQuery } from '@aztec/stdlib/logs';
6
4
  import type { BlockStore } from './block_store.js';
7
5
  /**
8
- * A store for logs
6
+ * Indexes every emitted private and public log under a composite hex-string key
7
+ * `[contractAddress (public only)]-tag-blockNumber-txIndexWithinBlock-logIndexWithinTx`,
8
+ * where each numeric segment is zero-padded to 8 lowercase hex digits (4 bytes BE) and
9
+ * `contractAddress` / `tag` are the bare 64-hex-char field representations (no `0x` prefix). The
10
+ * fixed-width zero-padded hex segments sort lexicographically in the same order as the canonical
11
+ * `(contract, tag, blockNumber, txIndexWithinBlock, logIndexWithinTx)` tuple, so a single ordered
12
+ * range scan answers every {@link PrivateLogsQuery} / {@link PublicLogsQuery}.
13
+ *
14
+ * Per-block secondary indices (`#privateKeysByBlock`, `#publicKeysByBlock`) record the exact primary
15
+ * keys written for each block so {@link deleteLogs} can drop them on reorg without having to range
16
+ * scan by block (block isn't the leading key segment).
17
+ *
18
+ * Contract-class logs are no longer stored or served by the log store.
9
19
  */
10
20
  export declare class LogStore {
11
21
  #private;
12
22
  private db;
13
23
  private blockStore;
14
- constructor(db: AztecAsyncKVStore, blockStore: BlockStore, logsMaxPageSize?: number);
24
+ private readonly genesisBlockHash;
15
25
  /**
16
- * Append new logs to the store's list.
17
- * @param blocks - The blocks for which to add the logs.
18
- * @returns True if the operation is successful.
26
+ * @param genesisBlockHash - Hash of the synthetic genesis block. During early sync the PXE anchors to
27
+ * genesis and passes its hash as a query `referenceBlock`; since the archiver never indexes the
28
+ * genesis block, the store recognizes this hash directly and resolves it to the genesis block number
29
+ * rather than mistaking it for a reorg.
19
30
  */
20
- addLogs(blocks: L2Block[]): Promise<boolean>;
21
- deleteLogs(blocks: L2Block[]): Promise<boolean>;
22
- /**
23
- * Gets private logs that match any of the `tags`. For each tag, an array of matching logs is returned. An empty
24
- * array implies no logs match that tag.
25
- * @param tags - The tags to search for.
26
- * @param page - The page number (0-indexed) for pagination.
27
- * @returns An array of log arrays, one per tag. Returns at most MAX_LOGS_PER_TAG logs per tag per page. If
28
- * MAX_LOGS_PER_TAG logs are returned for a tag, the caller should fetch the next page to check for more logs.
29
- */
30
- getPrivateLogsByTags(tags: SiloedTag[], page?: number): Promise<TxScopedL2Log[][]>;
31
+ constructor(db: AztecAsyncKVStore, blockStore: BlockStore, genesisBlockHash: BlockHash);
31
32
  /**
32
- * Gets public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
33
- * logs is returned. An empty array implies no logs match that tag.
34
- * @param contractAddress - The contract address to search logs for.
35
- * @param tags - The tags to search for.
36
- * @param page - The page number (0-indexed) for pagination.
37
- * @returns An array of log arrays, one per tag. Returns at most MAX_LOGS_PER_TAG logs per tag per page. If
38
- * MAX_LOGS_PER_TAG logs are returned for a tag, the caller should fetch the next page to check for more logs.
33
+ * Indexes every emitted private and public log from the given blocks. Wraps the write in a single
34
+ * `db.transactionAsync` so the primary entries and the per-block secondary indices stay consistent.
35
+ *
36
+ * A block is only ever added once; on reorg the archiver calls {@link deleteLogs} first, so we write
37
+ * the secondary index entries with a plain `set` (overwrite) rather than read-modify-append.
39
38
  */
40
- getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[], page?: number): Promise<TxScopedL2Log[][]>;
39
+ addLogs(blocks: L2Block[]): Promise<boolean>;
41
40
  /**
42
- * Gets public logs based on the provided filter.
43
- * @param filter - The filter to apply to the logs.
44
- * @returns The requested logs.
41
+ * Deletes every log indexed under any of the given blocks. Secondary-index driven, so it doesn't
42
+ * have to range-scan the primary maps.
45
43
  */
46
- getPublicLogs(filter: LogFilter): Promise<GetPublicLogsResponse>;
44
+ deleteLogs(blocks: L2Block[]): Promise<boolean>;
45
+ /** Returns one inner array per element of `query.tags`, in input order. */
46
+ getPrivateLogsByTags(query: PrivateLogsQuery): Promise<LogResult[][]>;
47
+ /** Returns one inner array per element of `query.tags`, in input order. */
48
+ getPublicLogsByTags(query: PublicLogsQuery): Promise<LogResult[][]>;
47
49
  /**
48
- * Gets contract class logs based on the provided filter.
49
- * @param filter - The filter to apply to the logs.
50
- * @returns The requested logs.
50
+ * Reads back every private log indexed for the given block via the per-block secondary index. Order
51
+ * matches the canonical composite-key order (`tag`, `blockNumber`, `txIndexWithinBlock`,
52
+ * `logIndexWithinTx`). Used by the data-store-updater test suite to verify the indexed-vs-block-body
53
+ * counts without depending on the removed `getPublicLogs(LogFilter)` API.
51
54
  */
52
- getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse>;
55
+ getPrivateLogsForBlock(blockNumber: number): Promise<LogResult[]>;
56
+ /** {@inheritDoc LogStore.getPrivateLogsForBlock} */
57
+ getPublicLogsForBlock(blockNumber: number): Promise<LogResult[]>;
53
58
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUvbG9nX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBYSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNHLE9BQU8sRUFJTCxLQUFLLFNBQVMsRUFHZCxLQUFLLFNBQVMsRUFDZCxHQUFHLEVBQ0gsYUFBYSxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxxQkFBYSxRQUFROztJQWFqQixPQUFPLENBQUMsRUFBRTtJQUNWLE9BQU8sQ0FBQyxVQUFVO0lBRnBCLFlBQ1UsRUFBRSxFQUFFLGlCQUFpQixFQUNyQixVQUFVLEVBQUUsVUFBVSxFQUM5QixlQUFlLEdBQUUsTUFBYSxFQVUvQjtJQThNRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBUzNDO0lBZ0JELFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQTJCOUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0csb0JBQW9CLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksR0FBRSxNQUFVLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FRMUY7SUFFRDs7Ozs7Ozs7T0FRRztJQUNHLCtCQUErQixDQUNuQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQ1gsSUFBSSxHQUFFLE1BQVUsR0FDZixPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQWE1QjtJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FRL0Q7SUErRkQ7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBUTdFO0NBc0pGIn0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUvbG9nX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFFVixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFJaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUc1QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWNuRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILHFCQUFhLFFBQVE7O0lBbUJqQixPQUFPLENBQUMsRUFBRTtJQUNWLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO0lBVG5DOzs7OztPQUtHO0lBQ0gsWUFDVSxFQUFFLEVBQUUsaUJBQWlCLEVBQ3JCLFVBQVUsRUFBRSxVQUFVLEVBQ2IsZ0JBQWdCLEVBQUUsU0FBUyxFQU03QztJQUVEOzs7Ozs7T0FNRztJQUNILE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQXlFM0M7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0F5QjlDO0lBRUQsMkVBQTJFO0lBQzNFLG9CQUFvQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUdwRTtJQUVELDJFQUEyRTtJQUMzRSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZUFBZSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBR2xFO0lBMEhEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FJaEU7SUFFRCxvREFBb0Q7SUFDcEQscUJBQXFCLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FFL0Q7Q0ErQkYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../src/store/log_store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAa,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAIL,KAAK,SAAS,EAGd,KAAK,SAAS,EACd,GAAG,EACH,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,QAAQ;;IAajB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,UAAU;IAFpB,YACU,EAAE,EAAE,iBAAiB,EACrB,UAAU,EAAE,UAAU,EAC9B,eAAe,GAAE,MAAa,EAU/B;IA8MD;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAS3C;IAgBD,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B9C;IAED;;;;;;;OAOG;IACG,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAQ1F;IAED;;;;;;;;OAQG;IACG,+BAA+B,CACnC,eAAe,EAAE,YAAY,EAC7B,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAa5B;IAED;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAQ/D;IA+FD;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAQ7E;CAsJF"}
1
+ {"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../src/store/log_store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,KAAK,EAEV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAcnD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAQ;;IAmBjB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IATnC;;;;;OAKG;IACH,YACU,EAAE,EAAE,iBAAiB,EACrB,UAAU,EAAE,UAAU,EACb,gBAAgB,EAAE,SAAS,EAM7C;IAED;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAyE3C;IAED;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAyB9C;IAED,2EAA2E;IAC3E,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAGpE;IAED,2EAA2E;IAC3E,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAGlE;IA0HD;;;;;OAKG;IACH,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAIhE;IAED,oDAAoD;IACpD,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAE/D;CA+BF"}