@zeniai/client-epic-state 4.17.70 → 4.17.71
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/lib/commonPayloadTypes/vendorRecommendationPayload.d.ts +1 -0
- package/lib/commonStateTypes/recommendationBase.d.ts +23 -0
- package/lib/commonStateTypes/recommendationBase.js +5 -4
- package/lib/commonStateTypes/vendorRecommendation.d.ts +1 -0
- package/lib/entity/transaction/payloadTypes/transactionLinePayload.d.ts +3 -0
- package/lib/entity/transaction/payloadTypes/transactionLinePayload.js +3 -0
- package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +18 -0
- package/lib/entity/transaction/payloadTypes/transactionPayload.js +33 -1
- package/lib/entity/transaction/stateTypes/transactionLine.d.ts +7 -0
- package/lib/index.d.ts +2 -2
- package/lib/view/commonVendorView/transactionVendorView/epics/saveTransactionVendorEpic.js +1 -0
- package/lib/view/expenseAutomationView/epics/transactionCategorization/saveTransactionCategorizationEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/updateTransactionCategorizationEpic.js +27 -13
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +5 -3
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +4 -2
- package/lib/view/transactionDetail/epics/saveTransactionDetailEpic.js +2 -3
- package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.js +24 -9
- package/lib/view/transactionDetail/transactionDetailReducer.d.ts +4 -2
- package/lib/view/transactionDetail/transactionDetailReducer.js +2 -1
- package/package.json +1 -1
|
@@ -26,3 +26,26 @@ export declare const getRecommendationAmountRange: (amountValue: number) => {
|
|
|
26
26
|
max?: number;
|
|
27
27
|
};
|
|
28
28
|
export declare const mapRecommendedVendorPayloadToBase: (payload: RecommendedVendorBasePayload) => RecommendedVendorBase;
|
|
29
|
+
/**
|
|
30
|
+
* Interface for tracking COT recommendation types viewed
|
|
31
|
+
*/
|
|
32
|
+
export interface COTRecommendationTracking {
|
|
33
|
+
recommendationTypesViewed: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Interface for tracking COT line item data
|
|
37
|
+
*/
|
|
38
|
+
export interface COTLineItemTracking {
|
|
39
|
+
category: COTRecommendationTracking;
|
|
40
|
+
class: COTRecommendationTracking;
|
|
41
|
+
lineId: ID;
|
|
42
|
+
vendor: COTRecommendationTracking;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Type for COT tracking state (array of line items)
|
|
46
|
+
*/
|
|
47
|
+
export type COTTransactionTracking = COTLineItemTracking[];
|
|
48
|
+
/**
|
|
49
|
+
* Type for COT transaction tracking (Record of transaction ID to line items)
|
|
50
|
+
*/
|
|
51
|
+
export type COTTransactionTrackingByTransactionId = Record<ID, COTLineItemTracking[]>;
|
|
@@ -39,17 +39,18 @@ const getRecommendationAmountRange = (amountValue) => {
|
|
|
39
39
|
};
|
|
40
40
|
exports.getRecommendationAmountRange = getRecommendationAmountRange;
|
|
41
41
|
const mapRecommendedVendorPayloadToBase = (payload) => {
|
|
42
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
42
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
43
43
|
return {
|
|
44
44
|
name: payload.vendor_name,
|
|
45
45
|
thirdPartyMerchantId: (_a = payload.third_party_merchant_id) !== null && _a !== void 0 ? _a : undefined,
|
|
46
46
|
id: (_b = payload.vendor_id) !== null && _b !== void 0 ? _b : undefined,
|
|
47
47
|
qboId: (_c = payload.qbo_id) !== null && _c !== void 0 ? _c : undefined,
|
|
48
48
|
reason: (_d = payload.reason) !== null && _d !== void 0 ? _d : undefined,
|
|
49
|
-
|
|
49
|
+
type: (_e = payload.type) !== null && _e !== void 0 ? _e : undefined,
|
|
50
|
+
recommendationHash: (_f = payload.recommendation_hash) !== null && _f !== void 0 ? _f : undefined,
|
|
50
51
|
vendorNameConfidence: payload.vendor_name_confidence,
|
|
51
|
-
logo: Boolean((
|
|
52
|
-
? (0, zeniUrl_1.toZeniUrlWithoutBaseURL)((
|
|
52
|
+
logo: Boolean((_g = payload.logo) === null || _g === void 0 ? void 0 : _g.url) === true
|
|
53
|
+
? (0, zeniUrl_1.toZeniUrlWithoutBaseURL)((_h = payload.logo) === null || _h === void 0 ? void 0 : _h.url)
|
|
53
54
|
: undefined,
|
|
54
55
|
websiteUrl: payload.website_url != null
|
|
55
56
|
? (0, zeniUrl_1.toZeniUrlWithoutBaseURL)(payload.website_url)
|
|
@@ -49,6 +49,9 @@ export interface TransactionWithAccountAndClassLinePayload extends TransactionLi
|
|
|
49
49
|
is_class_miscategorized?: boolean;
|
|
50
50
|
recipient_amount?: number;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Transaction with account and class line payload with COT tracking
|
|
54
|
+
*/
|
|
52
55
|
export declare const toTransactionWithAccountAndClassLine: (payload: TransactionWithAccountAndClassLinePayload, currency: Currency, type?: LineType) => TransactionWithAccountAndClassLine;
|
|
53
56
|
/**
|
|
54
57
|
* Transaction with product or service line payload
|
|
@@ -25,6 +25,9 @@ const toTransactionLineBase = (payload, lineType, currency) => ({
|
|
|
25
25
|
: undefined,
|
|
26
26
|
});
|
|
27
27
|
const toLinkedTransactionLine = (payload, currency) => (Object.assign(Object.assign({}, toTransactionLineBase(payload, 'linked_transaction_line', currency)), { linkedTransactions: payload.linked_transactions.map((transactionIDPayload) => (0, transactionIDPayload_1.toTransactionID)(transactionIDPayload)) }));
|
|
28
|
+
/**
|
|
29
|
+
* Transaction with account and class line payload with COT tracking
|
|
30
|
+
*/
|
|
28
31
|
const toTransactionWithAccountAndClassLine = (payload, currency, type = 'transaction_with_account_and_class_line') => {
|
|
29
32
|
var _a, _b, _c, _d, _e;
|
|
30
33
|
return (Object.assign(Object.assign({}, toTransactionLineBase(payload, type, currency)), { class: (0, classPayload_1.mapClassBasePayloadToClassBase)((_a = payload.line_detail.class) !== null && _a !== void 0 ? _a : {}), account: (0, accountPayload_1.mapAccountBasePayloadToAccountBase)(payload.line_detail.account), customer: payload.line_detail.customer != null &&
|
|
@@ -39,8 +39,26 @@ export interface TransactionPayload extends TransactionIDPayload, AccountBasePay
|
|
|
39
39
|
vendor_id?: string | null;
|
|
40
40
|
vendor_name?: string | null;
|
|
41
41
|
}
|
|
42
|
+
type LinesWithCOTTracking = LinePayload & {
|
|
43
|
+
cot_viewing_flags?: {
|
|
44
|
+
category: {
|
|
45
|
+
types_viewed: string[];
|
|
46
|
+
};
|
|
47
|
+
class: {
|
|
48
|
+
types_viewed: string[];
|
|
49
|
+
};
|
|
50
|
+
vendor: {
|
|
51
|
+
types_viewed: string[];
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
export interface TransactionPayloadWithCOTTracking extends TransactionPayload {
|
|
56
|
+
lines: LinesWithCOTTracking[];
|
|
57
|
+
}
|
|
42
58
|
export declare const getTransactionPayloadAmount: (payload: TransactionPayload) => Amount;
|
|
43
59
|
export declare const toTransaction: (payload: TransactionPayload) => Transaction;
|
|
44
60
|
export declare const toTransactionPayload: (transaction: Transaction) => Partial<TransactionPayload>;
|
|
61
|
+
export declare const injectCOTFlagsIntoTransactionPayload: (payload: Partial<TransactionPayload>, transaction: Transaction) => Partial<TransactionPayloadWithCOTTracking>;
|
|
45
62
|
export declare const transformRecommendation: (recommendation: RecommendationPayload) => Recommendation[];
|
|
46
63
|
export declare const getRecommendationsPerLine: (lines?: LinePayload[], recommendations?: RecommendationPayload[]) => RecommendationByLineId | undefined;
|
|
64
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRecommendationsPerLine = exports.transformRecommendation = exports.toTransactionPayload = exports.toTransaction = exports.getTransactionPayloadAmount = void 0;
|
|
3
|
+
exports.getRecommendationsPerLine = exports.transformRecommendation = exports.injectCOTFlagsIntoTransactionPayload = exports.toTransactionPayload = exports.toTransaction = exports.getTransactionPayloadAmount = void 0;
|
|
4
4
|
const recommendationPayload_1 = require("../../../commonPayloadTypes/recommendationPayload");
|
|
5
5
|
const urlPayload_1 = require("../../../commonPayloadTypes/urlPayload");
|
|
6
6
|
const amount_1 = require("../../../commonStateTypes/amount");
|
|
@@ -86,6 +86,38 @@ const toTransactionPayload = (transaction) => {
|
|
|
86
86
|
return transactionPayload;
|
|
87
87
|
};
|
|
88
88
|
exports.toTransactionPayload = toTransactionPayload;
|
|
89
|
+
const injectCOTFlagsIntoTransactionPayload = (payload, transaction) => {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
// Traverse payload.lines and inject cot_viewing_flags from corresponding transaction lines
|
|
92
|
+
const linesWithCOTFlags = (_b = (_a = payload.lines) === null || _a === void 0 ? void 0 : _a.map((payloadLine) => {
|
|
93
|
+
var _a, _b, _c, _d;
|
|
94
|
+
// Find the corresponding transaction line
|
|
95
|
+
const transactionLine = (_a = transaction.lines) === null || _a === void 0 ? void 0 : _a.find((line) => line.id === payloadLine.line_id);
|
|
96
|
+
if (transactionLine &&
|
|
97
|
+
'cotViewingFlags' in transactionLine &&
|
|
98
|
+
transactionLine.cotViewingFlags != null) {
|
|
99
|
+
// Type assertion to access COT viewing flags
|
|
100
|
+
const cotFlags = transactionLine
|
|
101
|
+
.cotViewingFlags;
|
|
102
|
+
// Inject COT flags into the payload line
|
|
103
|
+
return Object.assign(Object.assign({}, payloadLine), { cot_viewing_flags: {
|
|
104
|
+
category: {
|
|
105
|
+
types_viewed: (_b = cotFlags === null || cotFlags === void 0 ? void 0 : cotFlags.category.recommendationTypesViewed) !== null && _b !== void 0 ? _b : [],
|
|
106
|
+
},
|
|
107
|
+
class: {
|
|
108
|
+
types_viewed: (_c = cotFlags === null || cotFlags === void 0 ? void 0 : cotFlags.class.recommendationTypesViewed) !== null && _c !== void 0 ? _c : [],
|
|
109
|
+
},
|
|
110
|
+
vendor: {
|
|
111
|
+
types_viewed: (_d = cotFlags === null || cotFlags === void 0 ? void 0 : cotFlags.vendor.recommendationTypesViewed) !== null && _d !== void 0 ? _d : [],
|
|
112
|
+
},
|
|
113
|
+
} });
|
|
114
|
+
}
|
|
115
|
+
// Return original payload line if no COT flags
|
|
116
|
+
return payloadLine;
|
|
117
|
+
})) !== null && _b !== void 0 ? _b : [];
|
|
118
|
+
return Object.assign(Object.assign({}, payload), { lines: linesWithCOTFlags });
|
|
119
|
+
};
|
|
120
|
+
exports.injectCOTFlagsIntoTransactionPayload = injectCOTFlagsIntoTransactionPayload;
|
|
89
121
|
const transformRecommendation = (recommendation) => {
|
|
90
122
|
var _a, _b, _c, _d;
|
|
91
123
|
const accounts = recommendation.accounts;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Amount } from '../../../commonStateTypes/amount';
|
|
2
2
|
import { ID } from '../../../commonStateTypes/common';
|
|
3
|
+
import { COTLineItemTracking } from '../../../commonStateTypes/recommendationBase';
|
|
3
4
|
import { AccountBase } from '../../account/accountState';
|
|
4
5
|
import { ClassBase } from '../../class/classState';
|
|
5
6
|
import { CustomerBase } from '../../customer/customerState';
|
|
@@ -40,6 +41,9 @@ export interface TransactionWithAccountAndClassLine extends TransactionLineBase
|
|
|
40
41
|
customer?: CustomerBase;
|
|
41
42
|
vendor?: VendorBase;
|
|
42
43
|
}
|
|
44
|
+
export interface TransactionWithAccountAndClassLineWithCOTTracking extends TransactionWithAccountAndClassLine {
|
|
45
|
+
cotViewingFlags?: COTLineItemTracking;
|
|
46
|
+
}
|
|
43
47
|
export interface TransactionWithProductOrServiceLine extends TransactionWithAccountAndClassLine {
|
|
44
48
|
item: ProductOrService;
|
|
45
49
|
lineDetailType: PlatformLineDetailType;
|
|
@@ -53,6 +57,9 @@ export interface TransactionInfoLine extends TransactionLineBase {
|
|
|
53
57
|
lineDetailType: PlatformLineDetailType;
|
|
54
58
|
}
|
|
55
59
|
export type Line = TransactionWithProductOrServiceLine | JournalEntryTransactionLine | TransactionWithAccountAndClassLine | TransactionInfoLine | LinkedTransactionLine | TransactionLineBase;
|
|
60
|
+
export type LineWithCOTTracking = Line & {
|
|
61
|
+
cotViewingFlags?: COTLineItemTracking;
|
|
62
|
+
};
|
|
56
63
|
export type LineType = 'linked_transaction_line' | 'transaction_with_account_and_class_line' | 'transaction_with_product_or_service_line' | 'journal_entry_transaction_line' | 'transaction_info_line' | 'transaction_line_base';
|
|
57
64
|
export default Line;
|
|
58
65
|
export interface ProductOrService {
|
package/lib/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ import { getActualPeriodOfFY, getActualPeriodOfFYQtr } from './commonStateTypes/
|
|
|
23
23
|
import { getFYMonths } from './commonStateTypes/fiscalYearHelpers/getFYMonths';
|
|
24
24
|
import { getFYQuarterAndYear, getLastMonthOfFYQuarter, getLastMonthOfFYYear } from './commonStateTypes/fiscalYearHelpers/getFYQuarterAndYear';
|
|
25
25
|
import { getStartOfAndEndOfTimeframeForFY } from './commonStateTypes/fiscalYearHelpers/getStartOfAndEndOfTimeframeFY';
|
|
26
|
-
import { Recommendation, RecommendationWithCOT, TransactionLineRecommendationFieldTypes } from './commonStateTypes/recommendationBase';
|
|
26
|
+
import { COTLineItemTracking, COTRecommendationTracking, COTTransactionTracking, COTTransactionTrackingByTransactionId, Recommendation, RecommendationWithCOT, TransactionLineRecommendationFieldTypes } from './commonStateTypes/recommendationBase';
|
|
27
27
|
import { isAllFetchCompleted, isAnyFetchInProgress, reduceAllFetchState, reduceAnyCompletedFetchState, reduceAnyFetchState, reduceFetchState } from './commonStateTypes/reduceFetchState';
|
|
28
28
|
import { toReimbursementTypeCode } from './commonStateTypes/reimbursementTypeCode';
|
|
29
29
|
import { ClassesViewSelectorReportV2 } from './commonStateTypes/selectorTypes/classesViewSelectorReport';
|
|
@@ -774,7 +774,7 @@ export { openSnackbar, closeSnackbar, getSnackbar, SnackbarMessageType, Snackbar
|
|
|
774
774
|
export { getSpendManagementEffectiveListPeriod, getSelectedCompanyOfficer, showBillPayPromoPage, showReimbursementPromoPage, getActualPaymentDate, isVerifiedStatusCode, isBulkProcessing, getBillListUniqueType, getRemiListUniqueType, BulkOperationType, BulkOperationFinishedType, getBulkOperationSuffix, ZeniAccountsPromoConfig, toAccountsPromoConfig, isPaymentMethodOutsideZeni, isAwaitingMarkAsPaid, checkIfLowBalance, };
|
|
775
775
|
export { FilterCategoryValueType, canSendMonthEndEmailReport, shouldEnableCalendarPickerForLastReportSent, };
|
|
776
776
|
export { BillPayConfig, BillPaymentConfigCodeType, BillPaymentSubConfigCodeType, getInternationalSubConfigCodeKey, InternationalSubConfigCodeType, BILL_NEW_PAYMENT_METHODS, NEW_INTERNATIONAL_METHOD_SUBTEXT, SWIFT_OUR_INTERNATIONAL_METHOD_SUBTEXT, LOCAL_CURRENCY_INTERNATIONAL_METHOD_SUBTEXT, AccountTypeSubConfigCodeKeyType, };
|
|
777
|
-
export { Recommendation, TransactionLineRecommendationFieldTypes, RecommendationWithCOT, };
|
|
777
|
+
export { Recommendation, TransactionLineRecommendationFieldTypes, RecommendationWithCOT, COTLineItemTracking, COTRecommendationTracking, COTTransactionTrackingByTransactionId, COTTransactionTracking, };
|
|
778
778
|
export { Filing1099TinType };
|
|
779
779
|
export { BillPayCardReport };
|
|
780
780
|
export { ReimbursementCardReport };
|
|
@@ -108,6 +108,7 @@ const saveTransactionVendorEpic = (actions$, state$, zeniAPI) => actions$.pipe((
|
|
|
108
108
|
actions.push((0, transactionDetailReducer_1.saveTransactionDetail)({
|
|
109
109
|
transactionId: action.payload.transactionId,
|
|
110
110
|
isExpenseAutomationEnabled: action.payload.isExpenseAutomationEnabled,
|
|
111
|
+
cotTransactionTracking: [], // We don't need to pass COT tracking for vendor save
|
|
111
112
|
}));
|
|
112
113
|
}
|
|
113
114
|
return (0, rxjs_1.from)(actions);
|
|
@@ -12,7 +12,7 @@ const accountListSelector_1 = require("../../../accountList/accountListSelector"
|
|
|
12
12
|
const saveTransactionHelper_1 = require("../../helpers/saveTransactionHelper");
|
|
13
13
|
const transactionsViewReducer_1 = require("../../reducers/transactionsViewReducer");
|
|
14
14
|
const saveTransactionCategorizationEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.saveTransactionCategorization.match), (0, operators_1.mergeMap)((action) => {
|
|
15
|
-
const { transactionIds, selectedTab } = action.payload;
|
|
15
|
+
const { transactionIds, cotTrackingByTransactionId, selectedTab } = action.payload;
|
|
16
16
|
const fetchActions = [];
|
|
17
17
|
const { transactionState, expenseAutomationTransactionsViewState } = state$.value;
|
|
18
18
|
const transactionSaveUpdates = [];
|
|
@@ -25,7 +25,7 @@ const saveTransactionCategorizationEpic = (actions$, state$) => actions$.pipe((0
|
|
|
25
25
|
transactionSaveUpdates.push((0, saveTransactionHelper_1.toTransactionUpdatesFromTransactionCategorizationLocalData)(localData, transaction, uncategorizedIncomeExpense));
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
|
-
fetchActions.push((0, transactionsViewReducer_1.updateTransactionCategorization)(selectedTab, transactionIds, transactionSaveUpdates));
|
|
28
|
+
fetchActions.push((0, transactionsViewReducer_1.updateTransactionCategorization)(selectedTab, transactionIds, transactionSaveUpdates, cotTrackingByTransactionId));
|
|
29
29
|
return (0, rxjs_1.from)(fetchActions);
|
|
30
30
|
}));
|
|
31
31
|
exports.saveTransactionCategorizationEpic = saveTransactionCategorizationEpic;
|
|
@@ -21,9 +21,9 @@ const vendorSelector_1 = require("../../../../entity/vendor/vendorSelector");
|
|
|
21
21
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
22
22
|
const transactionsViewReducer_1 = require("../../reducers/transactionsViewReducer");
|
|
23
23
|
const updateTransactionCategorizationEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.updateTransactionCategorization.match), (0, operators_1.mergeMap)((action) => {
|
|
24
|
-
const { selectedTab } = action.payload;
|
|
24
|
+
const { selectedTab, transactionIds, transactionSaveUpdates, cotTrackingByTransactionId, } = action.payload;
|
|
25
25
|
const { transactionState, vendorState, expenseAutomationTransactionsViewState, } = state$.value;
|
|
26
|
-
const payloadArray = preparePayload(selectedTab, transactionState, vendorState, expenseAutomationTransactionsViewState,
|
|
26
|
+
const payloadArray = preparePayload(selectedTab, transactionState, vendorState, expenseAutomationTransactionsViewState, transactionIds, transactionSaveUpdates, cotTrackingByTransactionId).filter((payload) => payload != null);
|
|
27
27
|
return zeniAPI
|
|
28
28
|
.putAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions/categorize`, { transactions: payloadArray })
|
|
29
29
|
.pipe((0, operators_1.mergeMap)((response) => {
|
|
@@ -39,7 +39,7 @@ const updateTransactionCategorizationEpic = (actions$, state$, zeniAPI) => actio
|
|
|
39
39
|
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, transactionsViewReducer_1.updateTransactionCategorizationSaveStatus)(selectedTab, 'Error', (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', `REST API call errored out ${JSON.stringify(error)}`)))));
|
|
40
40
|
}));
|
|
41
41
|
exports.updateTransactionCategorizationEpic = updateTransactionCategorizationEpic;
|
|
42
|
-
function prepareTransactionPayload(selectedTab, transactionState, vendorState, transactionsViewState, transactionId, saveUpdates) {
|
|
42
|
+
function prepareTransactionPayload(selectedTab, transactionState, vendorState, transactionsViewState, transactionId, saveUpdates, cotTrackingByTransactionId) {
|
|
43
43
|
var _a, _b, _c;
|
|
44
44
|
const detail = (0, transactionSelector_1.getSupportedTransactionById)(transactionState, transactionId);
|
|
45
45
|
const tranDetail = (0, get_1.default)(transactionsViewState.transactionCategorizationView[selectedTab]
|
|
@@ -81,7 +81,7 @@ function prepareTransactionPayload(selectedTab, transactionState, vendorState, t
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
if (detail != null) {
|
|
84
|
-
const transUpdates = toTransactionUpdatePayload(saveUpdates.updates, detail, vendorUpdates, customerUpdates, tranSelectedEntity);
|
|
84
|
+
const transUpdates = toTransactionUpdatePayload(saveUpdates.updates, detail, transactionId, cotTrackingByTransactionId, vendorUpdates, customerUpdates, tranSelectedEntity);
|
|
85
85
|
const entityUpdates = toEntityUpdatePayload(saveUpdates.entityRelatedUpdates);
|
|
86
86
|
return {
|
|
87
87
|
entity_related_updates: entityUpdates,
|
|
@@ -92,12 +92,12 @@ function prepareTransactionPayload(selectedTab, transactionState, vendorState, t
|
|
|
92
92
|
}
|
|
93
93
|
return undefined;
|
|
94
94
|
}
|
|
95
|
-
function preparePayload(selectedTab, transactionState, vendorState, transactionsViewState, transactionIds, saveUpdates) {
|
|
95
|
+
function preparePayload(selectedTab, transactionState, vendorState, transactionsViewState, transactionIds, saveUpdates, cotTrackingByTransactionId) {
|
|
96
96
|
const payload = [];
|
|
97
97
|
transactionIds.forEach((transactionId) => {
|
|
98
98
|
const saveUpdate = saveUpdates.find((update) => update.transactionId === transactionId);
|
|
99
99
|
if (saveUpdate != null) {
|
|
100
|
-
const transactionPayload = prepareTransactionPayload(selectedTab, transactionState, vendorState, transactionsViewState, transactionId, saveUpdate);
|
|
100
|
+
const transactionPayload = prepareTransactionPayload(selectedTab, transactionState, vendorState, transactionsViewState, transactionId, saveUpdate, cotTrackingByTransactionId);
|
|
101
101
|
if (transactionPayload != null) {
|
|
102
102
|
payload.push(transactionPayload);
|
|
103
103
|
}
|
|
@@ -110,7 +110,7 @@ function preparePayload(selectedTab, transactionState, vendorState, transactions
|
|
|
110
110
|
return payload;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
const toTransactionUpdatePayload = (updates, detail, vendorUpdates, customerUpdates, tranSelectedEntity) => {
|
|
113
|
+
const toTransactionUpdatePayload = (updates, detail, transactionId, cotTrackingByTransactionId, vendorUpdates, customerUpdates, tranSelectedEntity) => {
|
|
114
114
|
var _a, _b;
|
|
115
115
|
const transaction = Object.assign({}, detail);
|
|
116
116
|
transaction.memo = (_a = updates.memo) !== null && _a !== void 0 ? _a : '';
|
|
@@ -143,6 +143,17 @@ const toTransactionUpdatePayload = (updates, detail, vendorUpdates, customerUpda
|
|
|
143
143
|
if (lineUpdates.recommendation != null) {
|
|
144
144
|
recommendationUpdates[line.id] = lineUpdates.recommendation;
|
|
145
145
|
}
|
|
146
|
+
// Add COT viewing flags to the line from cotTrackingByTransactionId
|
|
147
|
+
const cotTrackingForTransaction = cotTrackingByTransactionId[transactionId];
|
|
148
|
+
const cotTrackingForLine = cotTrackingForTransaction === null || cotTrackingForTransaction === void 0 ? void 0 : cotTrackingForTransaction.find((item) => item.lineId === line.id);
|
|
149
|
+
if (cotTrackingForLine != null) {
|
|
150
|
+
lineToBeUpdated.cotViewingFlags = {
|
|
151
|
+
vendor: cotTrackingForLine.vendor,
|
|
152
|
+
category: cotTrackingForLine.category,
|
|
153
|
+
class: cotTrackingForLine.class,
|
|
154
|
+
lineId: cotTrackingForLine.lineId,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
146
157
|
return lineToBeUpdated;
|
|
147
158
|
}
|
|
148
159
|
return line;
|
|
@@ -150,24 +161,27 @@ const toTransactionUpdatePayload = (updates, detail, vendorUpdates, customerUpda
|
|
|
150
161
|
transaction.lines = newLineMap;
|
|
151
162
|
}
|
|
152
163
|
transaction.recommendations = recommendationUpdates;
|
|
153
|
-
//
|
|
164
|
+
// Convert transaction to payload first
|
|
165
|
+
let basePayload;
|
|
154
166
|
if ((0, customerTransaction_1.isCustomerTransaction)(transaction)) {
|
|
155
|
-
|
|
167
|
+
basePayload = (0, customerTransactionPayload_1.toCustomerTransactionPayload)(transaction);
|
|
156
168
|
}
|
|
157
169
|
else if ((0, vendorTransaction_1.isVendorTransaction)(transaction)) {
|
|
158
170
|
if (tranSelectedEntity != null && tranSelectedEntity.type === 'customer') {
|
|
159
|
-
|
|
171
|
+
basePayload = (0, vendorTransactionPayload_1.toVendorTransactionWithCustomerPayload)(transaction, customerUpdates);
|
|
160
172
|
}
|
|
161
173
|
else {
|
|
162
|
-
|
|
174
|
+
basePayload = (0, vendorTransactionPayload_1.toVendorTransactionPayload)(transaction, vendorUpdates);
|
|
163
175
|
}
|
|
164
176
|
}
|
|
165
177
|
else if ((0, otherTransaction_1.isTransferTransaction)(transaction)) {
|
|
166
|
-
|
|
178
|
+
basePayload = (0, otherTransactionPayload_1.toTransferTransactionPayload)(transaction);
|
|
167
179
|
}
|
|
168
180
|
else {
|
|
169
|
-
|
|
181
|
+
basePayload = (0, transactionPayload_1.toTransactionPayload)(transaction);
|
|
170
182
|
}
|
|
183
|
+
// Inject COT flags into the payload
|
|
184
|
+
return (0, transactionPayload_1.injectCOTFlagsIntoTransactionPayload)(basePayload, transaction);
|
|
171
185
|
};
|
|
172
186
|
const toEntityUpdatePayload = (entityUpdates) => {
|
|
173
187
|
const entityUpdatesPayload = [];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchState, ID } from '../../../commonStateTypes/common';
|
|
2
|
-
import { RecommendationWithCOT } from '../../../commonStateTypes/recommendationBase';
|
|
2
|
+
import { COTTransactionTrackingByTransactionId, RecommendationWithCOT } from '../../../commonStateTypes/recommendationBase';
|
|
3
3
|
import { MonthYearPeriod, TimePeriod } from '../../../commonStateTypes/timePeriod';
|
|
4
4
|
import { PageToken } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
5
5
|
import { AccountBase } from '../../../entity/account/accountState';
|
|
@@ -49,13 +49,15 @@ export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").
|
|
|
49
49
|
selectedPeriod: MonthYearPeriod;
|
|
50
50
|
selectedTab: TransactionsTab;
|
|
51
51
|
status: ZeniAPIStatus;
|
|
52
|
-
}, "expenseAutomationTransactionsView/fetchTransactionCategorizationFailure">, saveTransactionCategorization: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", transactionIds: string[]], {
|
|
52
|
+
}, "expenseAutomationTransactionsView/fetchTransactionCategorizationFailure">, saveTransactionCategorization: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", transactionIds: string[], cotTrackingByTransactionId: COTTransactionTrackingByTransactionId], {
|
|
53
53
|
selectedTab: "review" | "autoCategorized";
|
|
54
54
|
transactionIds: string[];
|
|
55
|
-
|
|
55
|
+
cotTrackingByTransactionId: COTTransactionTrackingByTransactionId;
|
|
56
|
+
}, "expenseAutomationTransactionsView/saveTransactionCategorization", never, never>, updateTransactionCategorization: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", transactionIds: string[], transactionSaveUpdates: TransactionSaveUpdates[], cotTrackingByTransactionId: COTTransactionTrackingByTransactionId], {
|
|
56
57
|
selectedTab: "review" | "autoCategorized";
|
|
57
58
|
transactionIds: string[];
|
|
58
59
|
transactionSaveUpdates: TransactionSaveUpdates[];
|
|
60
|
+
cotTrackingByTransactionId: COTTransactionTrackingByTransactionId;
|
|
59
61
|
}, "expenseAutomationTransactionsView/updateTransactionCategorization", never, never>, updateCurrentSelectedTransactionCategorizationTab: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newSelectedTab: "review" | "autoCategorized"], {
|
|
60
62
|
newSelectedTab: "review" | "autoCategorized";
|
|
61
63
|
}, "expenseAutomationTransactionsView/updateCurrentSelectedTransactionCategorizationTab", never, never>, updateTransactionCategorizationSaveStatus: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", fetchState: FetchState, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
|
|
@@ -225,11 +225,12 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
225
225
|
}
|
|
226
226
|
},
|
|
227
227
|
saveTransactionCategorization: {
|
|
228
|
-
prepare(selectedTab, transactionIds) {
|
|
228
|
+
prepare(selectedTab, transactionIds, cotTrackingByTransactionId) {
|
|
229
229
|
return {
|
|
230
230
|
payload: {
|
|
231
231
|
selectedTab,
|
|
232
232
|
transactionIds,
|
|
233
|
+
cotTrackingByTransactionId,
|
|
233
234
|
},
|
|
234
235
|
};
|
|
235
236
|
},
|
|
@@ -254,12 +255,13 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
254
255
|
fetchState: 'In-Progress',
|
|
255
256
|
};
|
|
256
257
|
},
|
|
257
|
-
prepare(selectedTab, transactionIds, transactionSaveUpdates) {
|
|
258
|
+
prepare(selectedTab, transactionIds, transactionSaveUpdates, cotTrackingByTransactionId) {
|
|
258
259
|
return {
|
|
259
260
|
payload: {
|
|
260
261
|
selectedTab,
|
|
261
262
|
transactionIds,
|
|
262
263
|
transactionSaveUpdates,
|
|
264
|
+
cotTrackingByTransactionId,
|
|
263
265
|
},
|
|
264
266
|
};
|
|
265
267
|
},
|
|
@@ -12,8 +12,7 @@ const transactionDetailReducer_1 = require("../transactionDetailReducer");
|
|
|
12
12
|
const transactionDetailState_1 = require("../transactionDetailState");
|
|
13
13
|
const saveTransactionHelper_1 = require("./saveTransactionHelper");
|
|
14
14
|
const saveTransactionDetailEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionDetailReducer_1.saveTransactionDetail.match), (0, operators_1.mergeMap)((action) => {
|
|
15
|
-
const transactionId = action.payload
|
|
16
|
-
const isExpenseAutomationEnabled = action.payload.isExpenseAutomationEnabled;
|
|
15
|
+
const { transactionId, cotTransactionTracking, isExpenseAutomationEnabled, } = action.payload;
|
|
17
16
|
const fetchActions = [];
|
|
18
17
|
const transactionDetailState = state$.value.transactionDetailState;
|
|
19
18
|
const transactionState = state$.value.transactionState;
|
|
@@ -23,7 +22,7 @@ const saveTransactionDetailEpic = (actions$, state$) => actions$.pipe((0, operat
|
|
|
23
22
|
if (detail != null && transaction != null) {
|
|
24
23
|
const localData = detail.transactionDetailLocalData;
|
|
25
24
|
const transactionSaveUpdates = (0, saveTransactionHelper_1.toTransactionUpdatesFromTransactionDetailLocalData)(localData, transaction, isExpenseAutomationEnabled);
|
|
26
|
-
fetchActions.push((0, transactionDetailReducer_1.updateTransactionDetail)(transactionId, transactionSaveUpdates, isExpenseAutomationEnabled));
|
|
25
|
+
fetchActions.push((0, transactionDetailReducer_1.updateTransactionDetail)(transactionId, transactionSaveUpdates, isExpenseAutomationEnabled, cotTransactionTracking));
|
|
27
26
|
return (0, rxjs_1.from)(fetchActions);
|
|
28
27
|
}
|
|
29
28
|
return (0, rxjs_1.from)(fetchActions);
|
|
@@ -30,8 +30,9 @@ const transactionDetailState_1 = require("../transactionDetailState");
|
|
|
30
30
|
const saveTransactionHelper_1 = require("./saveTransactionHelper");
|
|
31
31
|
const updateTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionDetailReducer_1.updateTransactionDetail.match), (0, operators_1.mergeMap)((action) => {
|
|
32
32
|
const { transactionState, vendorState, transactionDetailState } = state$.value;
|
|
33
|
+
const { cotTransactionTracking, transactionId, transactionSaveUpdates } = action.payload;
|
|
33
34
|
return zeniAPI
|
|
34
|
-
.putAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/transactions/${action.payload.transactionId.id}/categorize`, preparePayload(transactionState, vendorState, transactionDetailState,
|
|
35
|
+
.putAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/transactions/${action.payload.transactionId.id}/categorize`, preparePayload(transactionState, vendorState, transactionDetailState, transactionId, transactionSaveUpdates, cotTransactionTracking))
|
|
35
36
|
.pipe((0, operators_1.mergeMap)((response) => {
|
|
36
37
|
var _a, _b;
|
|
37
38
|
if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
|
|
@@ -121,7 +122,7 @@ const updateTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe
|
|
|
121
122
|
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, transactionDetailReducer_1.updateTransactionDetailSaveStatus)(action.payload.transactionId, 'Error', (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', `REST API call errored out ${error}`)))));
|
|
122
123
|
}));
|
|
123
124
|
exports.updateTransactionDetailEpic = updateTransactionDetailEpic;
|
|
124
|
-
function preparePayload(transactionState, vendorState, transactionDetailState, transactionId, saveUpdates) {
|
|
125
|
+
function preparePayload(transactionState, vendorState, transactionDetailState, transactionId, saveUpdates, cotTransactionTracking) {
|
|
125
126
|
const transactionDetailKey = (0, transactionDetailState_1.getTransactionDetailKey)(transactionId);
|
|
126
127
|
const detail = (0, transactionSelector_1.getSupportedTransactionById)(transactionState, transactionDetailKey);
|
|
127
128
|
const tranDetail = (0, get_1.default)(transactionDetailState.transactionDetailById, transactionDetailKey, undefined);
|
|
@@ -156,7 +157,7 @@ function preparePayload(transactionState, vendorState, transactionDetailState, t
|
|
|
156
157
|
};
|
|
157
158
|
}
|
|
158
159
|
if (detail != null) {
|
|
159
|
-
const transUpdates = toTransactionUpdatePayload(saveUpdates.updates, detail, vendorUpdates, customerUpdates, currentSelectedEntity);
|
|
160
|
+
const transUpdates = toTransactionUpdatePayload(saveUpdates.updates, detail, cotTransactionTracking, vendorUpdates, customerUpdates, currentSelectedEntity);
|
|
160
161
|
const entityUpdates = toEntityUpdatePayload(saveUpdates.entityRelatedUpdates);
|
|
161
162
|
return {
|
|
162
163
|
entity_related_updates: entityUpdates,
|
|
@@ -166,7 +167,7 @@ function preparePayload(transactionState, vendorState, transactionDetailState, t
|
|
|
166
167
|
}
|
|
167
168
|
return undefined;
|
|
168
169
|
}
|
|
169
|
-
const toTransactionUpdatePayload = (updates, detail, vendorUpdates, customerUpdates, tranSelectedEntity) => {
|
|
170
|
+
const toTransactionUpdatePayload = (updates, detail, cotTransactionTracking, vendorUpdates, customerUpdates, tranSelectedEntity) => {
|
|
170
171
|
var _a, _b;
|
|
171
172
|
const transaction = Object.assign({}, detail);
|
|
172
173
|
transaction.memo = (_a = updates.memo) !== null && _a !== void 0 ? _a : '';
|
|
@@ -199,6 +200,16 @@ const toTransactionUpdatePayload = (updates, detail, vendorUpdates, customerUpda
|
|
|
199
200
|
if (lineUpdates.recommendation != null) {
|
|
200
201
|
recommendationUpdates[line.id] = lineUpdates.recommendation;
|
|
201
202
|
}
|
|
203
|
+
// Add COT viewing flags to the line from cotTransactionTracking
|
|
204
|
+
const cotTrackingForLine = cotTransactionTracking === null || cotTransactionTracking === void 0 ? void 0 : cotTransactionTracking.find((item) => item.lineId === line.id);
|
|
205
|
+
if (cotTrackingForLine) {
|
|
206
|
+
lineTobeUpdated.cotViewingFlags = {
|
|
207
|
+
vendor: cotTrackingForLine.vendor,
|
|
208
|
+
category: cotTrackingForLine.category,
|
|
209
|
+
class: cotTrackingForLine.class,
|
|
210
|
+
lineId: cotTrackingForLine.lineId,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
202
213
|
return lineTobeUpdated;
|
|
203
214
|
}
|
|
204
215
|
return line;
|
|
@@ -206,23 +217,27 @@ const toTransactionUpdatePayload = (updates, detail, vendorUpdates, customerUpda
|
|
|
206
217
|
transaction.lines = newLineMap;
|
|
207
218
|
}
|
|
208
219
|
transaction.recommendations = recommendationUpdates;
|
|
220
|
+
// Convert transaction to payload first
|
|
221
|
+
let basePayload;
|
|
209
222
|
if ((0, customerTransaction_1.isCustomerTransaction)(transaction)) {
|
|
210
|
-
|
|
223
|
+
basePayload = (0, customerTransactionPayload_1.toCustomerTransactionPayload)(transaction);
|
|
211
224
|
}
|
|
212
225
|
else if ((0, vendorTransaction_1.isVendorTransaction)(transaction)) {
|
|
213
226
|
if (tranSelectedEntity != null && tranSelectedEntity.type === 'customer') {
|
|
214
|
-
|
|
227
|
+
basePayload = (0, vendorTransactionPayload_1.toVendorTransactionWithCustomerPayload)(transaction, customerUpdates);
|
|
215
228
|
}
|
|
216
229
|
else {
|
|
217
|
-
|
|
230
|
+
basePayload = (0, vendorTransactionPayload_1.toVendorTransactionPayload)(transaction, vendorUpdates);
|
|
218
231
|
}
|
|
219
232
|
}
|
|
220
233
|
else if ((0, otherTransaction_1.isTransferTransaction)(transaction)) {
|
|
221
|
-
|
|
234
|
+
basePayload = (0, otherTransactionPayload_1.toTransferTransactionPayload)(transaction);
|
|
222
235
|
}
|
|
223
236
|
else {
|
|
224
|
-
|
|
237
|
+
basePayload = (0, transactionPayload_1.toTransactionPayload)(transaction);
|
|
225
238
|
}
|
|
239
|
+
// Inject COT flags into the payload
|
|
240
|
+
return (0, transactionPayload_1.injectCOTFlagsIntoTransactionPayload)(basePayload, transaction);
|
|
226
241
|
};
|
|
227
242
|
const checkIfClassMissingForAnyLineItem = (transactionPayload) => {
|
|
228
243
|
let isAnyClassMissing = false;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchState, ID, UpdateType } from '../../commonStateTypes/common';
|
|
2
|
-
import { Recommendation } from '../../commonStateTypes/recommendationBase';
|
|
2
|
+
import { COTTransactionTracking, Recommendation } from '../../commonStateTypes/recommendationBase';
|
|
3
3
|
import { AccountBase } from '../../entity/account/accountState';
|
|
4
4
|
import { ClassBase } from '../../entity/class/classState';
|
|
5
5
|
import { Entity } from '../../entity/genericEntity/entity';
|
|
@@ -26,10 +26,11 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
|
|
|
26
26
|
payload: SupportedTransactionPayload;
|
|
27
27
|
}, "transactionDetail/uploadMissingAttachmentSuccess", never, {
|
|
28
28
|
updateType: UpdateType;
|
|
29
|
-
}>, updateTransactionDetail: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, transactionSaveUpdates: TransactionSaveUpdates, isExpenseAutomationEnabled: boolean], {
|
|
29
|
+
}>, updateTransactionDetail: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, transactionSaveUpdates: TransactionSaveUpdates, isExpenseAutomationEnabled: boolean, cotTransactionTracking: COTTransactionTracking], {
|
|
30
30
|
transactionId: TransactionID;
|
|
31
31
|
transactionSaveUpdates: TransactionSaveUpdates;
|
|
32
32
|
isExpenseAutomationEnabled: boolean;
|
|
33
|
+
cotTransactionTracking: COTTransactionTracking;
|
|
33
34
|
}, "transactionDetail/updateTransactionDetail", never, never>, updateTransactionDetailSaveStatus: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, fetchState: FetchState, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
|
|
34
35
|
transactionId: TransactionID;
|
|
35
36
|
fetchState: FetchState;
|
|
@@ -60,6 +61,7 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
|
|
|
60
61
|
}, "transactionDetail/updateStatusConsolidatedSaveTransactionDetail">, updateTransactionStateIfUpdateActionNotAllowed: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
61
62
|
transactionId: TransactionID;
|
|
62
63
|
}, "transactionDetail/updateTransactionStateIfUpdateActionNotAllowed">, saveTransactionDetail: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
64
|
+
cotTransactionTracking: COTTransactionTracking;
|
|
63
65
|
isExpenseAutomationEnabled: boolean;
|
|
64
66
|
transactionId: TransactionID;
|
|
65
67
|
}, "transactionDetail/saveTransactionDetail">, initializeTransactionDetailLocalData: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
@@ -97,12 +97,13 @@ const transactionDetail = (0, toolkit_1.createSlice)({
|
|
|
97
97
|
} }) });
|
|
98
98
|
}
|
|
99
99
|
},
|
|
100
|
-
prepare(transactionId, transactionSaveUpdates, isExpenseAutomationEnabled) {
|
|
100
|
+
prepare(transactionId, transactionSaveUpdates, isExpenseAutomationEnabled, cotTransactionTracking) {
|
|
101
101
|
return {
|
|
102
102
|
payload: {
|
|
103
103
|
transactionId,
|
|
104
104
|
transactionSaveUpdates,
|
|
105
105
|
isExpenseAutomationEnabled,
|
|
106
|
+
cotTransactionTracking,
|
|
106
107
|
},
|
|
107
108
|
};
|
|
108
109
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "4.17.
|
|
3
|
+
"version": "4.17.71",
|
|
4
4
|
"description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|