@metamask/transaction-controller 35.0.1 → 35.1.0
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.
- package/CHANGELOG.md +16 -1
- package/dist/TransactionController.js +3 -3
- package/dist/TransactionController.mjs +2 -2
- package/dist/{chunk-J2OIT7FN.mjs → chunk-5JWPMHSZ.mjs} +2 -2
- package/dist/{chunk-PHSSZPCU.js → chunk-QKS2F7VG.js} +5 -5
- package/dist/chunk-SMC5Q6ZH.mjs +120 -0
- package/dist/chunk-SMC5Q6ZH.mjs.map +1 -0
- package/dist/chunk-TIE3CPF7.js +120 -0
- package/dist/chunk-TIE3CPF7.js.map +1 -0
- package/dist/index.js +8 -3
- package/dist/index.mjs +7 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/history.d.ts +9 -0
- package/dist/types/utils/history.d.ts.map +1 -1
- package/dist/utils/history.js +6 -2
- package/dist/utils/history.mjs +5 -1
- package/package.json +1 -1
- package/dist/chunk-QP75SWIQ.js +0 -53
- package/dist/chunk-QP75SWIQ.js.map +0 -1
- package/dist/chunk-XGRAHX6T.mjs +0 -53
- package/dist/chunk-XGRAHX6T.mjs.map +0 -1
- /package/dist/{chunk-J2OIT7FN.mjs.map → chunk-5JWPMHSZ.mjs.map} +0 -0
- /package/dist/{chunk-PHSSZPCU.js.map → chunk-QKS2F7VG.js.map} +0 -0
package/dist/types/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { HARDFORK, CANCEL_RATE, TransactionController, } from './TransactionCont
|
|
|
3
3
|
export type { DappSuggestedGasFees, DefaultGasEstimates, FeeMarketGasFeeEstimateForLevel, FeeMarketGasFeeEstimates, GasFeeEstimates, GasPriceGasFeeEstimates, InferTransactionTypeResult, LegacyGasFeeEstimates, Log, RemoteTransactionSource, RemoteTransactionSourceRequest, SavedGasFees, SecurityAlertResponse, SecurityProviderRequest, SendFlowHistoryEntry, SimulationBalanceChange, SimulationData, SimulationError, SimulationToken, SimulationTokenBalanceChange, TransactionError, TransactionHistory, TransactionHistoryEntry, TransactionMeta, TransactionParams, TransactionReceipt, } from './types';
|
|
4
4
|
export { GasFeeEstimateLevel, GasFeeEstimateType, SimulationErrorCode, SimulationTokenStandard, TransactionEnvelopeType, TransactionStatus, TransactionType, UserFeeLevel, WalletDevice, } from './types';
|
|
5
5
|
export type { EtherscanTransactionMeta } from './utils/etherscan';
|
|
6
|
+
export { DISPLAYED_TRANSACTION_HISTORY_PATHS, MAX_TRANSACTION_HISTORY_LENGTH, } from './utils/history';
|
|
6
7
|
export { determineTransactionType } from './utils/transaction-type';
|
|
7
8
|
export { mergeGasFeeEstimates } from './utils/gas-flow';
|
|
8
9
|
export { isEIP1559Transaction, normalizeTransactionParams, } from './utils/utils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,MAAM,EACN,4BAA4B,EAC5B,2BAA2B,EAC3B,mCAAmC,EACnC,0DAA0D,EAC1D,uDAAuD,EACvD,iDAAiD,EACjD,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC7C,oDAAoD,EACpD,4CAA4C,EAC5C,iDAAiD,EACjD,6CAA6C,EAC7C,kDAAkD,EAClD,8CAA8C,EAC9C,oDAAoD,EACpD,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,WAAW,EACX,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAC/B,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,GAAG,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,MAAM,EACN,4BAA4B,EAC5B,2BAA2B,EAC3B,mCAAmC,EACnC,0DAA0D,EAC1D,uDAAuD,EACvD,iDAAiD,EACjD,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC7C,oDAAoD,EACpD,4CAA4C,EAC5C,iDAAiD,EACjD,6CAA6C,EAC7C,kDAAkD,EAClD,8CAA8C,EAC9C,oDAAoD,EACpD,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,WAAW,EACX,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAC/B,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,GAAG,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,mCAAmC,EACnC,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,eAAe,CAAC"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { TransactionMeta } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* The maximum allowed length of the `transaction.history` property.
|
|
4
|
+
*/
|
|
5
|
+
export declare const MAX_TRANSACTION_HISTORY_LENGTH = 100;
|
|
6
|
+
/**
|
|
7
|
+
* A list of trarnsaction history paths that may be used for display. These entries will not be
|
|
8
|
+
* compressed.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DISPLAYED_TRANSACTION_HISTORY_PATHS: string[];
|
|
2
11
|
/**
|
|
3
12
|
* Build a new version of the provided transaction with an initial history
|
|
4
13
|
* entry, which is just a snapshot of the transaction.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/utils/history.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,eAAe,GAC/B,eAAe,CAGjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,GACX,eAAe,
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/utils/history.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,mCAAmC,UAM/C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,eAAe,GAC/B,eAAe,CAGjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,GACX,eAAe,CAgCjB"}
|
package/dist/utils/history.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkTIE3CPF7js = require('../chunk-TIE3CPF7.js');
|
|
5
7
|
require('../chunk-Z4BLTVTB.js');
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.DISPLAYED_TRANSACTION_HISTORY_PATHS = _chunkTIE3CPF7js.DISPLAYED_TRANSACTION_HISTORY_PATHS; exports.MAX_TRANSACTION_HISTORY_LENGTH = _chunkTIE3CPF7js.MAX_TRANSACTION_HISTORY_LENGTH; exports.addInitialHistorySnapshot = _chunkTIE3CPF7js.addInitialHistorySnapshot; exports.updateTransactionHistory = _chunkTIE3CPF7js.updateTransactionHistory;
|
|
10
14
|
//# sourceMappingURL=history.js.map
|
package/dist/utils/history.mjs
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
+
DISPLAYED_TRANSACTION_HISTORY_PATHS,
|
|
3
|
+
MAX_TRANSACTION_HISTORY_LENGTH,
|
|
2
4
|
addInitialHistorySnapshot,
|
|
3
5
|
updateTransactionHistory
|
|
4
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-SMC5Q6ZH.mjs";
|
|
5
7
|
import "../chunk-XUI43LEZ.mjs";
|
|
6
8
|
export {
|
|
9
|
+
DISPLAYED_TRANSACTION_HISTORY_PATHS,
|
|
10
|
+
MAX_TRANSACTION_HISTORY_LENGTH,
|
|
7
11
|
addInitialHistorySnapshot,
|
|
8
12
|
updateTransactionHistory
|
|
9
13
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/transaction-controller",
|
|
3
|
-
"version": "35.0
|
|
3
|
+
"version": "35.1.0",
|
|
4
4
|
"description": "Stores transactions alongside their periodically updated statuses and manages interactions such as approval and cancellation",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
package/dist/chunk-QP75SWIQ.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/utils/history.ts
|
|
2
|
-
var _fastjsonpatch = require('fast-json-patch'); var _fastjsonpatch2 = _interopRequireDefault(_fastjsonpatch);
|
|
3
|
-
var _lodash = require('lodash');
|
|
4
|
-
function addInitialHistorySnapshot(transactionMeta) {
|
|
5
|
-
const snapshot = snapshotFromTransactionMeta(transactionMeta);
|
|
6
|
-
return _lodash.merge.call(void 0, {}, transactionMeta, { history: [snapshot] });
|
|
7
|
-
}
|
|
8
|
-
function updateTransactionHistory(transactionMeta, note) {
|
|
9
|
-
if (!transactionMeta.history) {
|
|
10
|
-
return transactionMeta;
|
|
11
|
-
}
|
|
12
|
-
const currentState = snapshotFromTransactionMeta(transactionMeta);
|
|
13
|
-
const previousState = replayHistory(transactionMeta.history);
|
|
14
|
-
const historyEntry = generateHistoryEntry(previousState, currentState, note);
|
|
15
|
-
if (historyEntry.length > 0) {
|
|
16
|
-
return _lodash.merge.call(void 0, {}, transactionMeta, {
|
|
17
|
-
history: [...transactionMeta.history, historyEntry]
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
return transactionMeta;
|
|
21
|
-
}
|
|
22
|
-
function generateHistoryEntry(previousState, currentState, note) {
|
|
23
|
-
const historyOperationsEntry = _fastjsonpatch2.default.compare(
|
|
24
|
-
previousState,
|
|
25
|
-
currentState
|
|
26
|
-
);
|
|
27
|
-
if (historyOperationsEntry[0]) {
|
|
28
|
-
if (note) {
|
|
29
|
-
historyOperationsEntry[0].note = note;
|
|
30
|
-
}
|
|
31
|
-
historyOperationsEntry[0].timestamp = Date.now();
|
|
32
|
-
}
|
|
33
|
-
return historyOperationsEntry;
|
|
34
|
-
}
|
|
35
|
-
function replayHistory(transactionHistory) {
|
|
36
|
-
const shortHistory = _lodash.cloneDeep.call(void 0, transactionHistory);
|
|
37
|
-
return shortHistory.reduce(
|
|
38
|
-
// TODO: Replace `any` with type
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
|
-
(val, entry) => _fastjsonpatch2.default.applyPatch(val, entry).newDocument
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
function snapshotFromTransactionMeta(transactionMeta) {
|
|
44
|
-
const snapshot = { ...transactionMeta };
|
|
45
|
-
delete snapshot.history;
|
|
46
|
-
return _lodash.cloneDeep.call(void 0, snapshot);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
exports.addInitialHistorySnapshot = addInitialHistorySnapshot; exports.updateTransactionHistory = updateTransactionHistory;
|
|
53
|
-
//# sourceMappingURL=chunk-QP75SWIQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/history.ts"],"names":[],"mappings":";AAAA,OAAO,gBAAgB;AACvB,SAAS,WAAW,aAAa;AAe1B,SAAS,0BACd,iBACiB;AACjB,QAAM,WAAW,4BAA4B,eAAe;AAC5D,SAAO,MAAM,CAAC,GAAG,iBAAiB,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3D;AAWO,SAAS,yBACd,iBACA,MACiB;AACjB,MAAI,CAAC,gBAAgB,SAAS;AAC5B,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,4BAA4B,eAAe;AAChE,QAAM,gBAAgB,cAAc,gBAAgB,OAAO;AAC3D,QAAM,eAAe,qBAAqB,eAAe,cAAc,IAAI;AAE3E,MAAI,aAAa,SAAS,GAAG;AAC3B,WAAO,MAAM,CAAC,GAAG,iBAAiB;AAAA,MAChC,SAAS,CAAC,GAAG,gBAAgB,SAAS,YAAY;AAAA,IACpD,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAUA,SAAS,qBAGP,eACA,cACA,MACyB;AACzB,QAAM,yBAAyB,WAAW;AAAA,IACxC;AAAA,IACA;AAAA,EACF;AAEA,MAAI,uBAAuB,CAAC,GAAG;AAC7B,QAAI,MAAM;AACR,6BAAuB,CAAC,EAAE,OAAO;AAAA,IACnC;AACA,2BAAuB,CAAC,EAAE,YAAY,KAAK,IAAI;AAAA,EACjD;AACA,SAAO;AACT;AAQA,SAAS,cACP,oBACiB;AACjB,QAAM,eAAe,UAAU,kBAAkB;AACjD,SAAO,aAAa;AAAA;AAAA;AAAA,IAGlB,CAAC,KAAK,UAAe,WAAW,WAAW,KAAK,KAAK,EAAE;AAAA,EACzD;AACF;AAQA,SAAS,4BACP,iBACiB;AACjB,QAAM,WAAW,EAAE,GAAG,gBAAgB;AACtC,SAAO,SAAS;AAChB,SAAO,UAAU,QAAQ;AAC3B","sourcesContent":["import jsonDiffer from 'fast-json-patch';\nimport { cloneDeep, merge } from 'lodash';\n\nimport type {\n TransactionHistory,\n TransactionHistoryEntry,\n TransactionMeta,\n} from '../types';\n\n/**\n * Build a new version of the provided transaction with an initial history\n * entry, which is just a snapshot of the transaction.\n *\n * @param transactionMeta - TransactionMeta to add initial history snapshot to.\n * @returns A copy of `transactionMeta` with a new `history` property.\n */\nexport function addInitialHistorySnapshot(\n transactionMeta: TransactionMeta,\n): TransactionMeta {\n const snapshot = snapshotFromTransactionMeta(transactionMeta);\n return merge({}, transactionMeta, { history: [snapshot] });\n}\n\n/**\n * Builds a new version of the transaction with a new history entry if\n * it has a `history` property, or just returns the transaction.\n *\n * @param transactionMeta - TransactionMeta to add history entry to.\n * @param note - Note to add to history entry.\n * @returns A copy of `transactionMeta` with a new `history` entry if it has an\n * existing non-empty `history` array.\n */\nexport function updateTransactionHistory(\n transactionMeta: TransactionMeta,\n note: string,\n): TransactionMeta {\n if (!transactionMeta.history) {\n return transactionMeta;\n }\n\n const currentState = snapshotFromTransactionMeta(transactionMeta);\n const previousState = replayHistory(transactionMeta.history);\n const historyEntry = generateHistoryEntry(previousState, currentState, note);\n\n if (historyEntry.length > 0) {\n return merge({}, transactionMeta, {\n history: [...transactionMeta.history, historyEntry],\n });\n }\n return transactionMeta;\n}\n\n/**\n * Generates a history entry from the previous and new transaction metadata.\n *\n * @param previousState - The previous transaction metadata.\n * @param currentState - The new transaction metadata.\n * @param note - A note for the transaction metada update.\n * @returns An array of history operation.\n */\nfunction generateHistoryEntry(\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousState: any,\n currentState: TransactionMeta,\n note: string,\n): TransactionHistoryEntry {\n const historyOperationsEntry = jsonDiffer.compare(\n previousState,\n currentState,\n ) as TransactionHistoryEntry;\n // Add a note to the first operation, since it breaks if we append it to the entry\n if (historyOperationsEntry[0]) {\n if (note) {\n historyOperationsEntry[0].note = note;\n }\n historyOperationsEntry[0].timestamp = Date.now();\n }\n return historyOperationsEntry;\n}\n\n/**\n * Recovers previous transactionMeta from passed history array.\n *\n * @param transactionHistory - The transaction metadata to replay.\n * @returns The transaction metadata.\n */\nfunction replayHistory(\n transactionHistory: TransactionHistory,\n): TransactionMeta {\n const shortHistory = cloneDeep(transactionHistory);\n return shortHistory.reduce(\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (val, entry: any) => jsonDiffer.applyPatch(val, entry).newDocument,\n ) as TransactionMeta;\n}\n\n/**\n * Clone the transaction meta data without the history property.\n *\n * @param transactionMeta - The transaction metadata to snapshot.\n * @returns A deep clone of transaction metadata without history property.\n */\nfunction snapshotFromTransactionMeta(\n transactionMeta: TransactionMeta,\n): TransactionMeta {\n const snapshot = { ...transactionMeta };\n delete snapshot.history;\n return cloneDeep(snapshot);\n}\n"]}
|
package/dist/chunk-XGRAHX6T.mjs
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
// src/utils/history.ts
|
|
2
|
-
import jsonDiffer from "fast-json-patch";
|
|
3
|
-
import { cloneDeep, merge } from "lodash";
|
|
4
|
-
function addInitialHistorySnapshot(transactionMeta) {
|
|
5
|
-
const snapshot = snapshotFromTransactionMeta(transactionMeta);
|
|
6
|
-
return merge({}, transactionMeta, { history: [snapshot] });
|
|
7
|
-
}
|
|
8
|
-
function updateTransactionHistory(transactionMeta, note) {
|
|
9
|
-
if (!transactionMeta.history) {
|
|
10
|
-
return transactionMeta;
|
|
11
|
-
}
|
|
12
|
-
const currentState = snapshotFromTransactionMeta(transactionMeta);
|
|
13
|
-
const previousState = replayHistory(transactionMeta.history);
|
|
14
|
-
const historyEntry = generateHistoryEntry(previousState, currentState, note);
|
|
15
|
-
if (historyEntry.length > 0) {
|
|
16
|
-
return merge({}, transactionMeta, {
|
|
17
|
-
history: [...transactionMeta.history, historyEntry]
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
return transactionMeta;
|
|
21
|
-
}
|
|
22
|
-
function generateHistoryEntry(previousState, currentState, note) {
|
|
23
|
-
const historyOperationsEntry = jsonDiffer.compare(
|
|
24
|
-
previousState,
|
|
25
|
-
currentState
|
|
26
|
-
);
|
|
27
|
-
if (historyOperationsEntry[0]) {
|
|
28
|
-
if (note) {
|
|
29
|
-
historyOperationsEntry[0].note = note;
|
|
30
|
-
}
|
|
31
|
-
historyOperationsEntry[0].timestamp = Date.now();
|
|
32
|
-
}
|
|
33
|
-
return historyOperationsEntry;
|
|
34
|
-
}
|
|
35
|
-
function replayHistory(transactionHistory) {
|
|
36
|
-
const shortHistory = cloneDeep(transactionHistory);
|
|
37
|
-
return shortHistory.reduce(
|
|
38
|
-
// TODO: Replace `any` with type
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
|
-
(val, entry) => jsonDiffer.applyPatch(val, entry).newDocument
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
function snapshotFromTransactionMeta(transactionMeta) {
|
|
44
|
-
const snapshot = { ...transactionMeta };
|
|
45
|
-
delete snapshot.history;
|
|
46
|
-
return cloneDeep(snapshot);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export {
|
|
50
|
-
addInitialHistorySnapshot,
|
|
51
|
-
updateTransactionHistory
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=chunk-XGRAHX6T.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/history.ts"],"sourcesContent":["import jsonDiffer from 'fast-json-patch';\nimport { cloneDeep, merge } from 'lodash';\n\nimport type {\n TransactionHistory,\n TransactionHistoryEntry,\n TransactionMeta,\n} from '../types';\n\n/**\n * Build a new version of the provided transaction with an initial history\n * entry, which is just a snapshot of the transaction.\n *\n * @param transactionMeta - TransactionMeta to add initial history snapshot to.\n * @returns A copy of `transactionMeta` with a new `history` property.\n */\nexport function addInitialHistorySnapshot(\n transactionMeta: TransactionMeta,\n): TransactionMeta {\n const snapshot = snapshotFromTransactionMeta(transactionMeta);\n return merge({}, transactionMeta, { history: [snapshot] });\n}\n\n/**\n * Builds a new version of the transaction with a new history entry if\n * it has a `history` property, or just returns the transaction.\n *\n * @param transactionMeta - TransactionMeta to add history entry to.\n * @param note - Note to add to history entry.\n * @returns A copy of `transactionMeta` with a new `history` entry if it has an\n * existing non-empty `history` array.\n */\nexport function updateTransactionHistory(\n transactionMeta: TransactionMeta,\n note: string,\n): TransactionMeta {\n if (!transactionMeta.history) {\n return transactionMeta;\n }\n\n const currentState = snapshotFromTransactionMeta(transactionMeta);\n const previousState = replayHistory(transactionMeta.history);\n const historyEntry = generateHistoryEntry(previousState, currentState, note);\n\n if (historyEntry.length > 0) {\n return merge({}, transactionMeta, {\n history: [...transactionMeta.history, historyEntry],\n });\n }\n return transactionMeta;\n}\n\n/**\n * Generates a history entry from the previous and new transaction metadata.\n *\n * @param previousState - The previous transaction metadata.\n * @param currentState - The new transaction metadata.\n * @param note - A note for the transaction metada update.\n * @returns An array of history operation.\n */\nfunction generateHistoryEntry(\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousState: any,\n currentState: TransactionMeta,\n note: string,\n): TransactionHistoryEntry {\n const historyOperationsEntry = jsonDiffer.compare(\n previousState,\n currentState,\n ) as TransactionHistoryEntry;\n // Add a note to the first operation, since it breaks if we append it to the entry\n if (historyOperationsEntry[0]) {\n if (note) {\n historyOperationsEntry[0].note = note;\n }\n historyOperationsEntry[0].timestamp = Date.now();\n }\n return historyOperationsEntry;\n}\n\n/**\n * Recovers previous transactionMeta from passed history array.\n *\n * @param transactionHistory - The transaction metadata to replay.\n * @returns The transaction metadata.\n */\nfunction replayHistory(\n transactionHistory: TransactionHistory,\n): TransactionMeta {\n const shortHistory = cloneDeep(transactionHistory);\n return shortHistory.reduce(\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (val, entry: any) => jsonDiffer.applyPatch(val, entry).newDocument,\n ) as TransactionMeta;\n}\n\n/**\n * Clone the transaction meta data without the history property.\n *\n * @param transactionMeta - The transaction metadata to snapshot.\n * @returns A deep clone of transaction metadata without history property.\n */\nfunction snapshotFromTransactionMeta(\n transactionMeta: TransactionMeta,\n): TransactionMeta {\n const snapshot = { ...transactionMeta };\n delete snapshot.history;\n return cloneDeep(snapshot);\n}\n"],"mappings":";AAAA,OAAO,gBAAgB;AACvB,SAAS,WAAW,aAAa;AAe1B,SAAS,0BACd,iBACiB;AACjB,QAAM,WAAW,4BAA4B,eAAe;AAC5D,SAAO,MAAM,CAAC,GAAG,iBAAiB,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3D;AAWO,SAAS,yBACd,iBACA,MACiB;AACjB,MAAI,CAAC,gBAAgB,SAAS;AAC5B,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,4BAA4B,eAAe;AAChE,QAAM,gBAAgB,cAAc,gBAAgB,OAAO;AAC3D,QAAM,eAAe,qBAAqB,eAAe,cAAc,IAAI;AAE3E,MAAI,aAAa,SAAS,GAAG;AAC3B,WAAO,MAAM,CAAC,GAAG,iBAAiB;AAAA,MAChC,SAAS,CAAC,GAAG,gBAAgB,SAAS,YAAY;AAAA,IACpD,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAUA,SAAS,qBAGP,eACA,cACA,MACyB;AACzB,QAAM,yBAAyB,WAAW;AAAA,IACxC;AAAA,IACA;AAAA,EACF;AAEA,MAAI,uBAAuB,CAAC,GAAG;AAC7B,QAAI,MAAM;AACR,6BAAuB,CAAC,EAAE,OAAO;AAAA,IACnC;AACA,2BAAuB,CAAC,EAAE,YAAY,KAAK,IAAI;AAAA,EACjD;AACA,SAAO;AACT;AAQA,SAAS,cACP,oBACiB;AACjB,QAAM,eAAe,UAAU,kBAAkB;AACjD,SAAO,aAAa;AAAA;AAAA;AAAA,IAGlB,CAAC,KAAK,UAAe,WAAW,WAAW,KAAK,KAAK,EAAE;AAAA,EACzD;AACF;AAQA,SAAS,4BACP,iBACiB;AACjB,QAAM,WAAW,EAAE,GAAG,gBAAgB;AACtC,SAAO,SAAS;AAChB,SAAO,UAAU,QAAQ;AAC3B;","names":[]}
|
|
File without changes
|
|
File without changes
|